




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中數(shù)學(xué)蘇科版七年級上冊2.4 絕對值與相反數(shù)教案設(shè)計
- 北師大版(2013)六年級下冊第二十九課 小小理財師教案配套
- 五一節(jié)前安全教育培訓(xùn)
- 重癥肌無力小講課
- 浙教版七年級科學(xué)上 4.8 物理性質(zhì)和化學(xué)性質(zhì)教學(xué)設(shè)計
- 二婚夫妻合同終止條款
- 人教版小學(xué)二年級上冊數(shù)學(xué) 第4單元 第3課時 5的乘法口訣 教案
- 供應(yīng)商合作合同樣本
- 人教版實驗活動1 氧氣的實驗室制取與性質(zhì)教案配套
- 2025網(wǎng)絡(luò)視頻廣告投放合同范本
- 第2單元 社會服務(wù)(整單元教學(xué)設(shè)計)-2023-2024學(xué)年四年級下冊綜合實踐活動蘇教版
- 漢中漢源電力招聘試題及答案
- 石料場開采施工方案
- 探月精神隊課件
- MOOC 大學(xué)生創(chuàng)新與創(chuàng)業(yè)實踐-西南交通大學(xué) 中國大學(xué)慕課答案
- 第三節(jié)鋼筋混凝土排架結(jié)構(gòu)單層工業(yè)廠房結(jié)構(gòu)吊裝課件
- 普通高中學(xué)生綜合素質(zhì)評價檔案
- 送達地址確認書(訴訟類范本)
- 產(chǎn)品路標規(guī)劃-綜述2.1
- 2023年鄭州工業(yè)應(yīng)用技術(shù)學(xué)院單招考試面試題庫及答案解析
- 《電子制造技術(shù)-電子封裝》配套教學(xué)課件
評論
0/150
提交評論