0

リバーシ ゲームのように、プレイヤー 1 がプレイヤー 1 のポーンとプレイヤー 1 の 2 つのポーンの間の対戦相手のすべての足が「X」をオンにする位置プログラム チャックを置いた後、この機能を使用したいと考えています。

これは未完成のコード全体です。

#include<stdio.h>


#define SIZE 7

char board[SIZE][SIZE];
char letter;
int number;

void make_board(char tab[SIZE][SIZE]){
    int w,k;

for(w=0; w < SIZE; w++){

    for(k=0; k < SIZE; k++){
        tab[w][k] = '.';
    }
}

tab[0][0] = 'X';
tab[1][0] = '1';    
tab[2][0] = '2';
tab[3][0] = '3';
tab[4][0] = '4';
    tab[5][0] = '5';
    tab[6][0] = '6';    

tab[0][1] = 'A';    
tab[0][2] = 'B';
tab[0][3] = 'C';
tab[0][4] = 'D';
tab[0][5] = 'E';
tab[0][6] = 'F';

tab[4][4] = 'X';
tab[4][3] = 'O';
tab[3][4] = 'O';
tab[3][3] = 'X';

}

char draw_board(char tab[SIZE][SIZE]){
    int w, k;
    for(w=0; w < SIZE; w++){
        for(k=0; k < SIZE; k++){
            printf("%2c", tab[w][k]);
        }
        printf("\n");
    }   
}

int translate(char letter){
int letter_to_number;
switch(letter){
    case 'A':
    case 'a':
        letter_to_number = 1;
        break;
        
    case 'B':
    case 'b':
        letter_to_number = 2;
        break;
        
    case 'C':
    case 'c':
        letter_to_number = 3;
        break;
        
    case 'D':
    case 'd':
        letter_to_number = 4;   
        break;      
    case 'E':
    case 'e':
        letter_to_number = 5;   
        break;
}
return letter_to_number;
}
int finished(char tab[SIZE][SIZE]){ // looking '.' in array  
  int i,j;
   for(i=1;i<=SIZE;i++){
      for(j=1;j<=SIZE;j++){
        if(tab[i][j]=='.'){
          return 1; 
      }else{
          return 0; // if don't find any '.' game is finish
      }
     }    
   }
}

void hit(char tab[SIZE][SIZE], int player ){
int i,j;

int *poz1, *poz2;   
printf("Call out a letter and a number of a row and column on the grid:\n");
     scanf(" %c %d", &letter, &number);
     i=translate(letter);
     poz1=&tab[number][i];
     if(tab[number][i]=='.'){
        if(player==1){
          *poz1='X';   
           for(poz1-1;*poz1=='X';poz1--){
              poz2=&poz1;}
           poz1=&tab[number][i];
           for(poz2;poz2<=poz1;poz2++){
              *poz2='X';}
        }else{
          *poz1='O';   
           for(poz1-1;*poz1=='O';poz1--){
              poz2=&poz1;}
           poz1=&tab[number][i];
           for(poz2;poz2<=poz1;poz2++){
              poz2='O';}
        }       
     }else{
       printf("On this place already is pawn\n");
     }
     draw_board(board);
     getchar();
}

int main(){
int i,j,k, pg1=0, pg2=0, player=1;
make_board(board);
draw_board(board);

 do{
    if(player==1){
     printf("Player 1\n");
     hit(board, gracz);
     k=finished(board);
     gracz=2;
    }else{
     printf("Player 2\n");
     hit(board, gracz);
     k=finished(board);
     player=1;
   }
 }while(k==1);

   for(i=1;i<=SIZE;i++){
      for(j=1;j<=SIZE;j++){
         if(board[i][j]=='X'){
           pg1++;
         }else{
           pg2++;
         }
     }
  }

  if(pg1>pg2){
    printf("Player 1 wins");
 }else{
   printf("Player 2 wins");
}
return 0;
}
4

1 に答える 1