今天是小编学习Python的第二天,有点小激动,因为我 昨天试了下水,做了一个Python的小弹球游戏,代码copy一路畅通,效果也还不错,而且,我居然还得了60个赞,很高兴,因为这是我第一次写技术博客超过十个赞的,于是乎,我快马加鞭,赶紧推出了我的Python学习第二部!

在这里小编建议大家先去看一下我的上一篇博客

关于Python怎么画图在上一篇博客中有讲述哦

另外小编也是才接触Python,博客是为了分享自己的学习方法,学习过程

另外有学的Python想法的小伙伴们一定要开始学哦,当然,跟着我的节奏一起学也不错啊嘿嘿

我觉得我这里重在讲两个观点: 敢干!当你遇见一个不知道的问题或者没听过的概念的时候,你要有一个这就其实是一个概率一个问题的思维!而不是,握草,没听过啊,好牛逼的样子,我不会啊...

会解决问题,会for help,会百度,然后,当你敢于解决问题,并学会解决问题的时候,不知不觉中,你就是大神,大神就是你了!

这一次我将为大家带来我的第二个小作品—AI五子棋(基于博弈树算法),其实在上一篇博客的基础上,再去做个五子棋的难度并不大,按照上一次所说,这一次写五子棋也按步骤,一步一步来!

第一步:绘制棋盘

无非就是几根竖线几根横线,首先创建一个窗体,然后给窗体加上画布,再画线,就可以绘制出棋盘了,代码如下:

fornum inrange(1,17):

canvas.create_line(num*30,30,num*30,480,width=2)

fornum inrange(1,17):

canvas.create_line(30,num*30,480,num*30,width=2)

当然,for循环的方法也是我百度的,但是绘制棋盘的时候遇到了一个问题

画布左边的线 canvas.create_line(0,0,0,450)显示不出来,于是我将线加粗,于是得到

只有一条细细的线,大概是最左边那里可能会遮挡吧,于是乎我就将画布增大,将棋盘移到中间,就这样,香喷喷的棋盘就这样出炉了!

第二步:给画布加鼠标监听,画棋子

给画布加监听是为了让我们点击一下鼠标,就在click的那个点画一个棋子,从而实现下棋功能。

好!心中默念一声,百度大法好 !

duang~

监听方法找到了,这监听起来可比Java简单多了,好,一波复制粘贴下来,走一波

摁一下,画一下圆,感觉不太对劲,监听的应该不是点击事件,继续百度,鼠标点击监听

将 改成,走一波,完美,点哪儿画哪儿,美滋滋

然后,我们可以发现,鼠标点击的点很可能不会下在棋盘的点上,因此,就需要我们处理一下画圆的数据,如果点击的点离哪边儿近,那我就画在哪,我这儿棋盘的宽度设置的是30。所以当点击的除以30剩下的值大于15就画在右边的棋盘点,反之则画在左边,上下亦然。

再我用了这个方法后,结果棋子还是没有落在棋盘点上,输出一下处理后的点,发现并不是整数。不用想,肯定是语法问题了,百度走一波

Python 里面的 / 并不像c/Java里面那样,是正真的除法,没有经过处理的,所以,这里应该用//

所以我现在印象很深刻"//"等于Java里面的"/",以及,Python没有++i和i++这种运算符

也许,像这样子错一下,也许比直接看书,更加让人记忆深刻吧 !

第三步:黑白轮回,用二维数组表示棋子

黑棋白棋轮流下很简单,设置一个全局变量color_number=0,每点击一次鼠标,color_number+=1,不能用color_number++,当color_number%2==0时,在相应的点画黑棋,反之,画白棋。

在这里又遇到一个问题,在color_number+=1的时候会报错,看看报错原因,与全局变量与局部变量有关,好吧,继续百度

新知识点get,但是还是想查他个水落石出~,这里就不一一贴上来了

好了,能黑白轮流下了,但是在黑棋上点一下,就会变成白棋,再点一下,又变成黑棋了,这个问题好解决,创建一个二维数组,用0表示改点为空,1表示黑棋,2表示白棋。只有当改点为0的时候,在可以下棋。

啥,二维数组不会?二维数组不对劲?好吧,继续百度: python二维数组

能百度就百度,不要说不会,让一切问题都扼杀在百度的摇篮里吧!(有点像百度水军的感觉哈哈)

第五步,判断输赢

之前见过有人判断输赢遍历整个棋盘寻找有没有五子连珠,其实没必要这样做,你只要在当前下的点往四个方向搜一下,判断四个方向有没有五子连珠就OK了,这里因为我语法不太会,我直接全部写在一起了,下面贴代码

def isgameover( xx , yy):

count =0

#向左搜索

for i in range (xx+1 ,17 ):

if array[i][yy] == array[xx][yy] :

count += 1

else:

break

#向右搜索

for i in range ( xx ,0,-1 ) :

if array[i][yy] == array[xx][yy]:

count += 1

else :

break

if count == 5 :

tkinter.messagebox.showinfo("","Game over")

count =0

#向下搜索

for i in range (yy+1 ,17 ):

if array[xx][i] == array[xx][yy] :

count+=1

else:

break

#向上搜索

for i in range ( yy ,0,-1 ) :

if array[xx][i] == array[xx][yy]:

count += 1

else :

break

if count == 5 :

tkinter.messagebox.showinfo("","Game over")

count =0

#向右下搜索

for i,j in zip( range(xx+1,17),range (yy+1,17)):

if array[i][j] == array[xx][yy] :

count+=1

else:

break

#向左上搜索

for i,j in zip(range(xx,0,-1),range ( yy ,0,-1 ) ):

