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

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```

https://pan.baidu.com/s/16aSLqCKXNX1XVAt_cTcV4Q

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

https://github.com/junxiaosong/AlphaZero_Gomoku

0 条评论

• 如何在3天内拿下DigSci大赛的亚军？| DigSci科学数据挖掘大赛

【导读】本文将基于作者在中国计算机大会方案宣讲PPT中的内容，给出此次比赛的完整方案，主要从赛题理解、建模核心思路、算法核心思想等角度阐述，同时对相关细节进行了...

• 800万中文词，腾讯AI Lab开源大规模NLP数据集

10 月19 日，腾讯 AI Lab 宣布开源大规模、高质量的中文词向量数据。该数据包含 800 多万中文词汇。

• “误入”清华夸夸群？一行Python代码帮你写个机器人

我想这个功能AINLP双语聊天机器人无名可以有啊，虽然还做不到高级的个性化，但是最简单的起码是可以做到的，所以说干就干，用一行Python代码实现了这个功能： ...

• Python实现五子棋人机对战

五子棋是常见的一款小游戏，五子棋问题是人工智能中的一个经典问题。这篇文章主要介绍了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 {}