女朋友下棋比我厉害,还特别嚣张,Python敲个辅助,看她如何嚣张
她表示当前一段时间内不想听情话,最近喜欢上了下五子棋,每天都要和我下棋。
每次都对我大杀特杀,搞得我很没有面子,让我随便放马过来!
我觉得有点嚣张,她可能不知道柯某人在遭遇AlphaGO“三连杀”之前也是很嚣张的,真不知道她是从哪里来的自信。
搞个AI五子棋有点太欺负女朋友了,所以就敲个辅助提醒的代码来辅助自己一下,看看如何嚣张。
五子棋的规则就是五个子连在一起就是胜利,当出现四个子连在一起的时候,基本上就没太有挽回局面的可能,因此就设置了,当三个子连在一起时,发出提醒,这样就能及时围堵,掌控全局!
Python代码如下:
""" 当然在学习Python的道路上肯定会困难,没有好的学习资料,怎么去学习呢? 学习Python中有不明白推荐加入交流Q群号:928946953 群里有志同道合的小伙伴,互帮互助, 群里有不错的视频学习教程和PDF! 还有大牛解答! """ import pygame #导入pygame游戏模块 pip install pygame import time import sys from pygame.locals import *initChessList = [] #用列表保存棋盘坐标 initRole = 1 #1:代表白棋; 2:代表黑棋 resultFlag = 0 #结果用0表示class StornPoint():def __init__(self,x,y,value):''':param x: 代表x轴坐标:param y: 代表y轴坐标:param value: 当前坐标点的棋子:0:没有棋子 1:白子 2:黑子'''self.x = x #初始化成员变量self.y = yself.value = valuedef initChessSquare(x,y): #初始化棋盘for i in range(15): # 每一行的交叉点坐标rowlist = []for j in range(15): # 每一列的交叉点坐标pointX = x+ j*40pointY = y+ i*40sp = StornPoint(pointX,pointY,0)rowlist.append(sp)initChessList.append(rowlist)def eventHander(): #监听各种事件for event in pygame.event.get():global initRoleif event.type == QUIT:#事件类型为退出时pygame.quit()sys.exit()if event.type == MOUSEBUTTONDOWN: #当点击鼠标时x,y = pygame.mouse.get_pos() #获取点击鼠标的位置坐标i=0j=0for temp in initChessList:for point in temp:if x>=point.x-10 and x<=point.x+10 and y>=point.y-10 and y<=point.y+10:if point.value == 0 and initRole == 1: #当棋盘位置为空;棋子类型为白棋point.value = 1 #鼠标点击时,棋子为白棋judgeResult(i,j,1)initRole = 2 #切换角色elif point.value == 0 and initRole ==2: #当棋盘位置为空;棋子类型为黑棋point.value = 2 #鼠标点击时,棋子为黑棋judgeResult(i,j,2)initRole = 1 #切换角色breakj+=1i+=1j=0def judgeResult(i,j,value): #各个方向判断global resultFlagflag = Falsefor x in range(j - 4, j + 5): # 横向有没有出现5连(在边缘依次逐一遍历,是否五个棋子的类型一样)if x >= 0 and x + 4 < 15 :if initChessList[i][x].value == value and \initChessList[i][x + 1].value == value and \initChessList[i][x + 2].value == value :print("横向,要小心!")if initChessList[i][x].value == value and \initChessList[i][x + 1].value == value and \initChessList[i][x + 2].value == value and \initChessList[i][x + 3].value == value and \initChessList[i][x + 4].value == value:flag = Truebreakpassfor x in range(i - 4, i + 5): # 纵向有没有出现5连(在边缘依次逐一遍历,是否五个棋子的类型一样)if x >= 0 and x + 4 < 15:if initChessList[x][j].value == value and \initChessList[x + 1][j].value == value and \initChessList[x + 2][j].value == value:print("纵向,要小心!")if initChessList[x][j].value == value and \initChessList[x + 1][j].value == value and \initChessList[x + 2][j].value == value and \initChessList[x + 3][j].value == value and \initChessList[x + 4][j].value == value:flag = Truebreakpass# 先判断东北方向的对角下输赢 x 列轴, y是行轴 , i 是行 j 是列(右斜向)(在边缘依次逐一遍历,是否五个棋子的类型一样)for x, y in zip(range(j + 4, j - 5, -1), range(i - 4, i + 5)):if x >= 0 and x + 4 < 15 and y + 4 >= 0 and y < 15:if initChessList[y][x].value == value and \initChessList[y - 1][x + 1].value == value and \initChessList[y - 2][x + 2].value == value :print("东北-西南方向,要小心!")if initChessList[y][x].value == value and \initChessList[y - 1][x + 1].value == value and \initChessList[y - 2][x + 2].value == value and \initChessList[y - 3][x + 3].value == value and \initChessList[y - 4][x + 4].value == value:flag = True# 2、判断西北方向的对角下输赢 x 列轴, y是行轴 , i 是行 j 是列(左斜向)(在边缘依次逐一遍历,是否五个棋子的类型一样)for x, y in zip(range(j - 4, j + 5), range(i - 4, i + 5)):if x >= 0 and x + 4 < 15 and y >= 0 and y + 4 < 15:if initChessList[y][x].value == value and \initChessList[y + 1][x + 1].value == value and \initChessList[y + 2][x + 2].value == value :print("西北-东南方向,要小心!")if initChessList[y][x].value == value and \initChessList[y + 1][x + 1].value == value and \initChessList[y + 2][x + 2].value == value and \initChessList[y + 3][x + 3].value == value and \initChessList[y + 4][x + 4].value == value:flag = Trueif flag: #如果条件成立,证明五子连珠resultFlag = value #获取成立的棋子颜色print("白棋赢" if value ==1 else "黑棋赢")# 加载素材 def main():global initChessList,resultFlaginitChessSquare(27,27)pygame.init() # 初始化游戏环境screen = pygame.display.set_mode((620,620),0,0) # 创建游戏窗口 # 第一个参数是元组:窗口的长和宽pygame.display.set_caption("五子棋记棋提醒助手!") # 添加游戏标题background = pygame.image.load("棋盘.png") #加载背景图片whiteStorn = pygame.image.load("白棋.png") #加载白棋图片blackStorn = pygame.image.load("黑棋.png") #加载黑棋图片resultStorn = pygame.image.load("厉害死你呢.png")#加载 赢 时的图片rect = blackStorn.get_rect()while True:screen.blit(background,(0,0))for temp in initChessList:for point in temp:if point.value == 1: #当棋子类型为1时,绘制白棋screen.blit(whiteStorn,(point.x-18,point.y-18))elif point.value == 2: #当棋子类型为2时,绘制黑棋screen.blit(blackStorn,(point.x-18,point.y-18))if resultFlag >0:initChessList = [] # 清空棋盘initChessSquare(27,27) # 重新初始化棋盘screen.blit(resultStorn,(200,200)) #绘制获胜时的图片pygame.display.update() #更新视图if resultFlag >0:time.sleep(10) #休息10sresultFlag = 0 #置空之前的获胜结果eventHander() #调用之前定义的事件函数 if __name__ == '__main__':main() #调用主函数绘制窗口pass
要是大家也碰到喜欢下五子棋,并且很嚣python教程张的女朋友的时候,可以用这个来辅助,杀她十几盘以后,她就再也不嚣张了!
期待我的战果吧!
女朋友下棋比我厉害,还特别嚣张,Python敲个辅助,看她如何嚣张相关推荐
- 40岁还能学python么_30天看了250集python教程,我发现40岁学编程并不晚
今天是十一哥学python的第30天. 时间过得挺快,感觉第一篇学习心得写了还没多久,这就已经不知不觉写30篇了. 从第1集开始,看视频教程.记笔记.截图.写代码,然后写文章.配图.发帖.回复网友留言 ...
- 《偶像爱豆出身的编程语言排行第一得主!谁还敢嘲python没实力?》Python应用与实践
可能有些标题党,没有针对某些具体的应用与实践.有哪些补充.不足请大家指出. Python是什么? Life is short, You need python 生命苦短,我用Python 1.1. P ...
- python程序 爱意_情人节到了,隔离在家的你还不快用Python给你的她表达下爱意?...
情人节到了,隔离在家的你还不快用Python给你的她表达下爱意? 2020-02-14 11:55:31 2点赞 16收藏 2评论 作为理工男,其实最烦的就是情人节了,要脱掉最爱的格子衫,换上西装,捧 ...
- 郁闷啊,三点多钟还没睡,休息一下,看下摸胸小苹果。
郁闷啊,三点多钟还没睡,休息一下,看下摸胸小苹果. 一个穿绿裙子的女的演出唱着小苹果然后下台让观众一个一个的摸胸,这里提供下唱小苹果摸胸视频无删减-美女唱小苹果让人摸胸 ed2k 不多说,发福利 ...
- 一个朋友弄来的,太牛了,特别是后面内容,不看不知道,一看吓一跳,电话,热线
一个朋友弄来的,太牛了,特别是后面内容,不看不知道,一看吓一跳,我也收藏一下: 工商银行 95588 建设银行 95533 农业银行 95599 中国银行 95566 交通银行 95559 浦发银行 ...
- linux看电影的软件,让Linux终端展示中文,还能让你在终端下看电影哟!
让Linux终端显示中文,还能让你在终端下看电影哟!! 1.编辑文件 $ sudo gedit /etc/initramfs-tools/modules 末尾加入 fbcon vesafb vga16 ...
- 厉害了!用 Python 制作出来的地球仪!
文 | 潮汐 来源:Python 技术「ID: pythonall」 Python 功能真的很强,强大到让人吃惊,它能做的事囊括爬虫.数据分析.数据可视化.游戏等等各方面,这些功能在实际的使用中应用广 ...
- 扩展桌面:扩展屏幕没有连接,但程序还在扩展屏幕上,在看不到这个屏幕的情况下,怎么把程序窗口拉回来
扩展桌面:扩展屏幕没有连接,但程序还在扩展屏幕上,在看不到这个屏幕的情况下,怎么把程序窗口拉回来 打开这个程序后,点击这个程序,然后按住Alt + 空格键,选择最大化,即可将程序窗口在本窗口最大化显示 ...
- 收藏!最详细的Python全栈开发指南 看完这篇你还不会Python全栈开发 你来打我!!!
Python Web全栈开发入门实战教程教程 大家好,我叫亓官劼(qí guān jié ),这个<Python Web全栈开发入门实战教程教程>是一个零基础的实战教程,手把手带你开 ...
最新文章
- xshell连接Linux、ngix部署
- Java黑皮书课后题第4章:*4.3(几何:估算面积)应用4.1节图中以下地点的GPS位置:Georgia州的Atlanta……计算被这四个城市所围起来的区域面积
- 数据结构--顺序栈和链式栈
- SAP如何自定义客户编码
- 用vs2003调试asp的方法和体会
- python填充数组到指定长度
- PostgreSQL9.6+PostGIS2.3学习笔记(一)导入shp文件
- UI实用可临摹素材|剖析UI界面设计基本原则!
- 一文速览EMNLP 2020中的Transformer量化论文
- Joseph UVA 1452 Jump
- simple resource manager
- [图]礼仪大赛策划方案:使用PPT,如何打造一场专业而又经济的礼仪大赛呢?
- xmanager 远程连接REDHAT 4 桌面
- paip..禁用mmseg 的默认词库. . 仅仅使用自定义词库from数据库.
- 虚拟机启动失败-Intel VT-x 处于禁用状态 的解决方案
- Word文档标题自动增加序号
- php shopex,shopex官网 用PHP为SHOPEX增加日志功能代码
- 【python】实用tools
- 百练_2801:填词
- 红帽linux安装intel(R) wifi link 5100 AGN总结
热门文章
- 从70年兴衰史里看见AI的未来
- 安信可 ESP32-S3 模组上驱动摄像头 OV2640,实现远程拍照并 HTTP 传输到阿里云对象存储OSS,并显示在微信小程序上。(深度好文,全部开源)
- 超低价纯流量卡不限速?三招教你拆穿商家套路
- MATLAB图片加密
- Linux入门——如何制作一个刷取网页访问量的脚本并打包成rpm软件包(CentOS)
- Android弹幕DanmakuFlameMaster源码解析
- 下载量暴跌 90% 后推出安卓版,Clubhouse 能翻身吗?
- 微信小程序开发笔记(四)数据绑定
- php table表单下载,GitHub - Zerolone/auto: 用php生成表格、表单 phh create form table
- [转载]PID由入门到精通