if array[i][j] == array[xx][yy]:

count += 1

else :

break

if count == 5 :

tkinter.messagebox.showinfo("","Game over")

count =0

#向左下搜索

for i, j in zip(range(xx -1, 0,-1), range(yy + 1, 17)):

if array[i][j] == array[xx][yy]:

count += 1

else:

break

#向右上搜索

for i, j in zip(range(xx, 17), range(yy, 0, -1)):

if array[i][j] == array[xx][yy]:

count += 1

else:

break

if count == 5:

tkinter.messagebox.showinfo("","Game over")

count = 0

第六步:悔棋

第七步:加AI

六七步下次再给大家补上,在这里小编还是想说一句:有问题,不要说我不会,因为一旦你这样说,很多情况下,大概率我们是不会去解决这个不会的问题的。个人觉的,在网上资源这么丰富的情况下,只要你敢干,不怂,肯百度,肯学习,什么东西都会变得很简单的。

小编也是才学计算机不久,如果有什么问题,欢迎大家指出来

不小心把第二篇删除了。。。。怎么办

python五子棋ai_零基础学Python之—AI五子棋(1)相关推荐

  1. python自学步骤-零基础学Python应该学习哪些入门知识及学习步骤安排

    众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...

  2. 零基础学python免费网课-零基础学Python量化投资,超值线上课程反复回看

    原标题:零基础学Python量化投资,超值线上课程反复回看 超值网络课程 量化投资是一种严谨.系统化的投资方式,相比起传统投资,量化投资风险低回报高,但是它要求投资者使用数据处理分析.计算机编程技术. ...

  3. 零基础学python需要多久-零基础学python大概要多久

    Python是目前公认的全球5大流行语言之一,从云计算.大数据到人工智能,Python无处不在,同时Python被誉为神奇的"胶水语言",因为它能够轻易地操作其他程序,轻易地包装使 ...

  4. 零基础学python需要多久-零基础学Python要多久

    原标题:零基础学Python要多久 这几年Python逐渐被越来越多的人熟知,无论是因为工作还是兴趣,很多人都想学习Python.大部分的人都是零基础学习,自然免不了会问零基础学Python要多久这样 ...

  5. 零基础学python要多久-零基础学Python要多久

    原标题:零基础学Python要多久 这几年Python逐渐被越来越多的人熟知,无论是因为工作还是兴趣,很多人都想学习Python.大部分的人都是零基础学习,自然免不了会问零基础学Python要多久这样 ...

  6. 0基础学python要多久-零基础学Python的过程有多难?需要多久?

    Python是一门简单高效,应用范围广泛的计算机语言.先我们要知道Python已经算是一门相对其他编程语言而言,最适合零基础新手学习的开发语言,换句话说,如果连Python都学不进去就不要考虑进入IT ...

  7. python笔记(零基础学Python)

    <零基础学Python> 1.基础 2.流程控制语句 3.序列的应用 4.字符串.正则表达式 5.函数 6.面向对象 7.模块(库) 8.异常处理+程序调试 9.文件及目录操作 10.Py ...

  8. 学习python好学吗-零基础学python难吗?好学吗?

    Python是一种什么语言? Python是一种计算机程序设计语言.你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的Jav ...

  9. 零基础编程学python还是java_零基础学python还是java 二者有哪些区别

    对于初学者来说,python相对比较简单.python的语法类似于伪代码或普通英语,不需要严格的代码结构,入门简单. 零基础适合python还是java 从语言本身来说,python是出了名的简洁.p ...

最新文章

  1. java如何获取明天的时间_java获取各种格式的时间,获取昨天明天日期,获取一天的开始结束时间...
  2. JAVA入门级教学之(方法-1)
  3. 对ARP病毒攻击的防范和处理及相应工具方法
  4. 科学家组建大数据平台解决科研资源共享难题
  5. [再学Python] - 7 - 文件
  6. FLAT:又快又好的中文命名实体识别模型
  7. sql 怎么获取系统时间
  8. 【ESRI论坛6周年征文】ArcEngine注记(Anno/ Label/Element等)处理专题 -入门篇
  9. 使用教育邮箱享正版Jetbrains 套件,IDEA正版webstrom正版
  10. 燃烧的远征java(二)-开发环境:eclipse 的使用技巧收集
  11. 如何将LaTeX公式拷贝到Word中
  12. c语言实现7段数码管显示,FPGA入门--七段数码管显示
  13. 捋一捋Python的文件处理(上)
  14. 高通8953 Android 9.0 打开user调试串口
  15. (翻译)如何提示用户密码已变更
  16. 推动“海纳众创”,打造“漫天繁星”:中国联通视频彩铃全国创意创新大赛开赛仪式顺利举行!
  17. JS笔记 | JS中的strict model(严格模式)
  18. 解决ORA-00020错误
  19. 微信jsapi获取用户地理位置接口开发(第八课)
  20. 如何学好人力资源管理?方法及书籍推荐

热门文章

  1. 基于Oneplus 7 Pro的Flyme9&MIUI12.5刷机教程
  2. MySQL数据库入门实战教程
  3. Javaweb学习第三天,CSS(知识点来自广陵散老师总结)
  4. nRF51822定时器设置
  5. 【观察】神州数码:向云转型再提速,技术创新再发力
  6. 使用workflow客制出货通知单
  7. 纯千兆电口模块和自适应电口模块的区别
  8. 时间序列分析-2 forecast 、predict
  9. c语言数字的ascii码范围,c的ascii码值是多少?
  10. 隐马尔可夫模型的三个基本问题(例子说明)