# Python实现五子棋人机对战

1)、计算机需要判断胜负

2)、计算机落子的逻辑

• 写出获胜逻辑或者设置所有获胜组合

• 评估棋格获胜分数

• 计算机的攻击与防守

• 棋盘

```# 画棋盘
def GobangWin():
gw = GraphWin('AI Gobang', GRID_WIDTH*COLUMN, GRID_WIDTH*ROW)
gw.setBackground('gray')
for j in range(0, GRID_WIDTH*COLUMN+1, GRID_WIDTH):
l = Line(Point(j, 0), Point(j, GRID_WIDTH*COLUMN))
l.draw(gw)
for i in range(0, GRID_WIDTH*ROW+1, GRID_WIDTH):
l = Line(Point(0, i), Point(GRID_WIDTH*ROW, i))
l.draw(gw)
return gw```
• 棋子

```col =(255, 0, 0)
surf.fill((255, 255, 255))
pygame.gfxdraw.aacircle(surf, x, y, 30, col)
pygame.gfxdraw.filled_circle(surf, x, y, 30, col)```
• 落子

```from graphics import *
#设置画布窗口名和尺寸
win = GraphWin('hehe', 666, 666)
#关闭画布窗口
win.getMouse()
win.close()
#画点
pt = Point(100, 100)
pt.draw(win)
#画圆
cir = Circle(Point(200, 200), 75)
cir.draw(win)
cir.setOutline('red') #外围轮廓颜色
cir.setFill('yellow') #填充颜色
#画线
line = Line(Point(650, 100), Point(250, 100))
line.draw(win)
#画矩形
rect = Rectangle(Point(300, 300), Point(400, 400))
rect.setFill('red') #填充颜色
rect.draw(win)
#画椭圆
oval = Oval(Point(450, 450), Point(600, 600))
oval.setFill('red') #填充颜色
oval.draw(win)
#显示文字
message = Text(Point(win.getWidth()/2, 20), 'Click anywhere to quit.')
message.draw(win)```
• 判断输赢

```# 四种情况
def is_GameOver(list_now):
for c in range(COLUMN):
for r in range(ROW):
if r < ROW - 4 and (r, c) in list_now and (r+1, c) in list_now and (r+2, c) in list_now and (r+3, c) in list_now and (r+4, c) in list_now:
return True
elif c < COLUMN - 4 and (r, c) in list_now and (r, c+1) in list_now and (r, c+2) in list_now and (r, c+3) in list_now and (r, c+4) in list_now:
return True
elif r < ROW - 4 and c < COLUMN - 4 and (r, c) in list_now and (r+1, c+1) in list_now and (r+2, c+2) in list_now and (r+3, c+3) in list_now and (r+4, c+4) in list_now:
return True
elif r > 3 and c < COLUMN - 4 and (r, c) in list_now and (r-1, c+1) in list_now and (r-2, c+2) in list_now and (r-3, c+3) in list_now and (r-4, c+4) in list_now:
return True
return False```

AlphaZero实战：从零学下五子棋（附代码）

https://github.com/junxiaosong/AlphaZero_Gomoku

0 条评论

• ### 太鸡冻了！我用 Python 偷偷查到暗恋女生的名字

不知道你有没有经历过这样一个场景，好不容易拿到一个妹子的手机号，但是又不好意思去搭讪，问一下对方的名字。

• ### 一道SQL题的多种解法

自然的想法，寻找每个店铺是否连续三天都有销售额。利用现有的表，构造一个中间表，中间表既有当前日期的销售额，又有当前日期后两天的销售额，然后筛选销售额大于0的店铺...

• ### 如何发一条空白的朋友圈

所谓空白的朋友圈就是一条看起来没有文字的朋友圈，因为发朋友圈的时候不输入文字是没法发送的。不可见字符是有文字内容的，只是人的肉眼看不见，所以相当于空白。

• ### Python实现五子棋人机对战 | CSDN博文精选

五子棋是常见的一款小游戏，五子棋问题是人工智能中的一个经典问题。这篇文章主要介绍了Python版本五子棋的实现代码，大家可以做个参考，与我的傻儿子对弈一下。

• ### GitLabCI系列之流水线语法第三部分

rules允许按顺序评估单个规则对象的列表，直到一个匹配并为作业动态提供属性. 请注意， rules不能only/except与only/except组合使用。

• ### 免疫浸润：材料和方法写作（oncomine）

对于从数据库获得的处理和呈现，我们还要用语言进行描述，处理过程就是材料和方法（Materials and Methods），呈现就是结果（Results）。如何...

• ### 是时候开始学习一波 MySQL 的私人秘书 binlog 了

版权声明：本文为博主原创文章，未经博主允许不得转载。 https://blog.csdn.n...

• ### 五个解决方案让MongoDB拥有RDBMS的鲁棒性事务

【编者按】在分布式存储解决方案中谈事务一直是件很痛苦的事情，而事务也成了大部分NoSQL解决方案短板所在。近日，MongoDB公司的Antoine Girbal...

• ### 如何为回归问题，选择最合适的机器学习方法？

在目前的机器学习领域中，最常见的三种任务就是：回归分析、分类分析、聚类分析。在之前的文章中，我曾写过一篇《sklearn 与分类算法》。那么什么是回归呢？

• ### ElasticSearch权威指南学习（结构化查询）

GET /index_2014*/type1,type2/_search {}