反向游戏中的C指针

反向游戏中的C指针,c,pointers,reversi,C,Pointers,Reversi,我想在玩家1放置位置程序chack之后,使用这个函数,左边是玩家的1个棋子和玩家的2个棋子之间的所有对手的棋子打开“X”,就像在reversi游戏中一样 这是整个未完成的代码: #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 <

我想在玩家1放置位置程序chack之后,使用这个函数,左边是玩家的1个棋子和玩家的2个棋子之间的所有对手的棋子打开“X”,就像在reversi游戏中一样

这是整个未完成的代码:

#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;
}
#包括
#定义尺寸7
炭板[尺寸][尺寸];
字符字母;
整数;
作废制作板(字符选项卡[大小][大小]){
int w,k;
对于(w=0;w
poz1=&tab[number][i];
如果(制表符[编号][i]=='。){
如果(玩家==1){
*poz1='X';
对于(poz1-1;*poz1=='X';poz1--){
poz2=&poz1;}
poz1=&tab[编号][i];

对于(poz2;poz2
我不知道我在哪里犯了错误
-那么你是说有一个逻辑错误,它没有按照你的预期工作?它做错了什么?你有没有试过调试你的代码?请重新措辞你的第二句话,它是不可理解的。欢迎这样做。不幸的是你的问题不可理解。请更加努力解释你的函数应该做什么,然后你会遇到什么类型的错误。是的,当然,但正如你所说的。它没有像我预期的那样工作。可能是这个逻辑错误。
 if(tab[number][i]=='.'){
    if(player==1){    //considering player 1 is 'X'  
       // Loop to the left till you find opponent's piece or come to edge.
       for(j=i-1;tab[number][j]=='O' && j!=0 ;j--)
           ;
       // Validation check
       if(i-j <=1 || tab[number][j] != 'X');
       //Invalid move
          return 1; 
       else
           // convert all the opponents pieces between two of yours piece
           for(k=i;k>j;k--)
               tab[number][k] = 'X';