【问题标题】:random move tic tac toe in c在c中随机移动井字游戏
【发布时间】: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


【解决方案1】:

您似乎需要从您的代码中重新删除scanf()scanf() 阻塞,直到将输入提供给程序,它会通过输入返回与格式字符串匹配的项目数(如果有)。

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

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

【讨论】:

  • 哇哈哈。如此简单的解决方案,我一直坚持。非常感谢。
【解决方案2】:

试试这个

move = rand () % 9;

为了避免这种情况。

【讨论】:

  • 这似乎是评论而不是答案。请编辑您的问题以提供更好的解释,建议应在评论部分给出答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-18
  • 2015-03-11
  • 1970-01-01
相关资源
最近更新 更多