Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define ROWS 8
- #define COLUMNS 8
- #define PIECES 16
- char nameofpiece;
- char domain[ROWS][COLUMNS];
- int occupied[ROWS][COLUMNS];
- char killed1[PIECES];
- char killed2[PIECES];
- int number_killed1=0;
- int number_killed2=0;
- int turn=1;
- int winner=0,draw=0;
- char letter[8]={'A','B','C','D','E','F','G','H'};
- int number[8]={1,2,3,4,5,6,7,8};
- void set_game(void);
- void print_board(void);
- void blackandwhite(int i,int j);
- void movement(void);
- void move_piece (char a,int i1, int j1,int i2,int j2);
- typedef struct {
- int domain1[ROWS][COLUMNS];
- int domain2[ROWS][COLUMNS];
- char eaten[PIECES*2];}steps;
- void save_step(void);
- int main()
- {
- set_game();
- do
- {
- print_board();
- movement();
- }while(winner==0 && draw==0);
- return 0;
- }
- void movement(void)
- {
- char i1c,j1c,i2c,j2c,promotion;
- int i1,j1,i2,j2;
- AGAIN :
- printf("\n");
- printf("Enter player %d move : ",turn);
- scanf(" %1c%1c%1c%1c",&j1c,&i1c,&j2c,&i2c);
- switch(j1c)
- {
- case 'A' : j1=0; break;
- case 'B' : j1=1; break;
- case 'C' : j1=2; break;
- case 'D' : j1=3; break;
- case 'E' : j1=4; break;
- case 'F' : j1=5; break;
- case 'G' : j1=6; break;
- case 'H' : j1=7; break;
- default : printf("Column intial is wrong! \nplease re-enter your move");
- goto AGAIN; break;
- }
- switch(j2c)
- {
- case 'A' : j2=0; break;
- case 'B' : j2=1; break;
- case 'C' : j2=2; break;
- case 'D' : j2=3; break;
- case 'E' : j2=4; break;
- case 'F' : j2=5; break;
- case 'G' : j2=6; break;
- case 'H' : j2=7; break;
- default : printf("Column final is wrong! \nplease re-enter your move");
- goto AGAIN; break;
- }
- switch(i1c)
- {
- case '8' : i1=0; break;
- case '7' : i1=1; break;
- case '6' : i1=2; break;
- case '5' : i1=3; break;
- case '4' : i1=4; break;
- case '3' : i1=5; break;
- case '2' : i1=6; break;
- case '1' : i1=7; break;
- default : printf("row initial is wrong! \nplease re-enter your move");
- goto AGAIN; break;
- }
- switch(i2c)
- {
- case '8' : i2=0; break;
- case '7' : i2=1; break;
- case '6' : i2=2; break;
- case '5' : i2=3; break;
- case '4' : i2=4; break;
- case '3' : i2=5; break;
- case '2' : i2=6; break;
- case '1' : i2=7; break;
- default : printf("row final is wrong! \nplease re-enter your move");
- goto AGAIN; break;
- }
- if(occupied[i1][j1]==0)
- {
- printf("nothing to move from the initial position.\nplease re-enter your move.");
- goto AGAIN;
- }
- else
- {
- if (turn==1)
- {
- if(islower(domain[i1][j1]))
- goto CONT;
- else
- {
- printf("You can't move the other player's piece.\nplease re-enter your move");
- goto AGAIN;
- }
- }
- if (turn==2)
- {
- if(isupper(domain[i1][j1]))
- goto CONT;
- else
- {
- printf("You can't move the other player's piece.\n please re-enter your move");
- goto AGAIN;
- }
- }
- }
- move_piece(domain[i1][j1],i1,j2,turn);
- CONT :
- if(turn==1)
- turn=2;
- else
- turn=1;
- }
- void set_game(void)
- {
- /*filling the 1st , 2nd , 7th and 8th rows*/
- int i,j;
- for(i=0; i<2; i++)
- {
- for(j=0;j<COLUMNS;j++)
- {
- occupied[i][j]=1;
- }
- }
- for(i=6; i<8; i++)
- {
- for(j=0;j<COLUMNS;j++)
- {
- occupied[i][j]=1;
- }
- }
- /* setting pawns on board*/
- for(j=0; j<COLUMNS; j++)
- {
- domain[1][j]='p';
- domain[6][j]='P';
- }
- /*eltabya*/
- domain[0][0]=domain[0][7]='r';
- domain[7][0]=domain[7][7]='R';
- /*el7osan*/
- domain[0][1]=domain[0][6]='n';
- domain[7][1]=domain[7][6]='N';
- /*elephant*/https://pastebin.com/C1WetAUi
- domain[0][2]=domain[0][5]='b';
- domain[7][2]=domain[7][5]='B';
- /*Queen*/
- domain[0][3]='q';
- domain[7][3]='Q';
- /*king*/
- domain[0][4]='k';
- domain[7][4]='K';
- for(i=2; i<6;i++)
- {
- for(j=0;j<COLUMNS;j++)
- {
- occupied[i][j]=0;
- if((i+j)%2==0)
- {
- domain[i][j]='.';
- }else{
- domain[i][j]='-';
- }
- }
- }
- }
- void print_board(void)
- {
- int i,j,k,c;
- c=0;
- int n=33;
- printf(" ");
- for(k=0; k<8;k++)
- printf(" %c",letter[k]);
- printf("\n");
- printf(" ");
- for(k=0; k<n;k++){
- printf("-");
- if(k==n-1)
- printf("\n");
- }
- for(i=0;i<ROWS;i++)
- {
- for(j=0; j<COLUMNS;j++)
- {
- if(j==0)
- {
- printf(" %d | %c |",number[7-i],domain[i][j]);
- }
- else if (j==7)
- {
- printf(" %c | %d",domain[i][j],number[7-i]);
- }
- else
- {
- printf(" %c |",domain[i][j]);
- }
- if(j==7 && i==4)
- printf(" Killed Player 1 : ");
- while(c<number_killed1)
- {
- printf("%c,",killed1[c]);
- c++;
- if(c==8)
- printf("\n");
- }
- c=0;
- if(j==7 && i==5)
- printf(" Killed Player 2 :");
- while(c<number_killed2)
- {
- printf("%c,",killed2[c]);
- c++;
- if(c==8)
- printf("\n");
- }
- if(j==COLUMNS-1)
- {
- printf("\n");
- printf(" ");
- for(k=0; k<n;k++){
- printf("-");
- if(k==n-1)
- printf("\n");
- }
- }
- }
- }
- printf(" ");
- for(k=0; k<8;k++)
- printf(" %c",letter[k]);
- }
- void blackandwhite(int i,int j)
- {
- if(occupied[i][j]==0)
- {
- if((i+j)%2==0)
- domain[i][j]='-';
- else
- domain[i][j]='.';
- }
- }
- void move_piece(char a,int i1 , int j1,int i2, int j2,int turn){
- if(turn==0){
- if(a=='p'){
- if(i1==1){
- if(i2-i1==1||i2-i1=2&&j1==j2&& occupied[i2][j2]){
- domain[i2][j2]=domain[i1][j1];
- occupied[i1][j1]=0;
- occupied[i2][j2]=1;
- }
- else{
- goto
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement