600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 【定制开发】【M3】基于Python+pygame实现的人机AI对战五子棋游戏(保姆级入门讲解)

【定制开发】【M3】基于Python+pygame实现的人机AI对战五子棋游戏(保姆级入门讲解)

时间:2022-04-13 19:06:26

相关推荐

【定制开发】【M3】基于Python+pygame实现的人机AI对战五子棋游戏(保姆级入门讲解)

一、效果展示

二、功能介绍

五子棋是一种两人对弈的纯策略型棋类游戏。五子棋有两种玩法。玩法一:双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连线者获胜。玩法二:自己形成五子连线就替换对方任意一枚棋子。被替换的棋子可以和对方交换棋子。最后以先出完所有棋子的一方为胜。本代码实现的是第一种玩法。

三、开发环境搭建

首先安装Python,再安装pip命令,最后安装pygame模块。

目前如果你在下载最新版本的安装包,则是已经自带了该工具。

从python官网:/ 下载

​​​

pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装、卸载的功能。pip 官网:/project/pip注意:Python 2.7.9 + 或 Python 3.4+ 以上版本都自带 pip 工具。

你可以通过以下命令来判断是否已安装:pip --version

3. 安装pygame:pip install pygame

四、关键代码

1. 设置棋盘宽高颜色,棋子尺寸等样式

SIZE=30#棋盘每个点之间的间隔Line_Points=19#棋盘每行/每列点数Outer_Width=20#棋盘外宽度Border_Width=4#边框宽度Inside_Width=4#边框跟实际的棋盘之间的间隔Border_Length=SIZE*(Line_Points-1)+Inside_Width*2+Border_Width#边框线的长度Start_X=Start_Y=Outer_Width+int(Border_Width/2)+Inside_Width#网格线起点(左上角)坐标SCREEN_HEIGHT=SIZE*(Line_Points-1)+Outer_Width*2+Border_Width+Inside_Width*2#游戏屏幕的高SCREEN_WIDTH=SCREEN_HEIGHT+200#游戏屏幕的宽Stone_Radius=SIZE//2-3#棋子半径Stone_Radius2=SIZE//2+3Checkerboard_Color=(0xE3,0x92,0x65)#棋盘颜色BLACK_COLOR=(0,0,0)WHITE_COLOR=(255,255,255)RED_COLOR=(200,30,30)BLUE_COLOR=(30,30,200)

2. 绘制棋盘

#画棋盘def_draw_checkerboard(screen):#填充棋盘背景色screen.fill(Checkerboard_Color)#画棋盘网格线外的边框pygame.draw.rect(screen,BLACK_COLOR,(Outer_Width,Outer_Width,Border_Length,Border_Length),Border_Width)#画网格线foriinrange(Line_Points):pygame.draw.line(screen,BLACK_COLOR,(Start_Y,Start_Y+SIZE*i),(Start_Y+SIZE*(Line_Points-1),Start_Y+SIZE*i),1)forjinrange(Line_Points):pygame.draw.line(screen,BLACK_COLOR,(Start_X+SIZE*j,Start_X),(Start_X+SIZE*j,Start_X+SIZE*(Line_Points-1)),1)

3.胜负判定

def_get_direction_score(self,point,x_offset,y_offset):count=0#落子处我方连续子数_count=0#落子处对方连续子数space=None#我方连续子中有无空格_space=None#对方连续子中有无空格both=0#我方连续子两端有无阻挡_both=0#对方连续子两端有无阻挡#如果是1表示是边上是我方子,2表示敌方子flag=self._get_stone_color(point,x_offset,y_offset,True)ifflag!=0:forstepinrange(1,6):x=point.X+step*x_offsety=point.Y+step*y_offsetif0<=x<self._line_pointsand0<=y<self._line_points:ifflag==1:ifself._checkerboard[y][x]==self._my.Value:count+=1ifspaceisFalse:space=Trueelifself._checkerboard[y][x]==self._opponent.Value:_both+=1breakelse:ifspaceisNone:space=Falseelse:break#遇到第二个空格退出elifflag==2:ifself._checkerboard[y][x]==self._my.Value:_both+=1breakelifself._checkerboard[y][x]==self._opponent.Value:_count+=1if_spaceisFalse:_space=Trueelse:if_spaceisNone:_space=Falseelse:breakelse:#遇到边也就是阻挡ifflag==1:both+=1elifflag==2:_both+=1ifspaceisFalse:space=None

五、启动命令

启动游戏:python aivsman.py

重置游戏: 任一方获胜后,按esc或enter键复原初始状态

六、源码下载

【源码】【G1】基于Python+pygame实现的人机AI对战五子棋游戏.zip-其他文档类资源-CSDN下载

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。