![掃雷Python版_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/4/1ec82cc2-ea25-4a28-9ff9-a4303cb15bd0/1ec82cc2-ea25-4a28-9ff9-a4303cb15bd01.gif)
![掃雷Python版_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/4/1ec82cc2-ea25-4a28-9ff9-a4303cb15bd0/1ec82cc2-ea25-4a28-9ff9-a4303cb15bd02.gif)
![掃雷Python版_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/4/1ec82cc2-ea25-4a28-9ff9-a4303cb15bd0/1ec82cc2-ea25-4a28-9ff9-a4303cb15bd03.gif)
![掃雷Python版_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/4/1ec82cc2-ea25-4a28-9ff9-a4303cb15bd0/1ec82cc2-ea25-4a28-9ff9-a4303cb15bd04.gif)
![掃雷Python版_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/4/1ec82cc2-ea25-4a28-9ff9-a4303cb15bd0/1ec82cc2-ea25-4a28-9ff9-a4303cb15bd05.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、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分別為 空,雷,數(shù)字1-8 self.zhuangtai=zhuangtai#0,1,2,3,4分別為 未點擊,插旗,問號,被點擊,錯誤 def getFa
2、ngkuai(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) s
3、elf.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,se
4、lf.y) break def bushu(self): for j in self.lei_xy: # print('j=',j) #為雷周圍布數(shù)字 for lei_x in j0-1,j0,j0+1: for lei_y in j1-1,j1,j1+1: #超出地圖不處理 if 0<=lei_x<map_xy_max0 and 0<=lei_y<map_xy_max1: #如果是雷不處理 if self.fklei_xlei_y0=9: # print(lei_x,lei_y,'我是雷',end='') pass el
5、se: # 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.
6、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: #
7、如果已被點擊不處理 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.fks
8、elf.xself.y1+=1 else: pass #游戲結(jié)束判定 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_
9、win(self): # 判定所有的雷是不是都插了旗- for fk_x in range(len(self.fk): for fk_y in range(len(self.fkfk_x): # 如果有雷沒插旗,繼續(xù)游戲 if self.fkfk_xfk_y0 = 9 and self.fkfk_xfk_y1 != 1: return 1 # 如果有不是雷的插著旗,繼續(xù)游戲 elif self.fkfk_xfk_y0 != 9 and self.fkfk_xfk_y1 = 1: return 1 # 此項是為防止通過插旗測試正確答案,必須點開所有的空地 # 如果有沒點開的磚塊,繼續(xù)游戲 eli
10、f 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=' ') f
11、or 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分別為 空,雷,數(shù)字1-8 # self.fkxy1 0,1,2,3分別為 未點擊,插旗,問號,被點擊 if x=self.start_x and y=self
12、.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='')
13、 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('
14、9;,end='') elif self.fkxy0=6: print('',end='') elif self.fkxy0=7: print('',end='') elif self.fkxy0=8: print('',end='') #數(shù)字 # else: # print('%2d'%self.fkxy0,end='') elif self.fkxy1=4: print('×',end='') else:
15、pass if x = self.start_x and y = self.start_y and self.fkxy1!=1: print(Fore.RESET,end='') # autoreset = True print()#打印一行后回車 print()#打印結(jié)尾空行 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):
16、 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('是否退出游
17、戲','退出',choices=('是','否'): return 'esc' else: pass #邊緣判定 if self.x<0: self.x=map_xy_max0-1 if self.x>=map_xy_max0: self.x=0 if self.y<0: self.y=map_xy_max1-1 if self.y>=map_xy_max1: self.y=0 def get_all(self): return self.x,self.ymap_xy_max=lei_sum=0de
18、f cli(): global map_xy_max,lei_sum choices='簡單','普通','困難','自定義' xuanguan=easygui.buttonbox('選擇您要玩的難度','選關(guān)',choices) if xuanguan=choices3: fields = '雷區(qū)長度:', '雷區(qū)寬度:', '雷數(shù):' xuan=easygui.multenterbox('請輸入您要挑戰(zhàn)的難度','自定義難度',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
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年石棉摩擦制品項目可行性研究報告
- 2025至2031年中國電動玩具飛機行業(yè)投資前景及策略咨詢研究報告
- 2025年橡膠發(fā)泡墊項目可行性研究報告
- 2025至2031年中國手搖交直流發(fā)電機行業(yè)投資前景及策略咨詢研究報告
- 2025年履帶式自動數(shù)粒包裝線項目可行性研究報告
- 2025年交變負(fù)荷試驗機項目可行性研究報告
- 2025年202含氫硅油項目可行性研究報告
- 2025至2030年金屬沙發(fā)項目投資價值分析報告
- 2025至2030年蓄熱瓷管項目投資價值分析報告
- 2025至2030年電動日期編碼機項目投資價值分析報告
- 贏在團隊執(zhí)行力課件
- 慢性胰腺炎課件
- 北京理工大學(xué)應(yīng)用光學(xué)課件第四章
- 陰道鏡幻燈課件
- 2022年山東司法警官職業(yè)學(xué)院單招語文試題及答案解析
- PCB行業(yè)安全生產(chǎn)常見隱患及防范措施課件
- DB32∕T 186-2015 建筑消防設(shè)施檢測技術(shù)規(guī)程
- 2022年福建泉州中考英語真題【含答案】
- 汽車座椅骨架的焊接夾具畢業(yè)設(shè)計說明書(共23頁)
- 露天礦山職業(yè)危害預(yù)先危險分析表
- 淺談固定資產(chǎn)的審計
評論
0/150
提交評論