在 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  哈哈哈来了啊啊啊  阅读(101)  评论(0)    收藏  举报