嘿!您似乎在 United States,您想使用我们的 English 网站吗?
Switch to English site
Skip to main content

基于Python的智能下棋手

作者:黄佳妮 熊慧兰 王一涵

指导教师:杨佳庆

项目介绍:

1,传统下棋需要至少两人同时在一起,且需要棋盘,棋子等,对时间环境要求较高。

2,采用疫情在全球蔓延,为了防止聚众,很多爱好下棋的人们无法实现传统的面对面下棋。

3,现有各大应用市场充斥分类下棋软件,软件功能单一,只有一种棋类。当用户想进行其他棋类游戏,则需下载新的软件,给用户增加了很多麻烦。

4,本项目使用的是Python语言,界面是使用tkinter库完成设计的。

原理原理:

ECB019B1-382A-4266-B25C-5B523AA43C14-1_bed3a66ad08375cb79cb1d0efb17a81cee45aeb6.png

ECB019B1-382A-4266-B25C-5B523AA43C14-2_08e027d65ef1873b74ceff3540956f7864ec884f.png

具体步骤:

一,GUI界面

1,初始棋类模式选择界面

211_53d5e0e90f385790a6c8670836f00329130fd30b.png

2,游戏模式选择界面

_5_2_9bb4319c94cd226142df3172a485ef3ae99108ba.png

_6_4ec10b2ec3385094ab4adba7873faf3904e5a5ad.png

二,井字棋游戏

1,游戏界面

_5_5c43f093a02e74c593f966a0854cecdb1555006b.png

2,人机下棋逻辑梳理

遍历棋盘空位,假设在空位上放置电脑方执子,判断电脑是否胜利,是则下这一步,获得胜利。之后在假设在空位上放置玩家执子,判断玩家是否胜利,是则下这一步,阻止玩家胜利。以上两种情况都没有出现,则走当前的最佳位置,最佳位置顺位为:中心,四个角,四个边。

ECB019B1-382A-4266-B25C-5B523AA43C14-1_bed3a66ad08375cb79cb1d0efb17a81cee45aeb6.png

3,胜负情况判定

横,竖,对角线有三连相同的颜色即为胜利。如若棋盘下满后尚未分出胜负即为平局。

4,悔棋功能介绍

只需从暂时中流行弹出上一步的棋局进行重新布局即可。

三,五子棋游戏

1,游戏界面

_10_bd63000c6ee36649a83c1342c67f6509ce2d251a.png

2,人机下棋逻辑梳理

遍面棋盘空位,对每个空位进行打分,下分数最高的那一步。扫面空位周围连子数量,连子越多,分度。然后扫描空位周围,有其他颜色的棋子进行扣分,空位加分。

ECB019B1-382A-4266-B25C-5B523AA43C14-2_08e027d65ef1873b74ceff3540956f7864ec884f.png

3,胜负情况判定

横,竖,对角线有五连相同颜色即为胜利。如若棋盘下满后尚未分出胜负即为平局。

4,悔棋功能介绍

只需从暂时中流行弹出上一步的棋局进行重新布局即可。

总结

实现了单机下棋功能,有效改善传统下棋的弊端,可灵活选择时间地点,只需一台电脑即可下棋,避免人群聚集问题。可进行人机,人对战模式选择,玩法丰富,在结束后由相应语音播报等功能的添加,增添了可玩性。

目前只是单机游戏,未来可多加开发在线联机功能,因此人人对战模式不再是自己和自己的棋。目前可实现井字棋及五子棋两种棋类,在未来可继续添加其他棋类以丰富该项目,且在添加过程中只是对主界面进行添加,方便修改。

点击这里,访问GITHUB源代码

DesignSpark Electrical Logolinkedin