python怎么实现五子棋双人对弈(python,开发技术)

时间:2024-04-29 01:21:50 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

我用的是pygame模块来制作窗口

代码如下:

#1、引入pygame和pygame.localsimportpygamefrompygame.localsimport*importtimeimportsysinitChessList=[]initRole=2#代表白子下2:代表当前是黑子下resultFlag=0userFlag=TrueclassStornPoint():def__init__(self,x,y,value=0):''':paramx:代表x轴坐标:paramy:代表y轴坐标:paramvalue:当前坐标点的棋子:0:没有棋子1:白子2:黑子'''self.x=xself.y=yself.value=valuepassdefinitChessSquare(x,y):'''初始化棋盘的坐标:paramx::paramy::return:'''#使用二维列表保存了棋盘是的坐标系,和每个落子点的数值foriinrange(15):#每一行的交叉点坐标rowList=[]forjinrange(15):#每一列的交叉点坐标pointX=x+j*40pointY=y+i*40#value=0sp=StornPoint(pointX,pointY,0)rowList.append(sp)passinitChessList.append(rowList)pass#处理事件defeventHandler():globaluserFlag'''监听各种事件:return:'''foreventinpygame.event.get():globalinitRole#监听点积退出按钮事件ifevent.type==QUIT:pygame.quit()sys.exit()pass#监听鼠标点积事件ifevent.type==MOUSEBUTTONDOWN:x,y=pygame.mouse.get_pos()#print((x,y))i=j=0fortempininitChessList:forpointintemp:ifx>=point.x-15andx<=point.x+15\andy>=point.y-15andy<=point.y+15:#当前区域没有棋子,并且是白子下ifpoint.value==0andinitRole==1anduserFlag:point.value=1judgeResult(i,j,1)initRole=2#切换棋子颜色passelifpoint.value==0andinitRole==2anduserFlag:point.value=2judgeResult(i,j,2)initRole=1#切换棋子颜色passbreakpassj+=1passi+=1j=0passpasspass#判断输赢函数defjudgeResult(i,j,value):globalresultFlagflag=False#用于判断是否已经判决出输赢forxinrange(j-4,j+5):#水平方向有没有出现5连ifx>=0andx+4<15:ifinitChessList[i][x].value==valueand\initChessList[i][x+1].value==valueand\initChessList[i][x+2].value==valueand\initChessList[i][x+3].value==valueand\initChessList[i][x+4].value==value:flag=Truebreakpassforxinrange(i-4,i+5):#垂直方向有没有出现5连ifx>=0andx+4<15:ifinitChessList[x][j].value==valueand\initChessList[x+1][j].value==valueand\initChessList[x+2][j].value==valueand\initChessList[x+3][j].value==valueand\initChessList[x+4][j].value==value:flag=Truebreakpass#判断东北方向的对角线是否出现了5连forx,yinzip(range(j+4,j-5,-1),range(i-4,i+5)):ifx>=0andx+4<15andy+4>=0andy<15:ifinitChessList[y][x].value==valueand\initChessList[y-1][x+1].value==valueand\initChessList[y-2][x+2].value==valueand\initChessList[y-3][x+3].value==valueand\initChessList[y-4][x+4].value==value:flag=Truebreakpasspasspass#判断西北方向的对角是否出现了五连forx,yinzip(range(j-4,j+5),range(i-4,i+5)):ifx>=0andx+4<15andy>=0andy+4<15:ifinitChessList[y][x].value==valueand\initChessList[y+1][x+1].value==valueand\initChessList[y+2][x+2].value==valueand\initChessList[y+3][x+3].value==valueand\initChessList[y+4][x+4].value==value:flag=Truebreakpasspasspassifflag:resultFlag=valuepasspass#加载素材defmain():initRole=2#代表白子下2:代表当前是黑子下globalresultFlag,initChessListinitChessSquare(27,27)#初始化棋牌pygame.init()#初始化游戏环境#创建游戏窗口screen=pygame.display.set_mode((620,620),0,0)#第一个参数是元组:窗口的长和宽#添加游戏标题pygame.display.set_caption("五子棋小游戏")#图片的加载background=pygame.image.load('images/bg.png')blackStorn=pygame.image.load('images/storn_black.png')whiteStorn=pygame.image.load('images/storn_white.png')winStornW=pygame.image.load('images/white.png')winStornB=pygame.image.load('images/black.png')rect=blackStorn.get_rect()whileTrue:screen.blit(background,(0,0))#更新棋盘棋子fortempininitChessList:forpointintemp:ifpoint.value==1:screen.blit(whiteStorn,(point.x-18,point.y-18))passelifpoint.value==2:screen.blit(blackStorn,(point.x-18,point.y-18))passpasspass#如果已经判决出输赢ifresultFlag>0:initChessList=[]#清空棋盘initChessSquare(27,27)#重新初始化棋盘ifresultFlag==1:screen.blit(winStornW,(50,100))else:screen.blit(winStornB,(50,100))passpygame.display.update()ifresultFlag>0:time.sleep(3)resultFlag=0passeventHandler()passpassif__name__=="__main__":main()pass

插图:放在同一目录下的images文件夹里

bg.png

python怎么实现五子棋双人对弈

storn_white.png

python怎么实现五子棋双人对弈

storn_black.png

python怎么实现五子棋双人对弈

white.png

python怎么实现五子棋双人对弈

black.png

python怎么实现五子棋双人对弈

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:python怎么实现五子棋双人对弈的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:ES6基础语法之Map和Set对象怎么用下一篇:

17 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18