1.先进行数据建模

    # 游戏棋盘theBoard = {'top-L': '', 'top-M': '', 'top-R': '','mid-L': '', 'mid-M': '', 'mid-R': '','low-L': '', 'low-M': '', 'low-R': ''}# 棋盘坐标print("----------棋盘坐标---------------")print('top-L|top-M|top-R')print('mid-L|mid-M|mid-R')print('low-L|low-M|low-R')# 打印棋盘print("----------实际棋盘---------------")print(theBoard['top-L'] + '|' + theBoard['top-M'] + '|' + theBoard['top-R'])print('-+-+-')print(theBoard['mid-L'] + '|' + theBoard['mid-M'] + '|' + theBoard['mid-R'])print('-+-+-')print(theBoard['low-L'] + '|' + theBoard['low-M'] + '|' + theBoard['low-R'])

效果如下:

有了棋盘建模了,那么我们就需要写逻辑了,让棋盘动起来

2.使用逻辑让数据动起来

完整代码如下:

def printBoard(theBoard):pd = 1  # 我方和敌方while True:# 效验棋盘是否满了checkerboard_count = 9  # 井字游戏棋盘棋子的个数是9for v in theBoard.values():v = v.strip()  # 去除空格if v != '' and len(v) > 0:checkerboard_count -= 1if checkerboard_count == 0:print("棋盘已满游戏结束---平局")return Noneprint("请" + str(pd) + "号选手输入下棋位置:")str_v = input()# 判断是否有这个棋子的坐标if str_v not in theBoard.keys():print("----对不起没有此棋子坐标请从新输入:")continue# 判断棋子是否已经存在if theBoard[str_v].strip()!='' or len(theBoard[str_v].strip())>0:print("已下过次棋-请从新选择下棋位置")continueif pd == 1:theBoard[str_v] = 'O'else:theBoard[str_v] = 'X'print(theBoard['top-L'] + '|' + theBoard['top-M'] + '|' + theBoard['top-R'])print('-+-+-')print(theBoard['mid-L'] + '|' + theBoard['mid-M'] + '|' + theBoard['mid-R'])print('-+-+-')print(theBoard['low-L'] + '|' + theBoard['low-M'] + '|' + theBoard['low-R'])win = pd_win(theBoard)if win == 'X':print("2号选手胜利-游戏结束")return Noneelif win == 'O':print("1号选手胜利-游戏结束")return None# 转换为2|1号选手if pd == 1:pd = 2elif pd == 2:pd = 1def pd_win(theBoard):# 效验是否胜利win_chess = [[0, 4, 8], [2, 4, 6], [0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 3, 6], [1, 4, 7], [2, 5, 8]]for i in win_chess:  # 每次执行一次可能性pd_board_3 = 0  # 记录子循环次数record1 = 0  # X成绩记录record2 = 0  # O成绩记录for k, v in theBoard.items():if pd_board_3 in i:if v == 'X':record1 += 1if v == 'O':record2 += 1pd_board_3 += 1if record1 == 3:return 'X'elif record2 == 3:return 'O'if __name__ == '__main__':# 游戏棋盘theBoard = {'top-L': '', 'top-M': '', 'top-R': '','mid-L': '', 'mid-M': '', 'mid-R': '','low-L': '', 'low-M': '', 'low-R': ''}# 棋盘坐标print("----------棋盘坐标---------------")print('top-L|top-M|top-R')print('mid-L|mid-M|mid-R')print('low-L|low-M|low-R')# 打印棋盘print("----------实际棋盘---------------")print(theBoard['top-L'] + '|' + theBoard['top-M'] + '|' + theBoard['top-R'])print('-+-+-')print(theBoard['mid-L'] + '|' + theBoard['mid-M'] + '|' + theBoard['mid-R'])print('-+-+-')print(theBoard['low-L'] + '|' + theBoard['low-M'] + '|' + theBoard['low-R'])# 提示print("井字棋规则: 选手分为1号选手和二号选手, 一号选手先下棋(自行分配)----游戏即将开始")# 用户输入printBoard(theBoard)

效果演示



至于其他可能性我都写了,这里就不一一展示了
比如: 棋盘满了----(ok),重复下棋----(ok),平局—(ok)

纯手写----给点鼓励(点赞 -收藏-关注) 有其他问题在评论区讨论-或者私信我-收到会在第一时间回复 如有侵权,请私信联系我 感谢,配合,希望我的努力对你有帮助^_^

