首页 > 编程语言 >在 Python 初学者中创建井字游戏

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

时间:2022-09-25 12:55:43浏览次数:83  
标签:返回 位置 定义 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

标签:返回,位置,定义,Python,井字,打印,初学者,移动,游戏
From: https://www.cnblogs.com/amboke/p/16727658.html

相关文章

  • 本周回顾-- 计算机基础、python、pycharm、基本数据类型
    1、计算机基础1.1计算机组成部分:1、控制器2、运算器(控制器+运算器=cpu)3、存储器 内存:速度快,断电失效 外寸:硬盘,速度相对慢,永久保存4、输入设备 鼠标,键盘5、输出设......
  • 14.4 Python中的包
     #目录和包的区别   #模块的导入的2种方式 #模块1module_Aa=10 #模块2moduleBb=100#模块3名称:demo55'''使用import方式进行导入时,只能跟......
  • Python安装PIL报错:No module named 'PIL'的解决方法
    在Python中,如果import了PIL,但是本机上并没有安装相应的组件,在运行py程序时会报错:ModuleNotFoundError:Nomodulenamed'PIL'。D:\Python\PY>MYPYAPP.pyTraceback(mos......
  • Python安装win32gui报错:No module named 'win32gui'的解决方法
    在Python中,如果import了win32gui,但是本机上并没有安装响应的组件,在运行py程序时会报错:ModuleNotFoundError:Nomodulenamed'win32gui'。D:\Python\PY>MYPYAPP.pyTrac......
  • Python列表、元组、字典、集合区别
    一、列表 1.任意对象的有序集合 列表是一组任意类型的值,按照一定顺序组合而成的  2.通过偏移读取 组成列表的值叫做元素(Elements)。每一个元素被标识一个......
  • Python变量
    4.10Python变量4.10.1变量介绍变量,顾名思义,就是可以变化的量。变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据......
  • 力扣217(java&python)-存在重复元素(简单)
    题目:给你一个整数数组nums。如果任一值在数组中出现至少两次,返回true;如果数组中每个元素互不相同,返回false。 示例1:输入:nums=[1,2,3,1]输出:true示例2:输入......
  • 自动点击 python 翻倍
    sjhpvq4nrx4kzemw4cazh['pvq4nrx4kzemw4ca']lx[]>>>sjjtjc(sjh,"./xmzq.png",0,2)False>>>sjjtjcwzopb(sjh,"./xmksfhzq.png",0,2)False>>>sjjtjc(sjh,"./xm......
  • leetcode python 解题模板
    一般的题classSolution(object):defletterCombinations(self,digits):""":typedigits:str:rtype:List[str]"""......
  • python基础学习01
     1.python的两个变量互换值时不需要建立临时变量,x,y=y,x即可实现x和y的值的互换。 2.print('\"lifeisshort,let\'slearnpython\"')使用转义字符可以避免引号配对......