在 Python 初学者中创建井字游戏

在 Python 初学者中创建井字游戏

我们都有和朋友一起玩井字游戏的有趣回忆,不是吗?这是在任何地方玩的最有趣和最有趣的游戏,您只需要一支笔和一张纸。只需应用一些核心概念,我们就可以使用 python 编程创建这样的井字游戏。我们将像传统方法一样创建一个 3x3 网格。然后我们将要求用户在任何网格上放置“X”,并通过在其余位置放置“O”来做出相应的回应。此外,我们将尝试在程序中输入“O”来创建垂直线、水平线或对角线,因为先做到这一点的人将赢得游戏并显示消息。这里我们将使用的python概念是用户定义的函数、条件语句、循环、列表、变量、范围等。

Tic-Tac-Toe 的 python 代码如下所示:

 板= ['' **为了** X **在** 范围( **10** )]  
  
 **定义** **插入信** (字母,位置):  
 board[pos] = 字母  
  
 **定义** **空间是免费的** (位置):  
    **返回** 板[位置] == ''  
  
 **定义** **印刷板** (木板):  
    **打印** ('||')  
    **打印** (' ' + 板子[ **1** ] + ' | ' + 板[ **2** ] + ' | ' + 板[ **3** ])  
    **打印** ('||')  
    **打印** ('------------')  
    **打印** ('||')  
    **打印** (' ' + 板子[ **4** ] + ' | ' + 板[ **5** ] + ' | ' + 板[ **6** ])  
    **打印** ('||')  
    **打印** ('------------')  
    **打印** ('||')  
    **打印** (' ' + 板子[ **7** ] + ' | ' + 板[ **8** ] + ' | ' + 板[ **9** ])  
    **打印** ('||')  
  
 **定义** **isBoardFull** (木板):  
    **如果** board.count(' ') > **1** :  
        **返回** 错误的  
    **别的** :  
        **返回** 真的  
  
 **定义** **是赢家** (b,l):  
    **返回** (((乙[ **1** ] == l **和** 乙[ **2** ] == l **和** 乙[ **3** ] == l) **或者**  
 (乙[ **4** ] == l **和** 乙[ **5** ] == l **和** 乙[ **6** ] == l) **或者**  
 (乙[ **7** ] == l **和** 乙[ **8** ] == l **和** 乙[ **9** ] == l) **或者**  
 (乙[ **1** ] == l **和** 乙[ **4** ] == l **和** 乙[ **7** ] == l) **或者**  
 (乙[ **2** ] == l **和** 乙[ **5** ] == l **和** 乙[ **8** ] == l) **或者**  
 (乙[ **3** ] == l **和** 乙[ **6** ] == l **和** 乙[ **9** ] == l) **或者**  
 (乙[ **1** ] == l **和** 乙[ **5** ] == l **和** 乙[ **9** ] == l) **或者**  
 (乙[ **3** ] == l **和** 乙[ **5** ] == l **和** 乙[ **7** ] == l))  
  
 **定义** **玩家移动** ():  
 运行=真  
    **尽管** 跑:  
 move = input("请在 1 到 9 之间选择输入 X 的位置")  
        **尝试** :  
 移动 = int(移动)  
            **如果** 移动 > **0** **和** 移动 **10** :  
                **如果** 空间自由(移动):  
 运行 = 假  
 insertLetter('X' , 移动)  
                **别的** :  
                    **打印** ('对不起,这个空间被占用')  
            **别的** :  
                **打印** ('请输入一个介于 1 和 9 之间的数字')  
  
        **除了** :  
            **打印** ('请输入一个数字')  
  
 **定义** **电脑移动** ():  
 可能的移动 = [x **为了** x , 字母 **在** 枚举(板) **如果** 字母 == ' ' **和** x != **0** ]  
 移动 = **0**  
  
    **为了** 让 **在** ['O','X']:  
        **为了** 一世 **在** 可能的动作:  
 boardcopy = board[:]  
 boardcopy[i] = 让  
            **如果** IsWinner(boardcopy, let):  
 移动 = 我  
                **返回** 移动  
  
 角落打开 = []  
    **为了** 一世 **在** 可能的动作:  
        **如果** 一世 **在** [ **1** , **3** , **7** , **9** ]:  
 角打开.append(i)  
  
    **如果** len(cornersOpen) > **0** :  
 move = selectRandom(cornersOpen)  
        **返回** 移动  
  
    **如果** **5** **在** 可能的动作:  
 移动 = **5**  
        **返回** 移动  
  
 边缘打开 = []  
    **为了** 一世 **在** 可能的动作:  
        **如果** 一世 **在** [ **2** , **4** , **6** , **8** ]:  
 edgeOpen.append(i)  
  
    **如果** len(edgesOpen) > **0** :  
 移动 = 选择随机(edgesOpen)  
        **返回** 移动  
  
 **定义** **随机选择** (李):  
    **进口** **随机的**  
 ln = len(li)  
 r = 随机.randrange( **0** ,ln)  
    **返回** 李[r]  
  
 **定义** **主要的** ():  
    **打印** (“欢迎来到游戏!”)  
 印刷板(板)  
  
    **尽管** **不是** (isBoardFull(板)):  
        **如果** **不是** (IsWinner(板,'O')):  
 播放器移动()  
 印刷板(板)  
        **别的** :  
            **打印** (“对不起,你松了!”)  
            **休息**  
  
        **如果** **不是** (IsWinner(板,'X')):  
 移动 = 计算机移动()  
            **如果** 移动== **0** :  
                **打印** ("")  
            **别的** :  
 insertLetter('O' , 移动)  
                **打印** ('计算机放置了一个 o 位置' , move , ':')  
 印刷板(板)  
        **别的** :  
            **打印** (“你赢了!”)  
            **休息**  
  
  
  
    **如果** isBoardFull(板):  
        **打印** (“平局”)  
  
 **尽管** 真的:  
 x = input("你想再玩一次吗?(y/n)")  
    **如果** x.lower() == 'y':  
 板= ['' **为了** X **在** 范围( **10** )]  
        **打印** ('--------------------')  
 主要的()  
    **别的** :  
        **休息**

上述代码的输出是:

o 你想再玩一次吗? (y/n)y

— — — — — — — — — —

欢迎来到游戏!

| |

| |

| |

— — — — — —

| |

| |

| |

— — — — — —

| |

| |

| |

请选择一个位置输入 1 到 9 之间的 X 1

| |

X | |

| |

— — — — — —

| |

| |

| |

— — — — — —

| |

| |

| |

计算机在位置 9 上放置了一个 o:

| |

X | |

| |

— — — — — —

| |

| |

| |

— — — — — —

| |

| | ○

| |

请选择一个位置输入 1 到 9 之间的 X 3

| |

X | | X

| |

— — — — — —

| |

| |

| |

— — — — — —

| |

| | ○

| |

计算机在位置 2 上放置了一个 o:

| |

X | ○ | X

| |

— — — — — —

| |

| |

| |

— — — — — —

| |

| | ○

| |

请选择一个位置以输入 1 到 9 之间的 X 4

| |

X | ○ | X

| |

— — — — — —

| |

X | |

| |

— — — — — —

| |

| | ○

| |

计算机在位置 7 上放置了一个 o:

| |

X | ○ | X

| |

— — — — — —

| |

X | |

| |

— — — — — —

| |

该| | ○

| |

请选择一个位置输入 1 到 9 之间的 X 5

| |

X | ○ | X

| |

— — — — — —

| |

X | X |

| |

— — — — — —

| |

该| | ○

| |

计算机在位置 8 上放置了一个 o:

| |

X | ○ | X

| |

— — — — — —

| |

X | X |

| |

— — — — — —

| |

该|该| ○

| |

对不起,你松了!

谢谢阅读

查看我的其他文章

在 Python 中创建石头剪刀布: https://codersland.medium.com/create-rock-paper-scissors-in-python-c331fe074bbe

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/39270/42492512

posted @ 2022-09-25 12:43  哈哈哈来了啊啊啊  阅读(60)  评论(0编辑  收藏  举报