好吧,所以我在C編碼方面真的很新,而且我的代碼中有很多複製和粘貼。 (這是我最後的項目,所以如果時間允許的話,我真的沒有時間優化和縮短,直到結束)。無論如何,爲了這個原因,我會避免發佈我的所有代碼。我只會發布我正在嘗試做的相關部分。隨機移動tic tac腳趾在c
我需要遊戲從1-9中挑選一個隨機數字,然後使用該數字來選擇棋盤上的移動。我在代碼的這一部分添加了一個printf來確保一個數字被選中,但是當我去scanf時,遊戲只是閃爍提示並且不會繼續。
有沒有人看到有什麼不對或我需要發佈任何其他代碼段?任何幫助將非常感謝!我只包含了遊戲的一個玩家部分,然後計算機應該移動。我取消了勝利支票和董事會的重新印刷。讓我知道如果你們需要看到其他的東西,我只是不想擁有一大塊代碼。
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'從控制檯請求輸入,而不是任何任意的來源。 – Carcigenicate