在 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 版权协议,转载请附上原文出处链接和本声明

浙公网安备 33010602011771号