井字棋简介

井字棋又称三子棋,英文名为Tic Tac Toe。具体玩法为在一个3x3的棋盘上,一个玩家用X做棋子,另一个玩家用O做棋子,谁先在棋盘上的一行、一列或对角线上画满三个棋子,即可获胜,如果棋盘下满无人胜出,即为平局。

实例代码

#要用的函数,可以在主程序用到时再看

def panduan1(a,b):``#判断是否获胜,返回1则证明此颜色的棋获胜

x``=``0

if x``=``=``0``:

for i in range``(``3``):``#检索二维数组的第i行

q``=``0``;p``=``0

for j in range``(``3``):``#检索第i行列表的所有元素

if a[i][j]``=``=``b:

q``+``=``1``#i行每有一个与所给的b棋的颜色相同,q就加一

if q``=``=``3``:``#如果此行三个元素都与所给棋的颜色相同,则返回1

return 1

if a[j][i]``=``=``b:``#i,j位置颠倒,变为检测每列的三个元素

p``+``=``1``#i列每有一个与所给的b棋的颜色相同,q就加一

if p``=``=``3``:``#如果此列三个元素都与所给棋的颜色相同,则返回1

return 1

q``=``0``;w``=``0

for i in range``(``3``):``#判断对角线上的三个元素棋的颜色是否与b棋相同

if a[i][i]``=``=``b:``#判断正对角线

q``+``=``1``#正对角线每有一个棋子与b颜色相同,q就加一

if a[i][``2``-``i]``=``=``b:``#判断另一条对角线

w``+``=``1``#负对角线每有一个棋子与b颜色相同,w就加一

if q``=``=``3 or w``=``=``3``:``#其中一条对角线和b棋颜色全部相同,则返回1

return 1

return 0``#以上条件都未返回值,则运行到这一步,返回0

def xiaqi(``all``,qi,a):``#将指定qi棋(白棋或黑棋)下到指定的a位置

all``[``int``(qi[``1``])``-``1``][``int``(qi[``0``])``-``1``]``=``a

def shuru1():``#输入要下的位置并返回对应的9键位置列表

x``=``input``()``#输入要下棋盘的位置

suoyou``=``'123456789'

if suoyou.find(x)``=``=``-``1``:``#限制范围为1-9,模拟的手机的9键位置

print``(``'输入不符合要求:'``)

return 'no'``#不合要求返回no

y``=``0

sum``=``''``#存棋下的位置

for j in range``(``1``,``4``):``#行号,整个循环循环x次,因为被下边break语句限制

for z in range``(``1``,``4``):``#列号

y``+``=``1``#循环一次加一,用于匹配是否和输入的数一样

sum``=``str``(z)``+``','``+``str``(j)``#键盘的9个键和相应的坐标all[j][z]

if y``=``=``int``(x):``#匹配是否和输入的数一样,从1开始,匹配一样则返回9键对应位置列表并中断循环,比如输入2,返回[2,1],对应9键第一行第二列

return``(``sum``.split(``','``))``#返回对应9键的位置列表

break

def panduan2(``all``,x):``#判断棋盘此位置是否已有棋子

hang``=``int``(x[``1``])

lie``=``int``(x[``0``])

if all``[hang``-``1``][lie``-``1``]!``=``'-'``:``#只需要判断此位置是否为'-'号即可

return 1``#返回1,就是此位置已有棋子

else``:

return 0``#返回0,就是此位置没有棋子

def dayin(``all``):``#打印函数:用于打印棋盘现在的状况

for i in range``(``3``):

print``(``' '``.join(``all``[i]))

#主程序开始

all``=``[[``'-'``,``'-'``,``'-'``],[``'-'``,``'-'``,``'-'``],[``'-'``,``'-'``,``'-'``]]``#建立棋盘,“-”号代表棋盘无棋子

t``=``0``;w``=``0

print``(``'游戏开始!\n黑棋先:'``)

