




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
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分別為 未點(diǎn)擊,插旗,問(wèn)號(hào),被點(diǎn)擊,錯(cuò)誤 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 #點(diǎn)擊 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 # 判定點(diǎn)擊效果 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、如果已被點(diǎn)擊不處理 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): # 判定是否點(diǎn)到了雷 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): # 如果有雷沒(méi)插旗,繼續(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 # 此項(xiàng)是為防止通過(guò)插旗測(cè)試正確答案,必須點(diǎn)開所有的空地 # 如果有沒(méi)點(diǎn)開的磚塊,繼續(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分別為 未點(diǎn)擊,插旗,問(wèn)號(hào),被點(diǎn)擊 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='簡(jiǎn)單','普通','困難','自定義' xuanguan=easygui.buttonbox('選擇您要玩的難度','選關(guān)',choices) if xuanguan=choices3: fields = '雷區(qū)長(zhǎng)度:', '雷區(qū)寬度:', '雷數(shù):' xuan=easygui.multenterbox('請(qǐng)輸入您要挑戰(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 家電制造行業(yè)職業(yè)健康與安全咨詢項(xiàng)目成果
- 全球化視角下的臺(tái)風(fēng)預(yù)警偏航技術(shù)融合發(fā)展
- 2025至2030中國(guó)汽車導(dǎo)航行業(yè)項(xiàng)目調(diào)研及市場(chǎng)前景預(yù)測(cè)評(píng)估報(bào)告
- 2025至2030中國(guó)冰皮月餅行業(yè)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢研究報(bào)告
- 2025至2030中國(guó)自動(dòng)行尾包裝行業(yè)市場(chǎng)占有率及投資前景評(píng)估規(guī)劃報(bào)告
- 2025至2030中國(guó)自動(dòng)水果切片機(jī)行業(yè)市場(chǎng)深度研究及發(fā)展前景投資可行性分析報(bào)告
- 2025至2030中國(guó)臀部和膝蓋重建行業(yè)市場(chǎng)深度研究及發(fā)展前景投資可行性分析報(bào)告
- 節(jié)能型油分離器設(shè)計(jì)與優(yōu)化研究
- 2025至2030中國(guó)腳手架板行業(yè)深度研究及發(fā)展前景投資評(píng)估分析
- 2025至2030中國(guó)胰腺內(nèi)分泌腫瘤藥物行業(yè)市場(chǎng)占有率及投資前景評(píng)估規(guī)劃報(bào)告
- 2025年貴州省6月28日納雍事業(yè)單位教師崗考試真題及答案
- 區(qū)域消防安全風(fēng)險(xiǎn)評(píng)估規(guī)程DB50-T 1114-2021
- 免疫調(diào)節(jié)治療在腦卒中的運(yùn)用課件
- DB32∕T 186-2015 建筑消防設(shè)施檢測(cè)技術(shù)規(guī)程
- 機(jī)關(guān)檔案管理工作培訓(xùn)PPT課件
- 油輪、化學(xué)品船的基本知識(shí)
- 25T汽車吊檢驗(yàn)報(bào)告
- 變頻空調(diào)中的永磁電機(jī)電感分析
- 高考??颊Z(yǔ)法填空詞性轉(zhuǎn)換匯總
- AOI自動(dòng)光學(xué)檢測(cè)設(shè)備程序編寫
- 廈門護(hù)士延續(xù)注冊(cè)體檢表
評(píng)論
0/150
提交評(píng)論