日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

python實現掃雷游戲

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

本文為大家分享了python實現掃雷游戲的具體代碼,供大家參考,具體內容如下

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

具體的功能代碼如下:

# -*- coding: utf-8 -*-import randomimport sysfrom Tkinter import *’’’想要學習Python?’’’class Model: ''' 核心數據類,維護一個矩陣 ''' 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): ''' 設置某個位置的值為value ''' self.items[r][c]=value; def checkValue(self,r,c,value): ''' 檢測某個位置的值是否為value ''' if self.items[r][c]!=-1 and self.items[r][c]==value: self.items[r][c]=-1 #已經檢測過 return True else: return False def countValue(self,r,c,value): ''' 統計某個位置周圍8個位置中,值為value的個數 ''' 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): ''' 點擊事件 case 1:是雷,所有都顯示出來,游戲結束 case 2:是周圍雷數為0的,遞歸觸發周圍8個button的點擊事件 case 3:周圍雷數不為0的,顯示周圍雷數 ''' 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個暫定 ''' 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()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
啪啪亚洲精品| 久久av资源| 久久青草久久| 欧美va天堂| 天堂av在线一区| 日韩专区一卡二卡| 日本成人在线一区| 老牛国内精品亚洲成av人片| 精品久久中文| 日本а中文在线天堂| 91精品推荐| 综合激情网...| 欧美在线精品一区| 久久精品免视看国产成人| 国产精品香蕉| 成人美女视频| 免费不卡在线视频| 久久影院资源站| 欧美午夜精品一区二区三区电影| 国产精品美女| 国产日本久久| 蜜臀av免费一区二区三区| 天堂久久av| 欧美xxxx中国| 亚洲精一区二区三区| 水蜜桃久久夜色精品一区| 国产亚洲精品自拍| 你懂的国产精品| 在线综合亚洲| 欧美a在线观看| 91久久久久| 国产一区二区三区四区二区 | 久久国产三级精品| 亚洲国产综合在线看不卡| 欧美日一区二区三区在线观看国产免| 亚洲成a人片| 国产精品一页| 亚洲精品婷婷| 最新日韩欧美| 国内亚洲精品| 在线一区av| 久久99久久久精品欧美| 99视频一区| 久久精品不卡| 国产精品亚洲一区二区三区在线观看| 午夜久久av| 亚洲区第一页| 亚洲一区二区小说| 午夜在线观看免费一区| 欧美日韩中文字幕一区二区三区| 精品视频国内| 韩日一区二区| 国产精品99一区二区三| 久久精品伊人| 国产精品扒开腿做爽爽爽软件| 日日夜夜免费精品视频| 亚洲精品乱码日韩| 欧美综合另类| 蜜桃成人av| 亚洲国产一区二区三区在线播放| 天堂中文av在线资源库| 色在线中文字幕| 欧美二三四区| 美女久久久久| 日韩一区欧美二区| 婷婷精品在线| 国产高清精品二区| 欧美交a欧美精品喷水| 国产一区二区三区四区五区传媒| 欧美xxxx中国| 午夜精品网站| 日韩精品亚洲一区二区三区免费| 日韩精品一二三区| 亚洲欧美一级| 国产精品国产三级在线观看| 国产乱码午夜在线视频| 中文久久精品| 国产亚洲精品精品国产亚洲综合| 国产精品2023| 亚洲先锋成人| 日韩国产在线观看| 精品入口麻豆88视频| 激情婷婷欧美| 欧美日韩视频免费看| 黄色在线网站噜噜噜| 99国产一区| 欧美aaaaaa午夜精品| 蜜臀国产一区| 亚州欧美在线| 久久九九电影| 日韩av不卡在线观看| 九色porny丨国产首页在线| 国产农村妇女精品一区二区| 国产精品2区| 免费一区二区视频| 日韩伦理在线一区| 91精品国产自产精品男人的天堂| 日韩欧美看国产| 国产精品22p| 色综合视频一区二区三区日韩| 一区二区三区四区日本视频| 日韩免费精品| 欧美va天堂| 成人在线超碰| 国产日韩欧美中文在线| 香蕉成人久久| 午夜国产精品视频| 波多视频一区| 不卡专区在线| 国产精品tv| 欧美日一区二区在线观看| 亚洲在线网站| 欧美日韩四区| 亚洲高清久久| 久久狠狠婷婷| 久久激情婷婷| 999精品一区| 亚洲第一区色| 国产资源在线观看入口av| 久久精品天堂| 97se综合| 日本欧美不卡| 99久久久国产精品美女| 性欧美videohd高精| 日韩啪啪电影网| 精品三级久久| 欧美日韩国产传媒| 性欧美长视频| 日韩美女国产精品| 日本成人在线视频网站| 日本99精品| 美女免费视频一区| 91综合网人人| 亚洲三级欧美| 欧美日韩三区| 日本va欧美va欧美va精品| 国产精品主播| av高清不卡| 久久av一区| 久久激五月天综合精品| 麻豆91精品91久久久的内涵| 91视频精品| 亚洲综合不卡| 国产精品v一区二区三区| 日本精品黄色| 国产精品婷婷| 国产精品videossex| 亚洲成av人片一区二区密柚| 久久久久国产精品一区三寸| 精品欧美久久| 国产精品亚洲综合久久| 999久久久国产精品| 视频一区日韩| 欧洲精品一区二区三区| 亚洲性视频在线| 久久免费影院| 免费日韩av片| 成人亚洲精品| 亚洲视频国产| 日韩欧美一区二区三区免费观看| 亚洲精品高潮| 久久久蜜桃一区二区人| 日本午夜精品一区二区三区电影| 精品视频一二| 18国产精品| 美日韩精品视频| 成人羞羞视频在线看网址| 日本va欧美va欧美va精品| 欧美中文一区二区| 国产一区二区精品久| 日韩1区2区3区| 亚洲欧美日韩国产| 在线日韩电影| 精品国产美女a久久9999| 中文不卡在线| 国产视频亚洲| 欧美成人综合| 肉色欧美久久久久久久免费看 | 亚洲在线成人| 欧美成人久久| 亚洲网站视频| 国产亚洲一区二区手机在线观看| 欧美日韩91| 久久国产三级| 97精品国产99久久久久久免费| 欧美日韩国产探花| 狠狠色综合网| 尤物精品在线| 99亚洲视频| 免费久久精品| 一本色道久久精品| 蜜桃久久精品一区二区| 久久99伊人| 四虎在线精品| 97成人超碰| 精品三区视频| 久久久久亚洲| 丝袜美腿亚洲一区二区图片| 在线国产日韩| 国产精品手机在线播放|