while t``=``=``0 and w``=``=``0``:``#利用t,w来分别表明黑白两棋的获胜,1为获胜,初始为0是为了进行一个整体循环,直到有一方获胜,则跳出循环

dayin(``all``)

print``(``'轮到黑棋了:'``)``#先下黑棋,标识符为'1'

hei``=``shuru1()``#输入黑棋要下的位置

while hei``=``=``'no' or panduan2(``all``,hei)``=``=``1``:``#设置重新输入判断命令,在输入的数不为1-9的数字或此位置有棋时重新输入,直到输入正确时退出循环

dayin(``all``)``#有误时先再次打印一次棋盘

print``(``'请重新输入:'``)

hei``=``shuru1()``#再次输入1-9数字

xiaqi(``all``,hei,``'1'``)``#下黑棋

t``=``panduan1(``all``,``'1'``)``#判断黑棋是否获胜,是则返回1

dayin(``all``)``#再次打印此时棋盘

if t``=``=``1``:``#判断hei返回是否为1,是的话代表hei棋获胜,并退出循环

print``(``'黑棋赢!'``)

break

all1``=``all``[``0``]``+``all``[``1``]``+``all``[``2``]``#将棋盘加成一个字符串,利于判断是否还有空位置可下棋

if all1.count(``'-'``)``=``=``0``:``#如果没有'-'号,则棋盘被下满,平局,退出循环

dayin(``all``)``#再次打印棋盘,为了好看,可以将这句挪到print下边

print``(``'平局!'``)

break

print``(``'轮到白棋了:'``)``#以下内容和黑棋下法一样,是白棋的下法,白棋标识为'0'

bai``=``shuru1()

while bai``=``=``'no' or panduan2(``all``,bai)``=``=``1``:

dayin(``all``)

print``(``'请重新输入:'``)

bai``=``shuru1()

xiaqi(``all``,bai,``'0'``)

w``=``panduan1(``all``,``'0'``)

if w``=``=``1``:

print``(``'白棋赢!'``)

dayin(``all``)

all1``=``all``[``0``]``+``all``[``1``]``+``all``[``2``]

if all1.count(``'-'``)``=``=``0``:

dayin(``all``)

print``(``'平局!'``)

break

print``(``'游戏结束!'``)

|

运行结果在这啦,快和你的小伙伴一块玩吧:

总结

到此这篇关于python入门游戏之井字棋的文章就介绍到这了,更多相关python入门游戏井字棋内容请搜索公众号:python教程入门学习以前的文章或继续浏览下面的相关文章希望大家以后多多支持python教程入门学习!
python福利教程领取方式:
1、点赞+评论(勾选“同时转发”)
2、关注小编。并私信回复关键字【19】
(一定要私信哦~点击我的头像就能看到私信按钮了)

