游戏是人们可以使用的一种娱乐形式。 各种游戏都可以在线、在移动设备、台式电脑等上获得。现在不是创建这些具有挑战性的游戏之一的时候。
使用 Python,我们将制作一个 CLI 井字游戏。 让我们使用 Python 构建一个简单的井字游戏。 它将帮助您创建游戏逻辑并学习如何组织代码。
井字棋
在我们开始编码之前,我想我应该快速总结一下游戏并讨论我的开发计划。
首先,我们将建立Xs总是主动并先行动的假设,给用户行动的机会。
从控制台,将输入 1 到 9 之间的数字。 在一个网格中,每个数字对应一个不同的数字(左上角是 1,右下角是 9)。
一旦用户移动,计算机将自动确定并移动。 我将使用一个调用许多不同例程的主要游戏循环。
这个基于文本的课程的每个标题中可能会指出正在完成哪个功能。
设计电路板
正如我之前指出的,我们将使用网格布局来描述我们的电路板。 我们将在 Python 中创建一个名为 board 的列表来执行此操作,它将以 10 个空值开头。
因为用户只能输入数字 1 到 9,而不是 0 到 8,所以我们有 10 个空值而不是 9。所以,为了简化事情,我们将给列表的第一个条目值“empty text”。
通过这种方式,我们可以使用 1-9 而不是 0-8 来索引列表中的条目。
插入字母()
Letter 和 Pos 将是此函数的两个输入。 它只会将请求的信件放在请求的位置。
spaceIsFree(位置)
简单地说,这个方法会通知我们指定区域是否空闲。 因此,那里已经没有一封信。 Pos,它的唯一参数,将是 1 到 9 之间的整数。
印刷板(板)
该板作为参数发送给此方法,该方法将其显示在控制台上。
是赢家()
根据目前的棋盘,这个函数会告诉我们提供的字母是否中奖。 它有两个参数:le 和 board(字母)。
它必须是“X”或“O”。 只需查看指定的字母是否出现在板上每条潜在的获胜线上。
主()
当我们要开始游戏时,我们会调用这个方法。 它将调用我们程序的许多函数中的每一个,并指导程序应该如何运行。
isBoardFull()
当作为输入给出板时,如果板已满,则此方法将简单地返回 True,否则返回 False。
播放器移动()
在此方法中,我们将请求用户移动并对其进行验证。 如果此举是合法的,这封信将被添加到董事会。 如果没有,我们将继续征求用户的反馈意见。
CompMove()——人工智能
AI 现在将开始。 计算机的移动将受此功能控制。 它将评估董事会并选择最佳行动。
以下是我们将用于执行此操作的算法列表。
- 如果当前步骤无法完成,请继续执行下一个步骤。
- 如果可以,请采取获胜的举措。
- 如果玩家有可能获胜的举动,则在下一回合移动到该位置。
- 选择一个角落并转动它。 如果有多个选项,请随机选择。
- 把自己放在中间。
- 考虑其中一条边。 如果有多个选项,请随机选择。
- 如果无法移动,则游戏以平局结束。
选择随机()
给定一个潜在位置列表,此函数将随机选择要采取的行动。
游戏开始
现在我们已经完成了所有的任务,现在可以开始游戏了。 如果我们只想运行游戏一次,我们需要做的就是调用 main。
但在我们的情况下,我们希望游戏继续运行,直到用户决定不再玩,所以我们将在主线中添加一个小的 while 循环。
完整的代码
这是我们游戏的完整代码,现在已经完成。
输出
结论
欢呼!
您完全从头开始制作的游戏。 这不是我们经常玩的游戏。 但它有助于编写逻辑和维护清晰的代码结构。
编码愉快!
发表评论