挑战编程 程序设计竞赛训练手册-1.6.7 将军(Check_the_Check)
public class problem_Check_The_Check {
public static void main(String[] args) {
char[][] check1 = {
{'.','.','k','.','.','.','.','.'},
{'p','p','p','.','p','p','p','p'},
{'.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','B','.','.'},
{'.','.','.','.','.','.','.','.'},
{'.','.','.','.','.','.','.','.'},
{'P','P','P','P','P','P','P','P'},
{'K','.','.','.','.','.','.','.'},
};
char[][] check = {
{'r','n','b','q','k','.','n','r'},
{'p','p','p','.','.','p','p','p'},
{'.','.','.','.','p','.','.','.'},
{'.','.','.','P','.','.','.','.'},
{'.','b','P','P','.','.','.','.'},
{'.','.','.','.','.','.','.','.'},
{'P','P','.','.','P','P','P','P'},
{'R','N','B','Q','K','B','.','R'},
};
int rK[]=kKPosition(check);
if(judgekChecked(check,rK[0],rK[1])){
System.out.println("black king is in check");
}
if(judgeKChecked(check,rK[2],rK[3])){
System.out.println("white king is in check");
}
}
private static boolean judgeKChecked(char[][] check, int i, int j) {
boolean white = false;
int x ;
if(i-1>=0&&j-1>=0&&check[i-1][j-1]=='p'||i-1>=0&&j-1>=0&&check[i-1][j-1]=='b'||i-1>=0&&j-1>=0&&check[i-1][j-1]=='q'
||i-1>=0&&j+1<8&&check[i-1][j+1]=='p'||i-1>=0&&j+1<8&&check[i-1][j+1]=='b'||i-1>=0&&j+1<8&&check[i-1][j+1]=='q'){
white = true;
}
if((i-2>=0&&j-1>=0&&check[i-2][j-1]=='n')||
(i-2>=0&&j+1<8&&check[i-2][j+1]=='n')||
(i+2<8&&j-1>=0&&check[i+2][j-1]=='n')||
(i+2<8&&j+1<8&&check[i+2][j+1]=='n')||
(i-1>=0&&j-2>=0&&check[i-1][j-2]=='n')||
(i-1>=0&&j+2<8&&check[i-1][j+2]=='n')||
(i+1<8&&j-2>=0&&check[i+1][j-2]=='n')||
(i+1<8&&j+2<8&&check[i+1][j+2]=='n')){
white = true;
}
if(i+1<8&&j+1<8&&check[i+1][j+1]=='k'||
j+1<8&&check[i][j+1]=='k'||
i-1>=0&&j+1<8&&check[i-1][j+1]=='k'||
i-1>=0&&check[i-1][j]=='k'||
i-1>=0&&j-1>=0&&check[i-1][j-1]=='k'||
i+1<8&&j-1>=0&&check[i+1][j-1]=='k'||
i+1<8&&check[i+1][j]=='k'||
j-1>=0&&check[i][j-1]=='k'){
white=true;
}
for(int a=i-1;a>=0;a--){
if(check[a][j]<'a'&&check[a][j]>'.'){
break;
}else{
if(check[a][j]=='r'||check[a][j]=='q'){
white=true;
}
}
}
for(int a=i+1;a<8;a++){
if((check[a][j]<'a'&&check[a][j]>'.')){
break;
}else{
if(check[a][j]=='r'||check[a][j]=='q'){
white=true;
}
}
}
for(int a=j+1;a<8;a++){
if((check[i][a]<'a'&&check[i][a]>'.')){
break;
}else{
if(check[i][a]=='r'||check[i][a]=='q'){
white=true;
}
}
}
for(int a=j-1;a>=0;a--){
if((check[i][a]<'a'&&check[i][a]>'.')){
break;
}else{
if(check[i][a]=='r'||check[i][a]=='q'){
white=true;
}
}
}
for(int a=1;a<((i<j)?i:j);a++){
if((check[i-a][j-a]<'a'&&check[i-a][j-a]>'.')){
break;
}else{
if(check[i-a][j-a]=='b'||check[i-a][j-a]=='q'){
white=true;
}
}
}
for(int a=1;a<=((i<8-j)?i:8-j);a++){
if((i-a>=0&&j+a<8&&check[i-a][j+a]<'a'&&check[i-a][j+a]>'.')){
break;
}else{
if(i-a>=0&&j+a<8&&check[i-a][j+a]=='b'||i-a>=0&&j+a<8&&check[i-a][j+a]=='q'){
white=true;
}
}
}
for(int a=1;a<((8-i<8-j)?8-i:8-j);a++){
if((check[i+a][j-a]<'a'&&check[i+a][j-a]>'.')){
break;
}else{
if(check[i+a][j-a]=='b'||check[i+a][j-a]=='q'){
white=true;
}
}
}
for(int a=1;a<((8-i<j)?8-i:j);a++){
if((i+a<8&&j-a>=0&&check[i+a][j-a]<'a')&&check[i+a][j-a]>'.'){
break;
}else{
if(i+a<8&&j-a>=0&&check[i+a][j-a]=='b'||i+a<8&&j-a>=0&&check[i+a][j-a]=='q'){
white=true;
}
}
}
return white;
}
private static boolean judgekChecked(char[][] check, int i, int j) {
boolean black = false;
int x ;
if(i+1<8&&j-1>=0&&check[i+1][j-1]=='P'||i+1<8&&j-1>=0&&check[i+1][j-1]=='B'||i+1<8&&j-1>=0&&check[i+1][j-1]=='Q'
||i+1<8&&j+1<8&&check[i+1][j+1]=='P'||i+1<8&&j+1<8&&check[i+1][j+1]=='B'||i+1<8&&j+1<8&&check[i+1][j+1]=='Q'){
black = true;
}
if((i-2>=0&&j-1>=0&&check[i-2][j-1]=='N')||
(i-2>=0&&j+1<8&&check[i-2][j+1]=='N')||
(i+2<8&&j-1>=0&&check[i+2][j-1]=='N')||
(i+2<8&&j+1<8&&check[i+2][j+1]=='N')||
(i-1>=0&&j-2>=0&&check[i-1][j-2]=='N')||
(i-1>=0&&j+2<8&&check[i-1][j+2]=='N')||
(i+1<8&&j-2>=0&&check[i+1][j-2]=='N')||
(i+1<8&&j+2<8&&check[i+1][j+2]=='N')){
black = true;
}
if(i+1<8&&j+1<8&&check[i+1][j+1]=='K'||
j+1<8&&check[i][j+1]=='K'||
i-1>=0&&j+1<8&&check[i-1][j+1]=='K'||
i-1>=0&&check[i-1][j]=='K'||
i-1>=0&&j-1>=0&&check[i-1][j-1]=='K'||
i+1<8&&j-1>=0&&check[i+1][j-1]=='K'||
i+1<8&&check[i+1][j]=='K'||
j-1>=0&&check[i][j-1]=='K'){
black=true;
}
for(int a=i-1;a>=0;a--){
if(check[a][j]>'a'){
break;
}else{
if(check[a][j]=='R'||check[a][j]=='Q'){
black=true;
}
}
}
for(int a=i+1;a<8;a++){
if((check[a][j]>'a')){
break;
}else{
if(check[a][j]=='R'||check[a][j]=='Q'){
black=true;
}
}
}
for(int a=j+1;a<8;a++){
if((check[i][a]>'a')){
break;
}else{
if(check[i][a]=='R'||check[i][a]=='Q'){
black=true;
}
}
}
for(int a=j-1;a>=0;a--){
if((check[i][a]>'a')){
break;
}else{
if(check[i][a]=='R'||check[i][a]=='Q'){
black=true;
}
}
}
for(int a=1;a<((i<j)?i:j);a++){
if((check[i-a][j-a]>'a')){
break;
}else{
if(check[i-a][j-a]=='B'||check[i-a][j-a]=='Q'){
black=true;
}
}
}
for(int a=1;a<=((i<8-j)?i:8-j);a++){
if((i-a>=0&&j+a<8&&check[i-a][j+a]>'a')){
break;
}else{
if(i-a>=0&&j+a<8&&check[i-a][j+a]=='B'||i-a>=0&&j+a<8&&check[i-a][j+a]=='Q'){
black=true;
}
}
}
for(int a=1;a<((8-i<8-j)?8-i:8-j);a++){
if((check[i+a][j-a]>'a')){
break;
}else{
if(check[i+a][j-a]=='B'||check[i+a][j-a]=='Q'){
black=true;
}
}
}
for(int a=1;a<((8-i<j)?8-i:j);a++){
if((i+a<8&&j-a>=0&&check[i+a][j-a]>'a')){
break;
}else{
if(i+a<8&&j-a>=0&&check[i+a][j-a]=='B'||i+a<8&&j-a>=0&&check[i+a][j-a]=='Q'){
black=true;
}
}
}
return black;
}
public static int[] kKPosition(char[][] check){
int kingPosition[]=new int[4];
for(int i=0;i<check.length;i++){
for(int j=0;j<check[i].length;j++){
if(check[i][j]=='k'){
kingPosition[0]=i;
kingPosition[1]=j;
}else if(check[i][j]=='K'){
kingPosition[2]=i;
kingPosition[3]=j;
}
}
}
return kingPosition;
}
}
相关知识
立体化课程
2023年汉江师范学院普通专升本《C语言程序设计》考试大纲
大学计算机实验报告范文
畜禽环境实践技能训练手册文档.pdf
计算机经典书籍电子书合集(适合计算机学生学习以及程序员笔试、面试)
javascript dom 编程艺术pdf javascript dom编程艺术pdf下载网盘
2013.10
元编程艺术,第 1 部分: 元编程简介
(优选)课程设计心得体会15篇
【灌溉系统】
网址: 挑战编程 程序设计竞赛训练手册 https://m.huajiangbk.com/newsview153546.html
上一篇: 百合花的花语是什么?百合花的寓意 |
下一篇: 北京冬奥会花滑完整赛程出炉&nb |