gpt4 book ai didi

c - 如何在 C 中接收 connect-n 的输入

转载 作者:太空宇宙 更新时间:2023-11-04 04:20:32 25 4
gpt4 key购买 nike

在connect-N游戏中,只需要玩家输入一列即可。然而,我对如何让玩家在棋盘上最低的空位移动有点困惑。我获取玩家移动的程序是这样的:

void getMove(char **board, const int numRows, const int numCols, const 
char blankSpace, int *row, int *col) {
int numArgsRead;
const int numArgsNeeded = 1;

do {
printf("Enter a column between 0 and %d to play in: ", numCols - 1);
numArgsRead = scanf("%d", col);

for (int i = numRows - 1; i >= 0; --i) {
if (board[i][*col] != blankSpace) {
continue;
}
else {
*row = i;
}
}
} while(!isMoveValid(numArgsRead, numArgsNeeded, board, numRows, numCols, *row,
*col, blankSpace));
}

注意:isMoveValid 基本上采用所有这些参数,并确定参数是否为整数、(row,col) 是否在棋盘上以及该位置是否为空白。

我从 main 调用 getMove,我希望这个函数将行和列值“返回”到我在 main 中定义的变量 rowPlayed 和 colPlayed。我知道根据用户输入为 col 分配了正确的值,但我不确定为什么 for 循环没有将相应的行索引分配给 *row。有什么建议吗?

编辑:这是我的 main.c

int main(int argc, char* argv[]) {
const char blankSpace = '*';
const int numRows = atoi(argv[1]);
const int numCols = atoi(argv[2]);
const int numToWin = atoi(argv[3]);
const char pieces[] = "XO";
int rowPlayed, colPlayed;
int playerTurn = 1; // 0 is player 1, 1 is player 2

correctNumOfArgs(argc, numRows, numCols, numToWin);

char** board = createBoard(numRows, numCols, blankSpace);

do {
playerTurn = changeTurn(playerTurn);

displayBoard(board, numRows, numCols);

getMove(board, numRows, numCols, blankSpace, &rowPlayed, &colPlayed);

makeMove(board, rowPlayed, colPlayed, pieces[playerTurn]);

} while(!isGameOver(board, numRows, numCols, blankSpace, numToWin, pieces[playerTurn]));

declareOutcome(playerTurn, board, numRows, numCols, blankSpace, numToWin, pieces[playerTurn]);

cleanUp(&board, numRows, numCols);

return 0;
}

最佳答案

据我所知,正确的行索引在 *row = i; 中分配得很好,但您必须在分配后打破循环,否则第一个分配将被覆盖。

完整循环建议:

for (int i = numRows - 1; i >= 0; --i)
{
if (board[i][*col] == blankSpace)
{
*row = i;
break;
}
}

关于c - 如何在 C 中接收 connect-n 的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47425610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com