资源描述:
《扫雷Python版.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.importrandomimportosimportmsvcrtimporteasyguifromcoloramaimportinit,Foreinit(autoreset=False)classFangkuai:def__init__(self,x=0,y=0,neirong=0,zhuangtai=0):self.x=xself.y=yself.neirong=neirong#0,9,1,2,3,4,5,6,7,8分别为空,雷,数字1-8self.zhuangtai=zhuangtai#0,1,2,3,4分别为未点击,插旗,问号,被点击,错误defgetFan
2、gkuai(self):return[self.x,self.y,self.neirong,self.zhuangtai]classMymap:def__init__(self,xMax=10,yMax=10):self.xMax=xMaxself.yMax=yMaxself.fk=[]self.new_fk=Fangkuai()self.lei_xy=[]deffound_map(self):forxinrange(self.xMax):self.fk.append([])foryinrange(self.yMax):new_fk=Fangkuai(x,y)sel
3、f.fk[x].append([new_fk.getFangkuai()[2],new_fk.getFangkuai()[3]])defbulei(self):foriinrange(lei_sum):whileTrue:self.x=random.randint(0,map_xy_max[0]-1)self.y=random.randint(0,map_xy_max[1]-1)if[self.x,self.y]notinself.lei_xy:self.fk[self.x][self.y][0]=9#这一位的9代表雷self.lei_xy.append([self
4、.x,self.y])..breakdefbushu(self):forjinself.lei_xy:#print('j=',j)#为雷周围布数字forlei_xin[j[0]-1,j[0],j[0]+1]:forlei_yin[j[1]-1,j[1],j[1]+1]:#超出地图不处理if0<=lei_x5、ei_y,'我加一',end='')self.fk[lei_x][lei_y][0]+=1else:#print(lei_x,lei_y,'我不在',end='')pass#print()defgetfk(self):returnself.fkclassState:def__init__(self,fk,x,y):self.fk=fkself.x=xself.y=y#点击defclick(self):ifself.fk[self.x][self.y][1]==0:self.fk[self.x][self.y][1]=3State.click_judge(self,s
6、elf.x,self.y)over=State.game_over(self)returnover#判定点击效果defclick_judge(self,x1,y1):ifself.fk[x1][y1][0]==0:forlei_xin[x1-1,x1,x1+1]:forlei_yin[y1-1,y1,y1+1]:#超出地图不处理if0<=lei_x7、][1]=3State.click_judge(self,lei_x,lei_y)else:passelse:pass#插旗defset_flag(self):ifself.fk[self.x][self.y][1]==3:passelifself.fk[self.x][self.y][1]==2:self.fk[self.x][self.y][1]=0elifself.fk[self.x][self.y][1]==0orself.fk[self.x][self.y][1]==1:self.fk[self.x][self.y][1]+=1else:pass#游戏