c中的随机移动井字游戏

random move tic tac toe in c

好吧,我真的不熟悉 C 语言编码,我的代码中有很多复制和粘贴内容。 (这是我的最后一个项目,所以如果时间允许,我真的没有时间优化和缩短到最后)。所以无论如何,出于这个原因,我将避免 posting 我的所有代码。我只会 post 相关的部分,这就是我正在尝试做的。

我需要游戏从 1-9 中随机选择一个数字,然后使用该数字 select 在棋盘上移动。我在这部分代码中添加了一个 printf 以确保选择了一个数字,但是当我转到 scanf 时,游戏只是给出了一个闪烁的提示并且没有继续。

有没有人看出哪里出了问题,或者我需要 post 代码的任何其他部分?任何帮助将不胜感激!我只包括了游戏的 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()scanf() 阻塞直到输入被提供给程序,它 returns 与格式字符串匹配的项目数如果有的话,由输入。

如果您使用 rand() 生成数字,那么您根本不需要任何输入。

请阅读 this,了解 scanf() 的用途。

试试这个

move = rand () % 9;

避免这种情况。