如何修复移动功能
how to repair move function
大家好,我正在尝试构建一个动态的两人井字游戏,但我的移动功能有问题,需要让玩家移动并检查棋盘,如果要求的位置清晰,如果打印清晰棋盘上的棋子,并告诉其他玩家下棋...
#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;
}
你可能需要为char board[row][column]动态分配内存,可能是这样的:
char**board=malloc(col_size);
for (int i=0; i<size; i++)
*(board+i)=malloc(row_size);
因此,您可以用同样的方法检查单元格是否为空;
for (int i=0; i<col_size; i++)
for (int c=0; c<row_size; c++)
if board[i][c]==filled
...
else ...
大家好,我正在尝试构建一个动态的两人井字游戏,但我的移动功能有问题,需要让玩家移动并检查棋盘,如果要求的位置清晰,如果打印清晰棋盘上的棋子,并告诉其他玩家下棋...
#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;
}
你可能需要为char board[row][column]动态分配内存,可能是这样的:
char**board=malloc(col_size);
for (int i=0; i<size; i++)
*(board+i)=malloc(row_size);
因此,您可以用同样的方法检查单元格是否为空;
for (int i=0; i<col_size; i++)
for (int c=0; c<row_size; c++)
if board[i][c]==filled
...
else ...