



免费预览已结束,剩余4页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
import randomimport osimport msvcrtimport easyguifrom colorama import init,Foreinit(autoreset=False)class Fangkuai: def _init_(self,x=0,y=0,neirong=0,zhuangtai=0): self.x=x self.y=y self.neirong=neirong#0,9,1,2,3,4,5,6,7,8分别为 空,雷,数字1-8 self.zhuangtai=zhuangtai#0,1,2,3,4分别为 未点击,插旗,问号,被点击,错误 def getFangkuai(self): return self.x,self.y,self.neirong,self.zhuangtaiclass Mymap: def _init_(self,xMax=10,yMax=10): self.xMax=xMax self.yMax=yMax self.fk= self.new_fk=Fangkuai() self.lei_xy= def found_map(self): for x in range(self.xMax): self.fk.append() for y in range(self.yMax): new_fk = Fangkuai(x,y) self.fkx.append(new_fk.getFangkuai()2,new_fk.getFangkuai()3) def bulei(self): for i in range(lei_sum): while True: self.x = random.randint(0, map_xy_max0 - 1) self.y = random.randint(0, map_xy_max1 - 1) if self.x,self.y not in self.lei_xy: self.fkself.xself.y0=9# 这一位的9代表雷 self.lei_xy.append(self.x,self.y) break def bushu(self): for j in self.lei_xy: # print(j=,j) #为雷周围布数字 for lei_x in j0-1,j0,j0+1: for lei_y in j1-1,j1,j1+1: #超出地图不处理 if 0=lei_xmap_xy_max0 and 0=lei_ymap_xy_max1: #如果是雷不处理 if self.fklei_xlei_y0=9: # print(lei_x,lei_y,我是雷,end=) pass else: # print(lei_x,lei_y,我加一,end=) self.fklei_xlei_y0 += 1 else: # print(lei_x,lei_y,我不在,end=) pass # print() def getfk(self): return self.fkclass State: def _init_(self,fk,x,y): self.fk=fk self.x=x self.y=y #点击 def click(self): if self.fkself.xself.y1=0: self.fkself.xself.y1=3 State.click_judge(self,self.x,self.y) over=State.game_over(self) return over # 判定点击效果 def click_judge(self,x1,y1): if self.fkx1y10 = 0: for lei_x in x1 - 1, x1, x1 + 1: for lei_y in y1 - 1,y1,y1 + 1: # 超出地图不处理 if 0 = lei_x map_xy_max0 and 0 = lei_y map_xy_max1: # 如果已被点击不处理 if self.fklei_xlei_y1 = 3: pass else: self.fklei_xlei_y1 = 3 State.click_judge(self,lei_x,lei_y) else: pass else: pass #插旗 def set_flag(self): if self.fkself.xself.y1=3: pass elif self.fkself.xself.y1=2: self.fkself.xself.y1=0 elif self.fkself.xself.y1=0 or self.fkself.xself.y1=1: self.fkself.xself.y1+=1 else: pass #游戏结束判定 def game_over(self): # 判定是否点到了雷 if self.fkself.xself.y0 = 9: for fk_x in range(len(self.fk): for fk_y in range(len(self.fkfk_x): if self.fkfk_xfk_y1 = 1: if self.fkfk_xfk_y0 != 9: self.fkfk_xfk_y1 = 4 else: pass else: self.fkfk_xfk_y1 = 3 return 3 #游戏获胜判定 def game_win(self): # 判定所有的雷是不是都插了旗- for fk_x in range(len(self.fk): for fk_y in range(len(self.fkfk_x): # 如果有雷没插旗,继续游戏 if self.fkfk_xfk_y0 = 9 and self.fkfk_xfk_y1 != 1: return 1 # 如果有不是雷的插着旗,继续游戏 elif self.fkfk_xfk_y0 != 9 and self.fkfk_xfk_y1 = 1: return 1 # 此项是为防止通过插旗测试正确答案,必须点开所有的空地 # 如果有没点开的砖块,继续游戏 elif self.fkfk_xfk_y1 = 0: return 1 else: pass return 2 def setfk(self): return self.fkclass Model: def _init_(self,fk,start_x,start_y): self.fk=fk self.start_x=start_x self.start_y=start_y self.qishu=lei_sum def dayin(self): os.system(cls) print()#打印开头空行 print(xy,end= ) for top in range(len(self.fk0): print(%2d%top,end=) print(n) for x in range(len(self.fk): print(%2d%x,end= ) for y in range(len(self.fkx): # self.fkxy0 0,9,1,2,3,4,5,6,7,8分别为 空,雷,数字1-8 # self.fkxy1 0,1,2,3分别为 未点击,插旗,问号,被点击 if x=self.start_x and y=self.start_y: print(Fore.GREEN,end=) if self.fkxy1=0: print(,end=) elif self.fkxy1=1: print(Fore.RED+Fore.RESET,end=) self.qishu-=1 elif self.fkxy1=2: print(?,end=) elif self.fkxy1=3: if self.fkxy0=0: print(,end=) elif self.fkxy0=9: print(,end=) elif self.fkxy0=1: print(,end=) elif self.fkxy0=2: print(,end=) elif self.fkxy0=3: print(,end=) elif self.fkxy0=4: print(,end=) elif self.fkxy0=5: print(,end=) elif self.fkxy0=6: print(,end=) elif self.fkxy0=7: print(,end=) elif self.fkxy0=8: print(,end=) #数字 # else: # print(%2d%self.fkxy0,end=) elif self.fkxy1=4: print(,end=) else: pass if x = self.start_x and y = self.start_y and self.fkxy1!=1: print(Fore.RESET,end=) # autoreset = True print()#打印一行后回车 print()#打印结尾空行 print(你还有%d面旗子%self.qishu)class Control: def _init_(self,key,x=0,y=0): self.key=key self.x=x self.y=y #Up, Down, Left,Right def fk_move(self): if ord(self.key) =119: self.x-=1 elif ord(self.key) =115: self.x+=1 elif ord(self.key) =97: self.y-=1 elif ord(self.key) =100: self.y+=1 elif ord(self.key) =106: return j elif ord(self.key) =107: return k elif ord(self.key) = 27: # key nr 27 is escape if easygui.ccbox(是否退出游戏,退出,choices=(是,否): return esc else: pass #边缘判定 if self.x=map_xy_max0: self.x=0 if self.y=map_xy_max1: self.y=0 def get_all(self): return self.x,self.ymap_xy_max=lei_sum=0def cli(): global map_xy_max,lei_sum choices=简单,普通,困难,自定义 xuanguan=easygui.buttonbox(选择您要玩的难度,选关,choices) if xuanguan=choices3: fields = 雷区长度:, 雷区宽度:, 雷数: xuan=easygui.multenterbox(请输入您要挑战的难度,自定义难度,fields) for xuan_key in range(len(xuan:): xuanxuan_key=int(xuanxuan_key) map_xy_max=xuan:2 lei_sum=xuan2 else: guan=choices0:10,10,10, choices1:15,15,30, choices2:20,20,60, map_xy_max=guanxuanguan:2#地图大小 lei_sum=guanxuanguan2 mymap=Mymap(map_xy_max0,map_xy_max1) mymap.found_map() mymap.bulei() mymap.bushu() fk=mymap.getfk() over,win=1,1 start_x=0 start_y=0 while True: model = Model(fk,start_x,start_y) model.dayin() if over = 3: print(游戏失败!) break if win = 2: print(胜利,撒花!) break print(按Esc键退出:n方向键W S A D:) key = msvcrt.getch() cont = Control(key,start_x, start_y) sta
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚财产分割与共同债务处理补充协议样本
- 租赁别墅退房协议范本及环境恢复要求
- 琴行专业教师团队聘用及教学成果分享协议
- 离婚协议中子女抚养权变更及监护权调整执行细节合同
- 互联网科技公司股权转让与用户数据共享合同
- 课件制作大赛开场
- 汽车测试技术与试验试题及答案
- 辅警安全知识培训心得
- 工商银行2025眉山市小语种岗笔试题及答案
- 工商银行2025柳州市小语种岗笔试题及答案
- (教科2024版)科学三年级上册2.1 水到哪里去了 课件(新教材)
- 2025国家能源集团招聘笔试历年参考题库附带答案详解
- 编织课件教学课件
- 新课标(水平三)体育与健康《篮球》大单元教学计划及配套教案(18课时)
- 建筑工人临时用工协议书
- 小儿支气管肺炎课件
- DB32-T 3751-2020公共建筑能源审计标准-(高清现行)
- 销盘式摩擦磨损试验机设计
- 原创领袖的风采-易发久
- 2022年《上海市初中语文课程终结性评价指南》中规定的个文言实词
- 苏教版四年级上册科学全册课件
评论
0/150
提交评论