C++ 井字棋

2024年8月28日 | 阅读 11 分钟

井字游戏是一个简单的双人游戏,如果两位玩家都发挥最佳水平,游戏将始终以平局结束。该游戏也称为“圈叉游戏”或“零和十字”。

井字游戏可以通过计算机或其他设备玩,通常是在纸上画。这个经典游戏为其他游戏(如四子棋)提供了基础。

井字游戏的历史

大约在公元前一世纪,罗马帝国曾玩过一个该游戏的原始版本。名称“terni lapilli”表示一次三个鹅卵石。在罗马遗址中发现了覆盖着游戏白垩网格图案的证据。古埃及遗址中也发现了该游戏的证据。

该游戏的英国名称“noughts and crosses”于 1864 年首次出现在印刷品中。“tick-tack-toe”一词于 1884 年首次出现在文学作品中,但它指的是在石板上玩的儿童游戏。

游戏规则

  • 游戏必须由两名玩家(在此程序中为人与计算机)进行。
  • 两名玩家都用字母“O”和“X”标记他们的单元格。
  • 当其中一名玩家用该玩家的字符(“O”或“X”)填满整行、整列或对角线时,游戏结束。
  • 如果没有人获胜,则比赛视为平局。

程序分解

在这里,我们预定义了一些我们将在游戏中执行的动作。我们将棋盘长度设置为 3,计算机的移动将由“O”表示,人类或用户的移动将由“X”表示。

上述函数即 void showBoard 将演示我们 3X3 棋盘的当前状态,我们已将其初始化为 1 到 9 以表示。

上述函数即 void showInstruction 将演示说明,例如选择一个编号为 1 到 9 的单元格,如下所示并进行游戏。

上述函数即 void initialize 将初始化随机数,以避免出现相同的配置,并且棋盘最初是空的。

此函数即 void declareWinner 将宣布游戏的赢家,无论是计算机赢还是人类赢。

上述函数即 bool rowCrossed 将返回 true 或 false,如果任何一行被玩家的移动穿过。

上述函数即 bool columnCrossed 将返回 true 或 false,如果任何一列被玩家的移动穿过。

上述函数即 bool diagonalCrossed 将返回 true 或 false,如果任何对角线被玩家的移动穿过。

上述函数即 bool gameOver 将返回 true 或 false,如果游戏结束。

上述函数即 void playTictacToe 将是玩井字游戏的主函数。

C++ 中的井字游戏程序

输出

Tic-Tac-Toe

Choose a cell numbered from 1 to 9 as below and play
              1 | 2  | 3  
            - - - - - - - -
              4 | 5  | 6  
            - - - - - - - - 
              7 | 8  | 9  
-    -    -    -    -    -    -    -    -    -
COMPUTER has put a O in cell 6
                |    |    
            - - - - - - - -
                |    | O  
            - - - - - - - -
                |    |    
HUMAN has put a X in cell 7
                |    |    
            - - - - - - - -
                |    | O  
            - - - - - - - -
              X |    |    



COMPUTER has put a O in cell 5
                |    |    
            - - - - - - - -
                | O  | O  
            - - - - - - - -
              X |    |    
HUMAN has put a X in cell 1
              X |    |    
            - - - - - - - -
                | O  | O  
            - - - - - - - -
              X |    |    
COMPUTER has put a O in cell 9
              X |    |    
            - - - - - - - -
                | O  | O  
            - - - - - - - -
              X |    | O  
HUMAN has put a X in cell 8
              X |    |    
            - - - - - - - -
                | O  | O  
            - - - - - - - -
              X | X  | O  

COMPUTER has put a O in cell 4
              X |    |    
            - - - - - - - -
              O | O  | O  
            - - - - - - - -
              X | X  | O  
COMPUTER has won