Python-井字棋游戏相关推荐

  1. python井字棋游戏代码_python实现井字棋游戏

    python实现井字棋游戏 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  python实现井字棋游戏.txt ] (友情提示:右键点上行txt文档名->目标 ...

  2. python井字棋游戏大作业实验报告_Part 1.2 - 实现一个井字棋游戏的gym环境

    上文已经描述了怎么创建和注册一个自定义的gym环境.但是环境类中的4个函数都是空的,本文将描述怎么实现那4个函数,实现一个完整的井字棋游戏的环境. 游戏规则:两个玩家在3x3的棋盘上,一方执X,一方执 ...

  3. python井字棋游戏开发(人人对战,人机对战,包含源码,逻辑思维流程图)

    需求分析 井字棋是比较便捷休闲娱乐的一种迷你棋,玩法比较简单,只需要一个九宫格棋盘就可以实现两人对战,规则为谁先连成三个棋子的一条线即可获胜.本游戏,需要满足两个主要功能:1.能实现玩家对战:2.能实 ...

  4. python井字棋游戏人机对战_用Python做一个井字棋小游戏

    井字棋是一个经典的小游戏,在九宫格上玩家轮流画OXO,当每列或每行或是两个对角成一线时便是获胜. 今天就用Python编写一个井字棋小游戏,与电脑对战. 程序执行画面如下图所示: 程序提供了两种人工智 ...

  5. python井字棋游戏代码_Python实现的井字棋(Tic Tac Toe)游戏示例

    Python实现的井字棋(Tic Tac Toe)游戏示例 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  Python实现的井字棋(Tic Tac Toe)游戏示 ...

  6. Python基础编程案例:简单的井字棋游戏设计与制作

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 前言 python井字棋游戏虽然看上去非常简陋,但是却非常值得学习. 先看怎么玩 ...

  7. python井字棋ai_[Python100行系列]-井字棋游戏

    博客:Hzy的博客 | Hzy Blog​hzeyuan.cn一些学习python的小项目,小游戏.python小项目​github.com 话不多说,今天尝试用turtle库来写一个井字棋游戏.1. ...

  8. python井字棋_[Python100行系列]-井字棋游戏

    博客:Hzy的博客 | Hzy Blog​hzeyuan.cn一些学习python的小项目,小游戏.python小项目​github.com 话不多说,今天尝试用turtle库来写一个井字棋游戏.1. ...

  9. php井字游戏,python实现井字棋游戏

    #本游戏python3.4.0下编写调试,只能在windows下运行. import random import subprocess import time #定义函数 def draw_board ...

  10. python井字棋ai,python 井字棋(Tic Tac Toe)

    说明 用python实现了井字棋,整个框架是本人自己构思的,自认为比较满意.另外,90%+的代码也是本人逐字逐句敲的. minimax算法还没完全理解,所以参考了这里的代码,并作了修改. 特点 可以选 ...

最新文章

  1. 版电力系统故障录波_电力系统中的变电运维技术匹配专业中的应用
  2. linux下SVN不允许空白日志提交
  3. iis出现 Server Application Error 错误解决方法(xp iis5.1 配置asp项目出现500错)
  4. maven 整合支付宝,导入alipay-sdk-java包到本地仓库,远程仓库
  5. 【第五组】头脑风暴+核心竞争力+NABCD+个人(用例+功能+技术说明书) 最后修改时间 2017.07.13...
  6. GL_RGBA和GL_RGB的差别
  7. 《C++语言基础》实践参考——友元类
  8. HTML上下左右垂直居中
  9. go 写文件_如何在 Ubuntu 20.04 上安装 Go
  10. 抽象 java 1614868764
  11. endwith php,辅助函数 | 进阶系列 | Laravel 7 中文文档
  12. c语言中变量可以用x1表示没,你必须知道的495个C语言问题 读书笔记
  13. 前端绝对路径不显示图片_[锋利web前端开发]sass小技巧图片版本号和绝对路径引用...
  14. 如果你知道10条以上,你就和我一样渊博了
  15. 微软Windows Hello曝漏洞!外接一个USB摄像头,分分钟破解你的电脑
  16. Arcgis空间分布方向性分析
  17. 安装Altera USB-Blaster驱动程序遇到的问题
  18. JSP页面中用绝对路径显示图片
  19. 【stm32c8t6+esp8266上传温湿度到Onenet云平台】
  20. java 最烧脑的继承题_多动脑不会老!最烧脑的10道智力题!答对5道算智商高!一起开动脑筋吧~...

热门文章

  1. 含泪整理最优质耳机免抠元素素材,你想要的这里都有
  2. 字节跳动 前端校招 一二三面+hr面(2020-03)
  3. 美国留学计算机专业就业怎么办,美国留学计算机专业就业前景怎么样?
  4. 如何编写出色的项目报告(附案例)
  5. 3DSMAX选中物体进行旋转,但物体旋转不了。平移以及缩放是可以的
  6. 遇到Initialization failure:0x0000000C错误,其他解决办法
  7. 百度UNIT聊天API实现聊天对话
  8. python的Firebird驱动:FDB使用说明
  9. python酒店评论分析_GitHub - huangpd/senti_analysis: 利用Python实现酒店评论的中文情感分析...
  10. File size exceeds....(文件大小超过限制处理)