作为一个Python初学者,
在学习了相关知识后,
又参考了一些代码,
自己也编了个五子棋的程序,
目前只能实现人人对战,
即双方轮流下,
执黑先走,鼠标左键走棋,右键悔棋。
请多指教!

代码如下:

"""判断输赢函数
"""
def checkWin(x,y):flag = Falsecount = 1                #保存共有相同颜色多少棋子相连color =map[x][y]#横向判断i =1while color == map[x + i][y]:   #向右判断count += 1i += 1i=1while color == map[x - i][y]:   #向左判断count += 1i += 1if count >= 5:flag = True#纵向判断i2 = 1count2 = 1while color == map[x][y + i2]:  # 向上判断count2 += 1i2 += 1i2 = 1while color == map[x][y - i2]:  # 向下判断count2 += 1i2 += 1if count2 >= 5:flag = True#右上和左下判断i3 = 1count3 = 1while color == map[x + i3][y + i3]:  # 右上判断count3 += 1i3 += 1i3 = 1while color == map[x - i3][y - i3]:  # 左下判断count3 += 1i3 += 1if count3 >= 5:flag = True#右下和左上判断i4 = 1count4 = 1while color == map[x + i4][y - i4]:  # 右下判断count4 += 1i4 += 1i3 = 1while color == map[x - i4][y + i4]:  # 左上判断count4 += 1i4 += 1if count4 >= 5:flag = Truereturn flag"""走棋函数
"""
def callback(event):global turnx = (event.x)//40y = (event.y)//40print("click at",x,y,turn)if map[x][y] != "":showinfo(title= "提示",message = "已有棋子!")else:img1 = pics[turn]id = cv.create_image((x * 40 + 20, y * 40 + 20),image = img1)back.append((id,x,y))cv.pack()map[x][y] = str(turn)print_map()if checkWin(x,y):if turn == 0:showinfo(title= "提示",message = "黑方赢了!")else:showinfo(title= "提示",message = "白方赢了!")# 换下一方走棋if turn == 0:turn = 1else:turn = 0"""悔棋函数
"""
def huiqi(event):global turnif len(back) == 0:showinfo(title= "提示",message = "已没有任何棋子!")returnm = back.pop()id = m[0]x = m[1]y = m[2]map[x][y] = ''cv.delete(id)   # 删除棋子#换上一方走棋if turn == 0:turn = 1else:turn = 0"""绘制棋盘函数
"""
def drawQipan():for i in range(0,15):cv.create_line(20,20+40*i,580,20+40*i,width = 2)for i in range(0,15):cv.create_line(20+40*i,20,20+40*i,580,width = 2)cv.pack"""输出走棋信息
"""
def print_map():for i in range(0, 15):for j in range(0, 15):print(map[i][j],end='')print('w')"""主函数
"""
from tkinter import *
from tkinter.messagebox import *turn = 0
map = [[""for y in range(15)]for x in range(15)]
root = Tk()pics = [PhotoImage(file = 'F:\\Python_study\\practice\\blacK.gif'),PhotoImage(file = 'F:\\Python_study\\practice\\white.gif')]  #调取棋子图片  格式为gifroot.title("五子棋v1.0")
back = []
cv = Canvas(root,bg = 'green',width = 610,height = 610) #棋盘
drawQipan()
cv.bind("<Button-1>",callback)   #走棋
cv.bind("<Button-3>",huiqi)      #悔棋
cv.pack()
root.mainloop()

棋子图片:


程序运行如下:

在主函数调取棋子图片时,
老是出错,
后来在论坛求助后,
得到网友“陈年椰子”的提醒和指教,
完美解决问题,
如下:求助贴
本程序也得以完成,
在此再次感谢。

用Python编写的五子棋程序1.0版相关推荐

  1. 教你用Python 编写 Hadoop MapReduce 程序

    摘要:Hadoop Streaming 使用 MapReduce 框架,该框架可用于编写应用程序来处理海量数据. 本文分享自华为云社区<Hadoop Streaming:用 Python 编写 ...

  2. 为了偷懒,我开始用Python编写Android应用程序

    为了偷懒,我开始用Python编写Android应用程序 说明 环境准备 开发环境准备(windows) 编译环境准备 自行配置制作编译环境 偷懒:直接下载配置好的虚拟机 编译 验证APK 总结 说明 ...

  3. 使用Python编写网络扫描程序

    使用Python编写网络扫描程序 ​ 网络扫描程序通过向成百上千台计算机发送请求并分析其响应,扫描第2层和第3层网络中指定范围内的网络ID.利用某些扩展技术,网络扫描程序还可以获得通过Samba和Ne ...

  4. Python 编写的图形程序打包为安卓 APP、IOS

    如果想使用 Python 语言编写图形界面程序,那么有不少的框架可以提供支持,比如 Kivy.Tkinter.PyQt.WxPython.pyui4win等等. 这些框架都是只能创建桌面图形界面程序, ...

  5. python编写一计票程序,键盘输入候选人姓名(输入“#”结束),使用字典存储并统计出候选人得票数。python实现分段函数。

    一.编程题目         编程题目1:python编写一计票程序,键盘输入候选人姓名(输入"#"结束),使用字典存储并统计出候选人得票数.        编程题目2:pytho ...

  6. Python编写简易木马程序

    0x00 准备 文章内容仅供学习研究.切勿用于非法用途! 这次我们使用Python编写一个具有键盘记录.截屏以及通信功能的简易木马.依然选用Sublime text2 +JEDI(python自动补全 ...

  7. 用Python编写录屏程序将播放的视频用截屏方法转换为多帧图像编辑后保存为GIF格式动图文件

    有时编写游戏后发博文,为使读者有一个直观的游戏效果,会把游戏运行动画转换GIF格式动图发到博文中.本文介绍如何用python PIL库ImageGrab.grab()函数截屏,编写录屏程序,将视频转换 ...

  8. 如何使用Python编写简易木马程序

    这次我们使用Python编写一个具有键盘记录.截屏以及通信功能的简易木马.依然选用Sublime text2 +JEDI(python自动补全插件)来撸代码. 首先 准备好我们需要的依赖库,pytho ...

  9. python 编写仓库管理程序

    好的,我可以提供一些建议来帮助你编写仓库管理程序. 首先,你需要确定仓库管理程序的功能.是否需要跟踪库存数量?是否需要记录进出货记录?是否需要提供报告?确定好你的需求后,你可以开始设计你的程序的数据结 ...

最新文章

  1. RHEL/CentOS下的VLAN设置
  2. linux删除U盘分区、创建分区和格式化
  3. jQuery Tab
  4. 学习JS基本数据类型与对象的valueOf方法
  5. kafka怎么监听oracle,Rango_lhl:Spark+Kafka实时监控Oracle数据预警
  6. thinkphp所有参数配置
  7. java系列7:this关键词
  8. 解决linux下javac -version和java -version版本显示不一致
  9. 【赶紧收藏】平面设计必备字体,广告设计常用字体
  10. 最全jar包下载链接
  11. [转载]Win7微软官方正式版原版镜像下载总汇(附win7 OEM KEY密钥)
  12. 团队合作开发常用git操作
  13. 在线制作banner
  14. 苹果cmsV10MXone Pro自适应模板 站长亲测 全网首发
  15. Windows自动恢复报错:无法加载操作系统,原因是关键系统驱动程序丢失或包含错误
  16. html css特效,15个超酷的CSS3代码特效展示
  17. uC/OS-III 内核实现与应用开发实战学习(一)
  18. 常用激活函数总结(深度学习)
  19. 杭州成为女性房东占比最高的中国城市,紧随其后的是上海、成都
  20. xp系统更改计算机名BIOS设置,xp怎么进入bios,教您电脑怎么进入bios

热门文章

  1. basler相机参数简要中文说明_basler设置相机参数
  2. Elasticsearch(ES)的基本使用
  3. 一、RabbitMQ初使用(Consumer)
  4. IDM移动端功能升级说明
  5. sshpass和scp的使用
  6. scp向阿里云服务器上传文件
  7. 实验室暑期CTF训练赛--第三、四周
  8. 打倒虚伪的动物福利者!
  9. tools:ignore=“MissingConstraints“属性
  10. fatal error C1010:在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include“stdafx.h“”