python入门游戏之井字棋实例代码相关推荐

  1. python小游戏系列井字棋,儿时的回忆

    hello大家好,今天我又发现了个有趣的小玩意.我是专写有趣小玩意的老诗. 相信大家对于井字棋都并不陌生.现在也能找到各种各样的井字棋小游戏玩.那么你们自己是否会编写呢?接下来老诗用python教大家 ...

  2. python基础游戏之井字棋(讲解)

    python基础入门游戏之"#"字棋(讲解) 博主新建的Python学习QQ群分享一些实用的学习工具和疑问解答以及源码分享欢迎加入:431615454. 上期的内容解析在这啦,欢迎 ...

  3. python小游戏开发——井字棋

    一家懂得用细节留住客户的3年潮牌老店我必须支持!➕

  4. 通过游戏编程学Python(7)— 井字棋(下)

    通过游戏编程学Python 通过游戏编程学Python(7)- 井字棋(上) 通过游戏编程学Python(番外篇)- 单词小测验 通过游戏编程学Python(6)- 英汉词典.背单词 文章目录 通过游 ...

  5. [HTML5实现人工智能]小游戏《井字棋》发布,据说IQ上200才能赢

    一,什么是TicTacToe(井字棋) 本游戏为在下用lufylegend开发的第二款小游戏.此游戏是大家想必大家小时候都玩过,因为玩它很简单,只需要一张草稿纸和一只笔就能开始游戏,所以广受儿童欢迎. ...

  6. 『HTML5实现人工智能』小游戏《井字棋》发布,据说IQ上200才能赢【算法代码讲解+资源打包下载】...

    一,什么是TicTacToe(井字棋) 本游戏为在下用lufylegend开发的第二款小游戏.此游戏是大家想必大家小时候都玩过,因为玩它很简单,只需要一张草稿纸和一只笔就能开始游戏,所以广受儿童欢迎. ...

  7. C语言小游戏->井字棋

    井字棋想必大家都玩过,今天教大家一个用C语言写一个井字棋小游戏 这个游戏大致可以分为两个部分:游戏菜单和游戏过程. 首先就是创建一个menu()函数来写菜单页面 这里出现了不同指令对应的结果,即输入1 ...

  8. C语言实现小游戏之井字棋

    目录 前言 一.井字棋游戏的主流程 二.游戏部分 1.游戏函数 2.初始化棋盘 3.打印棋盘 4.玩家下棋 5.电脑下棋(两个难度等级) 6.判断游戏是否结束 三. 源码展示 总结 前言 这是我在学习 ...

  9. C语言小游戏之井字棋

    目录 1.游戏菜单 2.实现游戏函数 2.1.初始化棋盘 2.2.打印棋盘 2.3.实现玩家下棋 2.3.实现电脑下棋 ​ 2.4.判断输赢 2.5.判断棋盘是否满 2.6.游戏函数 3.完整代码 3 ...

最新文章

  1. OpenCV读写xml和yml文件
  2. 头发为什么会从中间断掉_谈谈保养头发的方法,教你如何让它变得更加健康
  3. 斯坦福被炮轰:用算法分配5000支新冠疫苗,医护人员只有7支
  4. python buildin 中的一些类中为什么方法的内容都是pass?
  5. windows7怎么恢复出厂设置_电脑恢复出厂设置会怎么样图文教程_windows7教程
  6. ffmpeg编译gb28181_国标GB28181协议视频推流平台EasyGBD在Linux下编译报“UINT64_C在此作用领域中尚未声明”错误...
  7. micropython编译原理_C语言嵌入式Linux高级编程第9期:CPU和操作系统入门视频课程...
  8. MindSpore实践:对篮球运动员目标的检测
  9. linux C 中的volatile使用【转】
  10. 凸优化学习笔记(一):仿射集、凸集、锥
  11. 【刘润五分钟商学院】-151幸存者偏见
  12. 电脑上如何进行MP4格式转换成其它格式?
  13. 微软:12代酷睿处理器,须升级win11才能发挥出最大的性能
  14. LEETCODE--mysql查询第二高薪水
  15. PID中各个参数意义
  16. HTML字母加圈,终于找到了最详细系列之HTML字符实体
  17. SpringBoot25-spingboot数据访问-数据缓存Cache
  18. 模仿,类比,移植技法(创新技法5)
  19. 炒鸡简单的javaScript的call和apply方法
  20. Google 收购摩托罗拉移动将会对全球手机市场格局带来哪些深远影响?

热门文章

  1. WebGL入门(十九)-三维视图通过调整正射投影矩阵/盒状可视空间实现三角形的显示与消失
  2. 硬盘录像机通过国标GB28181协议接入EasyCVR,通道经常上下线是什么原因?
  3. ACM 14670 脸盆大哥的木桶 排序
  4. 逆战 (正则)用户名验证
  5. 霸气C语言程序,史上最霸气毕业寄语:全是编程语言
  6. 详解Android首选项框架ListPreference
  7. 找人做网站有必要花费万元以上吗?
  8. 中国的互联网创业,也许进入了最无聊的时期
  9. Typecho情侣头像壁纸网站主题Wallpaper
  10. 如何设计百万人抽奖系统——面试10多家中大厂后的万字总结