久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

python實(shí)現(xiàn)掃雷游戲

瀏覽:94日期:2022-08-04 14:25:11

本文為大家分享了python實(shí)現(xiàn)掃雷游戲的具體代碼,供大家參考,具體內(nèi)容如下

本文實(shí)例借鑒mvc模式,核心數(shù)據(jù)為model,維護(hù)1個(gè)矩陣,0表無雷,1表雷,-1表已經(jīng)檢測(cè)過。本例使用python的tkinter做gui,由于沒考慮可用性問題,因此UI比較難看,pygame更有趣更強(qiáng)大更好看,做這些小游戲更合適,感興趣的讀者可以嘗試一下!

具體的功能代碼如下:

# -*- coding: utf-8 -*-import randomimport sysfrom Tkinter import *’’’想要學(xué)習(xí)Python?’’’class Model: ''' 核心數(shù)據(jù)類,維護(hù)一個(gè)矩陣 ''' def __init__(self,row,col): self.width=col self.height=row self.items=[[0 for c in range(col)] for r in range(row)] def setItemValue(self,r,c,value): ''' 設(shè)置某個(gè)位置的值為value ''' self.items[r][c]=value; def checkValue(self,r,c,value): ''' 檢測(cè)某個(gè)位置的值是否為value ''' if self.items[r][c]!=-1 and self.items[r][c]==value: self.items[r][c]=-1 #已經(jīng)檢測(cè)過 return True else: return False def countValue(self,r,c,value): ''' 統(tǒng)計(jì)某個(gè)位置周圍8個(gè)位置中,值為value的個(gè)數(shù) ''' count=0 if r-1>=0 and c-1>=0: if self.items[r-1][c-1]==1:count+=1 if r-1>=0 and c>=0: if self.items[r-1][c]==1:count+=1 if r-1>=0 and c+1<=self.width-1: if self.items[r-1][c+1]==1:count+=1 if c-1>=0: if self.items[r][c-1]==1:count+=1 if c+1<=self.width-1 : if self.items[r][c+1]==1:count+=1 if r+1<=self.height-1 and c-1>=0: if self.items[r+1][c-1]==1:count+=1 if r+1<=self.height-1 : if self.items[r+1][c]==1:count+=1 if r+1<=self.height-1 and c+1<=self.width-1: if self.items[r+1][c+1]==1:count+=1 return count class Mines(Frame): def __init__(self,m,master=None): Frame.__init__(self,master) self.model=m self.initmine() self.grid() self.createWidgets() def createWidgets(self): #top=self.winfo_toplevel() #top.rowconfigure(self.model.height*2,weight=1) #top.columnconfigure(self.model.width*2,weight=1) self.rowconfigure(self.model.height,weight=1) self.columnconfigure(self.model.width,weight=1) self.buttongroups=[[Button(self,height=1,width=2) for i in range(self.model.width)] for j in range(self.model.height)] for r in range(self.model.width): for c in range(self.model.height): self.buttongroups[r][c].grid(row=r,column=c) self.buttongroups[r][c].bind(’<Button-1>’,self.clickevent) self.buttongroups[r][c][’padx’]=r self.buttongroups[r][c][’pady’]=c def showall(self): for r in range(model.height): for c in range(model.width): self.showone(r,c) def showone(self,r,c): if model.checkValue(r,c,0): self.buttongroups[r][c][’text’]=model.countValue(r,c,1) else: self.buttongroups[r][c][’text’]=’Mines’ def recureshow(self,r,c): if 0<=r<=self.model.height-1 and 0<=c<=self.model.width-1: if model.checkValue(r,c,0) and model.countValue(r,c,1)==0: self.buttongroups[r][c][’text’]=’’ self.recureshow(r-1,c-1) self.recureshow(r-1,c) self.recureshow(r-1,c+1) self.recureshow(r,c-1) self.recureshow(r,c+1) self.recureshow(r+1,c-1) self.recureshow(r+1,c) self.recureshow(r+1,c+1) elif model.countValue(r,c,1)!=0: self.buttongroups[r][c][’text’]=model.countValue(r,c,1) else: pass def clickevent(self,event): ''' 點(diǎn)擊事件 case 1:是雷,所有都顯示出來,游戲結(jié)束 case 2:是周圍雷數(shù)為0的,遞歸觸發(fā)周圍8個(gè)button的點(diǎn)擊事件 case 3:周圍雷數(shù)不為0的,顯示周圍雷數(shù) ''' r=int(str(event.widget[’padx’])) c=int(str(event.widget[’pady’])) if model.checkValue(r,c,1):#是雷 self.showall() else:#不是雷 self.recureshow(r,c) def initmine(self): ''' 埋雷,每行埋height/width+2個(gè)暫定 ''' r=random.randint(1,model.height/model.width+2) for r in range(model.height): for i in range(2): rancol=random.randint(0,model.width-1) model.setItemValue(r,rancol,1) def printf(self): ''' 打印 ''' for r in range(model.height): for c in range(model.width): print model.items[r][c], print ’/n’ def new(self): ''' 重新開始游戲 ''' pass if __name__==’__main__’: model=Model(10,10) root=Tk() #menu menu = Menu(root) root.config(menu=menu) filemenu = Menu(menu) menu.add_cascade(label='File', menu=filemenu) filemenu.add_command(label='New',command=new) filemenu.add_separator() filemenu.add_command(label='Exit', command=root.quit) #Mines m=Mines(model,root) #m.printf() root.mainloop()

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 先锋av资源网 | 国产精品二区一区二区aⅴ污介绍 | 中文字幕视频一区 | 色一色视频 | a在线观看免费视频 | 久久成人毛片 | 国产精品国产精品国产专区不蜜 | 国产精品夜夜春夜夜爽久久电影 | 日本精品一区二区三区视频 | 日韩精品视频免费看 | 亚洲国产精品成人 | 中文字幕一级 | 日韩欧美在线播放 | 日韩欧美国产精品综合嫩v 亚洲欧美日韩在线 | 国产免费视频在线 | 午夜精品成人一区二区 | 精品入口麻豆88视频 | 国产一级免费在线 | 国产偷自视频区视频 | 亚洲va中文字幕 | 伊人免费视频 | 亚洲网站在线观看 | 久久久久中文字幕 | 国产日韩欧美综合 | 国产高清在线观看 | 国产区视频在线观看 | 国产一区二区三区四区在线观看 | 国产毛片视频 | 欧美日韩精品一区二区在线播放 | 免费观看成人性生生活片 | 国产96在线视频 | 成人免费在线观看视频 | 婷婷激情综合 | 精品国产乱码久久久久久久软件 | 久久精品网 | 久久久精品免费观看 | 日韩精品一区二区三区四区视频 | 暖暖成人免费视频 | 国产精品久久久久久久久久新婚 | 羞羞视频在线观看免费 | 日韩精品中文字幕在线播放 |