Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <string.h>
- char* board[9][9];
- char ch1,ch2;
- int n1,n2;
- char w_pawn='p';
- char w_rook='r';
- char w_knight='n';
- char w_bishop='b';
- char w_queen='q';
- char w_king='k';
- char b_pawn='P';
- char b_rook='R';
- char b_knight='N';
- char b_bishop='B';
- char b_queen='Q';
- char b_king='K';
- char black_block='-';
- char white_block='*';
- int a[4];
- int i1,j2,i2,j3;
- int counter1=0,counter2=0;
- char array1 [1][16];
- char array2 [1][16];
- void initializBoard ();
- int check_pawn_move();
- char *whitelost[16];
- char *blacklost[16];
- void repkace_black_white_blocks(int i1,int j1)
- {
- if ((i1+j1)%2==0)
- {
- board[i1][j1]=&white_block;
- }
- else if ((i1+j1)%2!=0)
- {
- board[i1][j1]=&black_block;
- }
- }
- void chessboard(){
- int i,j;printf(" A B C D E F G H\n");
- printf(" |---------|---------|---------|---------|---------|---------|---------|---------|\n");
- initializBoard ();
- for(i=0;i<8;i++){
- printf("\n%d",i+1);
- for(j=0;j<8;j++){
- if (i!=0&&i!=1&&i!=6&&i!=7){
- if((i+j)%2==0){
- board [i][j]= &white_block ;
- printf(" %c",*board [i][j]);
- }
- else{
- board [i][j]= &black_block ;
- printf(" %c",*board [i][j]);
- }}
- else
- {
- printf(" %c",*board [i][j]);
- }
- }
- printf(" %d",i+1);
- printf("\n\n |---------|---------|---------|---------|---------|---------|---------|---------|\n\n");
- }
- printf("\n A B C D E F G H\n\n\n\n\n\n");
- }
- void initializBoard ()
- {
- board[0][0]=&w_rook;
- board[0][1]=&w_knight;
- board[0][2]=&w_bishop;
- board[0][3]=&w_queen;
- board[0][4]=&w_king;
- board[0][5]=&w_bishop;
- board[0][6]=&w_knight;
- board[0][7]=&w_rook;
- for(int i=0;i<8;i++){
- for(int j=0;j<8;j++){
- if(i==1){
- board[i][j]=&w_pawn;
- }
- }
- }
- board[7][0]=&b_rook;
- board[7][1]=&b_knight;
- board[7][2]=&b_bishop;
- board[7][3]=&b_queen;
- board[7][4]=&b_king;
- board[7][5]=&b_bishop;
- board[7][6]=&b_knight;
- board[7][7]=&b_rook;
- for(int i=0;i<8;i++){
- for(int j=0;j<8;j++){
- if(i==6){
- board[i][j]=&b_pawn;
- }
- }
- }
- }
- void print ()
- {
- printf(" A B C D E F G H\n");
- printf(" |---------|---------|---------|---------|---------|---------|---------|---------|\n");
- for (int i=0;i<8;i++)
- {
- printf("\n%d",i+1);
- for (int j=0;j<8;j++)
- {
- printf(" %c",*board [i][j]);
- }
- printf(" %d",i+1);
- if (i==2){
- printf(" NO. of pieces out of player 1: %d",counter1);
- printf("\n\n |---------|---------|---------|---------|---------|---------|---------|---------| pieces :");
- for (int j =0 ; j < strlen(array1 [ 0 ]); j++) printf("%c ",array1[ 0 ][ j ]);
- printf("\n\n");
- }
- else if (i==3)
- {
- printf(" NO. of pieces out of player 2: %d",counter2);
- printf("\n\n |---------|---------|---------|---------|---------|---------|---------|---------| pieces:");
- for (int j =0 ; j < strlen(array2 [ 0 ]); j++) printf("%c ",array2[ 0 ][ j ]);
- printf("\n\n");
- }
- else
- {
- printf("\n\n |---------|---------|---------|---------|---------|---------|---------|---------|\n\n");
- }
- }
- printf("\n A B C D E F G H\n\n\n\n\n\n");
- }
- void move ( char ch1,int n1,char ch2,int n2)
- {
- switch (ch1)
- {
- case 'A':
- case'a':j2=0; break;
- case 'B':
- case 'b':j2=1;break;
- case 'c':
- case 'C': j2=2; break;
- case 'd':
- case 'D': j2=3; break;
- case 'e':
- case 'E': j2=4; break;
- case 'f':
- case 'F': j2=5; break;
- case 'g':
- case 'G': j2=6; break;
- case 'h':
- case 'H': j2=7; break;
- }
- switch (n1)
- {
- case 1: i1=0; break;
- case 2: i1=1; break;
- case 3: i1=2; break;
- case 4: i1=3; break;
- case 5: i1=4; break;
- case 6: i1=5; break;
- case 7: i1=6; break;
- case 8: i1=7; break;
- }
- switch (ch2)
- {
- case 'A':
- case'a':j3=0; break;
- case 'B':
- case 'b':j3=1;break;
- case 'c':
- case 'C': j3=2; break;
- case 'd':
- case 'D': j3=3; break;
- case 'e':
- case 'E': j3=4; break;
- case 'f':
- case 'F': j3=5; break;
- case 'g':
- case 'G': j3=6; break;
- case 'h':
- case 'H': j3=7; break;
- }
- switch (n2)
- {
- case 1: i2=0; break;
- case 2: i2=1; break;
- case 3: i2=2; break;
- case 4: i2=3; break;
- case 5: i2=4; break;
- case 6: i2=5; break;
- case 7: i2=6; break;
- case 8: i2=7; break;
- }
- a[0]=i1;
- a[1]=j2;
- a[2]=i2;
- a[3]=j3;
- if(board[i1][j2]==&b_pawn)
- {
- char c;
- if ((a[2]==0)&&((board[0][a[3]]==&black_block)||(board[0][a[3]]==&white_block))) //promotion
- {
- printf("promotion to:");
- scanf("%c",&c);
- scanf("%c",&c);
- switch (c)
- {
- case 'Q': board[0][a[3]]=&b_queen; break;
- case 'B': board[0][a[3]]=&b_bishop; break;
- case 'R': board[0][a[3]]=&b_rook; break;
- case 'N': board[0][a[3]]=&b_knight; break;
- case 'K': board[0][a[3]]=&b_king; break;
- }
- repkace_black_white_blocks(i1,j2);
- print();
- }
- else{
- int h=check_pawn_move();
- if (h==1)
- {
- if (board[i2][j3]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn)
- {
- array1[0][counter1]=*board[i2][j3];
- counter1++;
- }
- board[i2][j3]=&b_pawn;
- repkace_black_white_blocks(i1,j2);
- print();
- }
- else if (h==0)
- {
- printf("NOT VALID \n");
- }
- }
- }
- if(board[i1][j2]==&w_pawn){
- char c;
- if ((a[2]==7)&&((board[7][a[3]]==&black_block)||(board[7][a[3]]==&white_block))) //promotion
- {
- printf("promotion to:");
- scanf("%c",&c);
- scanf("%c",&c);
- switch (c)
- {
- case 'q': board[7][a[3]]=&w_queen; break;
- case 'b': board[7][a[3]]=&w_bishop; break;
- case 'r': board[7][a[3]]=&w_rook; break;
- case 'n': board[7][a[3]]=&w_knight; break;
- case 'k': board[7][a[3]]=&w_king; break;
- }
- repkace_black_white_blocks(i1,j2);
- print();
- }
- else{
- int h=check_pawn_move();
- if (h==1)
- {
- if (board[i2][j3]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn)
- {
- array2[0][counter2]=*board[i2][j2];
- counter2++;
- }
- board[i2][j3]=&w_pawn;
- repkace_black_white_blocks(i1,j2);
- print();
- }
- else if (h==0)
- {
- printf("NOT VALID \n");
- }
- }
- }
- if(board[i1][j2]==&w_knight){
- int h=check_knight_move ();
- if (h==1)
- {
- if (board[i2][j3]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn)
- {
- array2[0][counter2]=*board[i2][j3];
- counter2++;
- }
- board[i2][j3]=&w_knight;
- repkace_black_white_blocks(i1,j2);
- print();
- }
- else if (h==0)
- {
- printf("NOT VALID \n");
- }}
- if(board[i1][j2]==&b_knight){
- int h=check_knight_move ();
- if (h==1)
- {
- if (board[i2][j3]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn)
- {
- array1[0][counter1]=*board[i2][j3];
- counter1++;
- }
- board[i2][j3]=&b_knight;
- repkace_black_white_blocks(i1,j2);
- print();
- }
- else if (h==0)
- {
- printf("NOT VALID \n");
- }}
- if(board[i1][j2]==&w_king){
- int h=check_king_move();
- if (h==1)
- {
- if (board[i2][j3]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn)
- {
- array2[0][counter2]=*board[i2][j3];
- counter2++;
- }
- board[i2][j3]=&w_king;
- repkace_black_white_blocks(i1,j2);
- print();
- }
- else if (h==0)
- {
- printf("NOT VALID \n");
- }}
- if(board[i1][j2]==&b_king){
- int h=check_king_move();
- if (h==1)
- {
- if (board[i2][j3]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn)
- {
- array1[0][counter1]=*board[i2][j3];
- counter1++;
- }
- board[i2][j3]=&b_king;
- repkace_black_white_blocks(i1,j2);
- print();
- }
- else if (h==0)
- {
- printf("NOT VALID \n");
- }}
- if(board[i1][j2]==&b_queen){
- int h=check_queen_move();
- if(h==1){
- if (board[i2][j3]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn)
- {
- array1[0][counter1]=*board[i2][j3];
- counter1++;
- }
- board[i2][j3]=&b_queen;
- repkace_black_white_blocks(i1,j2);
- print();
- }else if (h==0)
- {
- printf("NOT VALID \n");
- }
- }
- if(board[i1][j2]==&w_queen){
- int h=check_queen_move();
- if(h==1){
- if (board[i2][j3]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn)
- {
- array2[0][counter2]=*board[i2][j3];
- counter2++;
- }
- board[i2][j3]=&w_queen;
- repkace_black_white_blocks(i1,j2);
- print();
- }else if (h==0)
- {
- printf("NOT VALID \n");
- }
- }
- if(board[i1][j2]==&b_rook){
- int h=check_rook_move();
- if(h==1){
- if (board[i2][j3]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn)
- {
- array1[0][counter1]=*board[i2][j3];
- counter1++;
- }
- board[i2][j3]=&b_rook;
- repkace_black_white_blocks(i1,j2);
- print();
- }else if (h==0)
- {
- printf("NOT VALID \n");
- }
- }
- if(board[i1][j2]==&w_rook){
- int h=check_rook_move();
- if(h==1){
- if (board[i2][j3]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn)
- {
- array2[0][counter2]=*board[i2][j3];
- counter2++;
- }
- board[i2][j3]=&w_rook;
- repkace_black_white_blocks(i1,j2);
- print();
- }else if (h==0)
- {
- printf("NOT VALID \n");
- }
- }
- if(board[i1][j2]==&b_bishop){
- int h=check_bishop_move();
- if(h==1){
- if (board[i2][j3]==&w_pawn||board [a[2]][a[3]]==&w_bishop||board [a[2]][a[3]]==&w_queen||board [a[2]][a[3]]==&w_rook||board [a[2]][a[3]]==&w_knight||board [a[2]][a[3]]==&w_pawn)
- {
- array1[0][counter1]=*board[i2][j3];
- counter1++;
- }
- board[i2][j3]=&b_bishop;
- repkace_black_white_blocks(i1,j1);
- print();
- }else if (h==0)
- {
- printf("NOT VALID \n");
- }
- }
- if(board[i1][j2]==&w_bishop){
- int h=check_bishop_move();
- if(h==1){
- if (board[i2][j3]==&b_pawn||board [a[2]][a[3]]==&b_bishop||board [a[2]][a[3]]==&b_queen||board [a[2]][a[3]]==&b_rook||board [a[2]][a[3]]==&b_knight||board [a[2]][a[3]]==&b_pawn)
- {
- array2[0][counter2]=*board[i2][j3];
- counter2++;
- }
- board[i2][j3]=&w_bishop;
- repkace_black_white_blocks(i1,j2);
- print();
- }else if (h==0)
- {
- printf("NOT VALID \n");
- }
- }
- }
- int check_pawn_move(){
- int get;
- if(board[a[0]][a[1]]==&w_pawn){
- if(a[0]==1&&a[3]==a[1]){
- if((a[2]==2||a[2]==3)&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_king&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_bishop){
- get=1;
- }
- else{
- get=0;
- }
- }
- else{
- if (a[2]==a[0]+1&&(a[3]==a[1]+1||a[3]==a[1]-1)){
- if (board[a[2]][a[3]]==&b_pawn||board[a[2]][a[3]]==&b_rook||board[a[2]][a[3]]==&b_knight||board[a[2]][a[3]]==&b_bishop||board[a[2]][a[3]]==&b_queen)
- {
- get=1;
- }else
- {
- get=0;
- }
- }else if((a[0]==a[2]-1)&&a[3]==a[1])
- {
- if (board[a[2]][a[3]]== &black_block||board[a[2]][a[3]]== &white_block)
- {
- get=1;
- }
- else
- {
- get=0;
- }
- }else
- {
- get=0;
- }
- }
- }
- if(board[a[0]][a[1]]==&b_pawn){
- if(a[0]==6&&a[3]==a[1]&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_bishop){
- if(a[2]==5||a[2]==4){
- get=1;
- }
- else{
- get=0;
- }}
- else{
- if(a[2]==a[0]-1&&(a[3]==a[1]+1||a[3]==a[1]-1)){
- if (board[a[2]][a[3]]==&w_pawn||board[a[2]][a[3]]==&w_rook||board[a[2]][a[3]]==&w_knight||board[a[2]][a[3]]==&w_bishop||board[a[2]][a[3]]==&w_queen)
- {
- get=1;
- }
- else
- {
- get=0;
- }
- }else if ((a[0]==a[2]+1)&&a[3]==a[1])
- {
- if (board[a[2]][a[3]]== &black_block||board[a[2]][a[3]]== &white_block)
- {
- get=1;
- }
- else
- {
- get=0;
- }
- }else
- {
- get=0;
- }
- }
- }
- return get;
- }
- int check_king_move()
- {
- int get;
- if(board[a[0]][a[1]]==&w_king)
- {
- if ((a[2]==a[0]||a[2]==a[0]+1||a[2]==a[0]-1)&&(a[1]==a[3]||a[1]==a[3]+1||a[1]==a[3]-1))
- {
- if (board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight)
- {
- get =1;
- }
- else
- {
- get=0;
- }
- }else
- {
- get=0;
- }
- }
- if(board[a[0]][a[1]]==&b_king)
- {
- if ((a[2]==a[0]||a[2]==a[0]+1||a[2]==a[0]-1)&&(a[1]==a[3]||a[1]==a[3]+1||a[1]==a[3]-1))
- {
- if (board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight)
- {
- get =1;
- }
- else
- {
- get=0;
- }
- }
- else
- {
- get=0;
- }
- }
- return get;
- }
- int check_knight_move()
- {int get;
- if(board[a[0]][a[1]]==&w_knight)
- {
- if (((a[2]==a[0]-1||a[2]==a[0]+1)&&(a[3]==a[1]-2||a[3]==a[1]+2))||((a[2]==a[0]-2||a[2]==a[0]+2)&&(a[3]==a[1]-1||a[3]==a[1]+1)))
- {
- if (board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight)
- {
- get=1;
- }else
- {
- get=0;
- }
- }else
- {
- get=0;
- }
- }
- if(board[a[0]][a[1]]==&b_knight)
- {
- if (((a[2]==a[0]-1||a[2]==a[0]+1)&&(a[3]==a[1]-2||a[3]==a[1]+2))||((a[2]==a[0]-2||a[2]==a[0]+2)&&(a[3]==a[1]-1||a[3]==a[1]+1)))
- {
- if (board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight)
- {
- get=1;
- }else
- {
- get=0;
- }
- }else
- {
- get=0;
- }
- }
- return get;
- }
- int check_queen_move(){
- int check;
- int k=0;
- int get=0;
- if(board[a[0]][a[1]]==&b_queen){
- if(a[1]==a[3]&&a[0]>a[2]){ /*for straight moves*/
- for (int i=1;i<=(fabs(a[2]-a[0]));i++)
- {
- if (board[a[0]-i][a[3]]==&black_block||board[a[0]-i][a[3]]==&white_block)
- {
- check=1;
- if (i==(fabs(a[2]-a[0])-1))
- {
- break;
- }
- }
- else
- {
- check=0;
- break;
- }
- }
- if (check==1){
- if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
- get=1;
- }else {
- get=0;}
- }else
- {
- get=0;
- }
- return get;
- }
- if(a[1]==a[3]&&a[0]<a[2]){ /*for straight moves*/
- for (int i=1;i<=(fabs(a[2]-a[0]));i++)
- {
- if (board[a[0]+i][a[3]]==&black_block||board[a[0]+i][a[3]]==&white_block)
- {
- check=1;
- if (i==(fabs(a[2]-a[0])-1))
- {
- break;
- }
- }
- else
- {
- check=0;
- break;
- }
- }
- if (check==1){
- if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
- get=1;
- }else {
- get=0;}
- }else
- {
- get=0;
- }
- return get;
- }
- if(a[0]==a[2]&&a[1]<a[3]){ /*for horizontal moves*/
- for (int i=1;i<=(fabs(a[1]-a[3]));i++)
- {
- if (board[a[0]][a[1]+i]==&black_block||board[a[0]][a[1]+i]==&white_block)
- {
- check=1;
- if (i==(fabs(a[1]-a[3])-1))
- {
- break;
- }
- }
- else
- {
- check=0;
- break;
- }
- }
- if (check==1){
- if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
- get=1;
- }else {
- get=0;}
- }else
- {
- get=0;
- }
- return get;
- }
- if(a[0]==a[2]&&a[1]>a[3]){ /*for horizontal moves*/
- for (int i=1;i<=(fabs(a[1]-a[3]));i++)
- {
- if (board[a[0]][a[1]-i]==&black_block||board[a[0]][a[1]-i]==&white_block)
- {
- check=1;
- if (i==(fabs(a[1]-a[3])-1))
- {
- break;
- }
- }
- else
- {
- check=0;
- break;
- }
- }
- if (check==1){
- if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
- get=1;
- }else {
- get=0;}
- }else
- {
- get=0;
- }
- return get;
- }
- if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
- get=1;
- }else {
- get=0;}
- return get;
- /*for RIGHT diagonal move*/
- if(a[3]<a[1]){{if(a[3]==a[1]-fabs(a[0]-a[2])){
- board[a[2]][a[3]]=&b_queen;
- get=1;
- }else {
- get=0;}
- return get;
- }
- }/*for left diagonal move*/
- if(a[3]>a[1]){if(a[3]==fabs(a[0]-a[2])+a[1]){
- board[a[2]][a[3]]=&b_queen;
- get=1;
- }else {
- get=0;}
- return get;
- } }
- if(board[a[0]][a[1]]==&w_queen){
- if(a[1]==a[3]&&a[0]>a[2]){ /*for straight moves*/
- for (int i=1;i<=(fabs(a[2]-a[0]));i++)
- {
- if (board[a[0]-i][a[3]]==&black_block||board[a[0]-i][a[3]]==&white_block)
- {
- check=1;
- if (i==(fabs(a[2]-a[0])-1))
- {
- break;
- }
- }
- else
- {
- check=0;
- break;
- }
- }
- if (check==1){
- if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&w_king&&board[a[2]][a[3]]!=&b_king){
- get=1;
- }else {
- get=0;}
- }else
- {
- get=0;
- }
- return get;
- }
- if(a[1]==a[3]&&a[0]<a[2]){ /*for straight moves*/
- for (int i=1;i<=(fabs(a[2]-a[0]));i++)
- {
- if (board[a[0]+i][a[3]]==&black_block||board[a[0]+i][a[3]]==&white_block)
- {
- check=1;
- if (i==(fabs(a[2]-a[0])-1))
- {
- break;
- }
- }
- else
- {
- check=0;
- break;
- }
- }
- if (check==1){
- if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&w_king&&board[a[2]][a[3]]!=&b_king){
- get=1;
- }else {
- get=0;}
- }else
- {
- get=0;
- }
- return get;
- }
- if(a[0]==a[2]&&a[1]<a[3]){ /*for horizontal moves*/
- for (int i=1;i<=(fabs(a[1]-a[3]));i++)
- {
- if (board[a[0]][a[1]+i]==&black_block||board[a[0]][a[1]+i]==&white_block)
- {
- check=1;
- if (i==(fabs(a[1]-a[3])-1))
- {
- break;
- }
- }
- else
- {
- check=0;
- break;
- }
- }
- if (check==1){
- if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
- get=1;
- }else {
- get=0;}
- }else
- {
- get=0;
- }
- return get;
- }
- if(a[0]==a[2]&&a[1]>a[3]){ /*for horizontal moves*/
- for (int i=1;i<=(fabs(a[1]-a[3]));i++)
- {
- if (board[a[0]][a[1]-i]==&black_block||board[a[0]][a[1]-i]==&white_block)
- {
- check=1;
- if (i==(fabs(a[1]-a[3])-1))
- {
- break;
- }
- }
- else
- {
- check=0;
- break;
- }
- }
- if (check==1){
- if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
- get=1;
- }else {
- get=0;}
- }else
- {
- get=0;
- }
- return get;
- }
- if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
- get=1;
- }else {
- get=0;}
- return get;
- if(a[3]>a[1]){if(a[3]==fabs(a[0]-a[2])+a[1]){ /*for RIGHT diagonal move*/
- board[a[2]][a[3]]=&w_queen;
- get=1;
- }else {
- get=0;}
- return get;
- }/*for left diagonal move*/
- if(a[3]<a[1]){if(a[3]==a[1]-fabs(a[0]-a[2])){
- board[a[2]][a[3]]=&w_queen;
- get=1;
- }else {
- get=0;}
- return get;
- }}
- }
- int check_rook_move(){
- int check=0;
- int get;
- if (a[0]==a[2]||a[1]==a[3]){
- if(board[a[0]][a[1]]==&b_rook){
- if(a[1]==a[3]&&a[0]>a[2]){ /*for straight moves*/
- for (int i=1;i<=(fabs(a[2]-a[0]));i++)
- {
- if (board[a[0]-i][a[3]]==&black_block||board[a[0]-i][a[3]]==&white_block)
- {
- check=1;
- if (i==(fabs(a[2]-a[0])-1))
- {
- break;
- }
- }
- else
- {
- check=0;
- break;
- }
- }
- if (check==1){
- if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
- get=1;
- }else {
- get=0;}
- }else
- {
- get=0;
- }
- return get;
- }
- if(a[1]==a[3]&&a[0]<a[2]){ /*for straight moves*/
- for (int i=1;i<=(fabs(a[2]-a[0]));i++)
- {
- if (board[a[0]+i][a[3]]==&black_block||board[a[0]+i][a[3]]==&white_block)
- {
- check=1;
- if (i==(fabs(a[2]-a[0])-1))
- {
- break;
- }
- }
- else
- {
- check=0;
- break;
- }
- }
- if (check==1){
- if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
- get=1;
- }else {
- get=0;}
- }else
- {
- get=0;
- }
- return get;
- }
- if(a[0]==a[2]&&a[1]<a[3]){ /*for horizontal moves*/
- for (int i=1;i<=(fabs(a[1]-a[3]));i++)
- {
- if (board[a[0]][a[1]+i]==&black_block||board[a[0]][a[1]+i]==&white_block)
- {
- check=1;
- if (i==(fabs(a[1]-a[3])-1))
- {
- break;
- }
- }
- else
- {
- check=0;
- break;
- }
- }
- if (check==1){
- if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
- get=1;
- }else {
- get=0;}
- }else
- {
- get=0;
- }
- return get;
- }
- if(a[0]==a[2]&&a[1]>a[3]){ /*for horizontal moves*/
- for (int i=1;i<=(fabs(a[1]-a[3]));i++)
- {
- if (board[a[0]][a[1]-i]==&black_block||board[a[0]][a[1]-i]==&white_block)
- {
- check=1;
- if (i==(fabs(a[1]-a[3])-1))
- {
- break;
- }
- }
- else
- {
- check=0;
- break;
- }
- }
- if (check==1){
- if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
- get=1;
- }else {
- get=0;}
- }else
- {
- get=0;
- }
- return get;
- }
- if(board[a[2]][a[3]]!=&b_bishop&&board[a[2]][a[3]]!=&b_rook&&board[a[2]][a[3]]!=&b_knight&&board[a[2]][a[3]]!=&b_pawn&&board[a[2]][a[3]]!=&b_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
- get=1;
- }else {
- get=0;}
- return get;
- }
- if(board[a[0]][a[1]]==&w_rook){
- if(a[1]==a[3]&&a[0]>a[2]){ /*for straight moves*/
- for (int i=1;i<=(fabs(a[2]-a[0]));i++)
- {
- if (board[a[0]-i][a[3]]==&black_block||board[a[0]-i][a[3]]==&white_block)
- {
- check=1;
- if (i==(fabs(a[2]-a[0])-1))
- {
- break;
- }
- }
- else
- {
- check=0;
- break;
- }
- }
- if (check==1){
- if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&w_king&&board[a[2]][a[3]]!=&b_king){
- get=1;
- }else {
- get=0;}
- }else
- {
- get=0;
- }
- return get;
- }
- if(a[1]==a[3]&&a[0]<a[2]){ /*for straight moves*/
- for (int i=1;i<=(fabs(a[2]-a[0]));i++)
- {
- if (board[a[0]+i][a[3]]==&black_block||board[a[0]+i][a[3]]==&white_block)
- {
- check=1;
- if (i==(fabs(a[2]-a[0])-1))
- {
- break;
- }
- }
- else
- {
- check=0;
- break;
- }
- }
- if (check==1){
- if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&w_king&&board[a[2]][a[3]]!=&b_king){
- get=1;
- }else {
- get=0;}
- }else
- {
- get=0;
- }
- return get;
- }
- if(a[0]==a[2]&&a[1]<a[3]){ /*for horizontal moves*/
- for (int i=1;i<=(fabs(a[1]-a[3]));i++)
- {
- if (board[a[0]][a[1]+i]==&black_block||board[a[0]][a[1]+i]==&white_block)
- {
- check=1;
- if (i==(fabs(a[1]-a[3])-1))
- {
- break;
- }
- }
- else
- {
- check=0;
- break;
- }
- }
- if (check==1){
- if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
- get=1;
- }else {
- get=0;}
- }else
- {
- get=0;
- }
- return get;
- }
- if(a[0]==a[2]&&a[1]>a[3]){ /*for horizontal moves*/
- for (int i=1;i<=(fabs(a[1]-a[3]));i++)
- {
- if (board[a[0]][a[1]-i]==&black_block||board[a[0]][a[1]-i]==&white_block)
- {
- check=1;
- if (i==(fabs(a[1]-a[3])-1))
- {
- break;
- }
- }
- else
- {
- check=0;
- break;
- }
- }
- if (check==1){
- if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
- get=1;
- }else {
- get=0;}
- }else
- {
- get=0;
- }
- return get;
- }
- if(board[a[2]][a[3]]!=&w_bishop&&board[a[2]][a[3]]!=&w_rook&&board[a[2]][a[3]]!=&w_knight&&board[a[2]][a[3]]!=&w_pawn&&board[a[2]][a[3]]!=&w_queen&&board[a[2]][a[3]]!=&b_king&&board[a[2]][a[3]]!=&w_king){
- get=1;
- }else {
- get=0;}
- return get;
- }
- }else
- get =0;
- return get;
- }
- int check_bishop_move(){int get=0;
- if(board[a[0]][a[1]]==&b_bishop){
- /*for RIGHT diagonal move*/
- if(a[3]<a[1]){{if(a[3]==a[1]-fabs(a[0]-a[2])){
- board[a[2]][a[3]]=&b_bishop;
- get=1;
- }else {
- get=0;}
- return get;
- }
- }/*for left diagonal move*/
- if(a[3]>a[1]){if(a[3]==fabs(a[0]-a[2])+a[1]){
- board[a[2]][a[3]]=&b_queen;
- get=1;
- }else {
- get=0;}
- return get;
- }
- }
- if(board[a[0]][a[1]]==&w_bishop){
- /*for RIGHT diagonal move*/
- if(a[3]>a[1]){if(a[3]==fabs(a[0]-a[2])+a[1]){
- board[a[2]][a[3]]=&w_bishop;
- get=1;
- }else {
- get=0;}
- return get;
- }/*for left diagonal move*/
- if(a[3]<a[1]){if(a[3]==a[1]-fabs(a[0]-a[2])){
- board[a[2]][a[3]]=&w_bishop;
- get=1;
- }else {
- get=0;}
- return get;
- }
- }
- }
- int main(){
- char ch1,ch2;
- int n1,n2;
- chessboard();
- for (int i=0;i<100;i++){
- scanf(" %c%d %c%d",&ch1,&n1,&ch2,&n2);
- move(ch1,n1,ch2,n2);}
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement