Search code examples
cansi-c

how to repair move function


hello guys i am trying to build a dynamic two players tic tac toe game and i have a problem with the move function that need to get the player move and check the board if the reqested spot is clear, if clear print the board with the move and tells the other player to put in the move...

#include <stdio.h>
#include <stdlib.h>

#define SIGN '_'
#define FIRST 'X'
#define SECOND 'O'

void isValid(void);
int turn();
void printMsg();

int main()
{
  printMsg();
  int i, j;//indexs
  int row = 1, column = 1;//first set for the size of the rows\columns.
  char board[row][column];
 do
  {
    scanf("%d", &row);
    column = row;
  }while(row <= 0 || row > 10);

  for(i = 0; i < row; i++)//for loop to build the board for the game

   {

     for(j = 0; j < column; j++)

      {
          board[i][j] = SIGN;
          printf("%c", board[i][j]);

      }

      printf("\n");
  }
  turn();

  return 0;
  }

 void printMsg() //prints openning massage.
 {
   printf("Enter board size (1 to 10): \n");
 }

int turn(int i, int j)
{
  int count = 0;
  int player = 0;
  do
   {
     printf("\nplayer %d, enter next move: \n", count % 2 + 1);
       scanf("%d%*c%d", row, column);
       count++;
     }while(i > 0 && j > 0);
    return player;
 }

Solution

  • You probably need to allocate memory for char board[row][column] dynamically, may be like this:

    char**board=malloc(col_size); 
      for (int i=0; i<size; i++)
            *(board+i)=malloc(row_size);
    

    Hence, you could check in the same way if cell is empty or not;

    for (int i=0; i<col_size; i++)
            for (int c=0; c<row_size; c++)
                 if board[i][c]==filled
                           ...
                 else ...