【发布时间】:2015-04-25 20:57:22
【问题描述】:
好的,所以我对 C 编码非常陌生,而且我的代码中有很多复制和粘贴。 (这是我的最后一个项目,所以如果时间允许,我真的没有时间优化和缩短到最后)。所以无论如何,出于这个原因,我会避免发布我的所有代码。我只会发布我正在尝试做的相关部分。
我需要游戏从 1-9 中选择一个随机数字,然后使用该数字在棋盘上选择一个移动。我在这部分代码中添加了一个 printf 以确保选择了一个数字,但是当我转到 scanf 时,游戏只是给出一个闪烁的提示并且不会继续。
有没有人看到有什么问题或者我需要发布任何其他代码部分?任何帮助将不胜感激!我只包括了游戏的 1 名玩家部分,然后是电脑应该移动的时候。我删除了获胜支票和重新打印的电路板。让我知道你们是否需要查看我只是不想拥有大量代码的其他内容。
if (player == 1)
{
for(k=0;k<9;k++) // 9 moves max.
{
printf("\n\n"); // print board again.
printf(" %c | %c | %c\n", board[0][0], board[0][1], board[0][2]);
printf("---+---+---\n");
printf(" %c | %c | %c\n", board[1][0], board[1][1], board[1][2]);
printf("---+---+---\n");
printf(" %c | %c | %c\n", board[2][0], board[2][1], board[2][2]);
do
{
printf("Player 1, where would you like to move? Enter 1-9\n");
scanf("%d", &move);
if (move == 1)
board[0][0] = '1';
if (move == 2)
board[0][1] = '1';
if (move == 3)
board[0][2] = '1';
if (move == 4)
board[1][0] = '1';
if (move == 5)
board[1][1] = '1';
if (move == 6)
board[1][2] = '1';
if (move == 7)
board[2][0] = '1';
if (move == 8)
board[2][1] = '1';
if (move == 9)
board[2][2] = '1';
}while(move>9 && move <1);
do
{
printf("Computer moves...");
move = rand() % 9 + 1;
printf("%d", move);
scanf("%d", &move);
if (move == 1)
board[0][0] = '2';
if (move == 2)
board[0][1] = '2';
if (move == 3)
board[0][2] = '2';
if (move == 4)
board[1][0] = '2';
if (move == 5)
board[1][1] = '2';
if (move == 6)
board[1][2] = '2';
if (move == 7)
board[2][0] = '2';
if (move == 8)
board[2][1] = '2';
if (move == 9)
board[2][2] = '2';
}while(move>9 && move <1);
}
【问题讨论】:
-
你希望
scanf()做什么? -
扫描电脑选取的随机数?当我用人类部分做这个时,它起作用了。但是当我使用 rand 选择数字时,它看到 scanf 没有?
-
@GabriellaCoronell Afaik(我不知道 c),
scanf请求来自控制台的输入,而不是任何任意来源。 -
注意:对于你的第一步,有 9 个空方格,所以你想要一个从 0 到 8 的随机数。对于你的第二步,2 个方格已经被占用,只有 7 个空方格,所以你想要一个从 0 到 6 的随机数。对于您的第五步,将只剩下 1 个空方格,因此您根本不需要随机数。
标签: c arrays random tic-tac-toe