随意移动tic tac toe in c

时间:2015-04-25 20:57:22

标签: c arrays random tic-tac-toe

好吧,所以我真的很擅长用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);



    }

2 个答案:

答案 0 :(得分:1)

您似乎需要从代码中scanf()重新发送scanf()块,直到输入程序为止,它会返回与格式字符串匹配的项目数(如果有的话),输入

如果您使用rand()生成号码,则根本不需要任何输入。

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

答案 1 :(得分:0)

试试这个

move = rand () % 9;

避免这种情况。