亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Python > 正文

基于Python實現的掃雷游戲實例代碼

2020-02-23 05:37:38
字體:
來源:轉載
供稿:網友

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

具體的功能代碼如下:

# -*- coding: utf-8 -*-import randomimport sysfrom Tkinter import *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):  """  重新開始游戲  """  passif __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()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品国产自产在线老师啪| 日韩av不卡电影| 久久成人精品一区二区三区| 欧美精品久久久久a| 国产免费成人av| 亚洲综合自拍一区| www.日本久久久久com.| 国产99视频在线观看| 亚洲精美色品网站| 国产精品黄色av| 午夜精品久久久久久99热软件| 亚洲福利在线看| 日本伊人精品一区二区三区介绍| 亚洲综合在线中文字幕| 久久久亚洲天堂| 精品国产一区二区在线| 热门国产精品亚洲第一区在线| 国产精品女人久久久久久| 亚洲一区二区在线播放| 97超碰蝌蚪网人人做人人爽| 欧美激情亚洲视频| 日韩在线免费高清视频| 国内精品中文字幕| 国产日韩精品电影| 国产一区二区精品丝袜| 国产精品96久久久久久又黄又硬| 不卡在线观看电视剧完整版| 亚洲一区二区免费在线| 亚洲国产精品久久精品怡红院| 亚洲欧美另类在线观看| 欧美怡红院视频一区二区三区| 日韩在线观看免费| 色小说视频一区| 欧美激情一级欧美精品| 国产日韩精品视频| 亚洲成av人乱码色午夜| 久热爱精品视频线路一| 久久久久久成人精品| 国产精品三级网站| 日韩高清欧美高清| 欧美国产日韩一区| 91极品视频在线| 亚洲精品mp4| 欧美高清videos高潮hd| 亚洲一区中文字幕| 久久久久久午夜| 亚洲人成电影网站色| 91地址最新发布| 欧美成人第一页| 91精品国产高清久久久久久久久| 国产ts人妖一区二区三区| 亚洲欧美国产精品专区久久| 日韩久久精品电影| 亚洲福利视频久久| 久久精品电影网站| 精品久久国产精品| 国产原创欧美精品| 91国产一区在线| 久久久久久久一区二区| 在线一区二区日韩| 91av国产在线| 欧美日韩在线视频一区二区| 亚洲第一网中文字幕| 色综合91久久精品中文字幕| 97在线视频精品| 日韩有码在线视频| 国产精品美女午夜av| 亚洲品质视频自拍网| 精品亚洲男同gayvideo网站| 久久久久久久成人| 亚洲视频日韩精品| 97av在线视频免费播放| 久久精品欧美视频| 欧美精品福利视频| 国产亚洲成精品久久| 91久久久久久久一区二区| 亚洲性视频网站| 国产欧美日韩高清| 欧美日韩国产成人在线观看| 国产精品久久久久一区二区| 国产噜噜噜噜噜久久久久久久久| 日韩女优在线播放| 成人福利网站在线观看| 欧美精品免费在线观看| 中文字幕欧美国内| 国产97在线视频| 亚洲国语精品自产拍在线观看| 91精品国产九九九久久久亚洲| 成人在线播放av| 欧美成人精品h版在线观看| 91久久国产综合久久91精品网站| 亚洲的天堂在线中文字幕| 欧美视频免费在线观看| 97国产真实伦对白精彩视频8| 欧美激情第1页| 亚洲欧美精品中文字幕在线| 国产一区二区丝袜高跟鞋图片| 欧美一级高清免费播放| 91精品国产91久久久久福利| 欧美精品一区三区| 成人444kkkk在线观看| 97视频在线看| 亚洲欧美国产另类| 欧美夫妻性生活视频| 欧美一级淫片videoshd| 日韩av电影中文字幕| 亚洲欧美日韩精品久久奇米色影视| 欧美理论片在线观看| 亚洲一区二区三区视频播放| 91精品国产高清自在线看超| 国产精品日韩在线观看| 国产精品白嫩初高中害羞小美女| 日韩av在线免费看| 欧美日韩国产区| 中文字幕久热精品视频在线| 日韩在线播放av| 欧美日韩加勒比精品一区| 在线国产精品播放| 欧美激情欧美激情| y97精品国产97久久久久久| 亚洲人成绝费网站色www| 日韩亚洲国产中文字幕| 国产精品久久二区| 精品一区精品二区| 日韩亚洲一区二区| 亚洲伊人一本大道中文字幕| 日韩欧美在线看| 久久免费精品日本久久中文字幕| 日韩精品中文在线观看| 伊人一区二区三区久久精品| 欧美电影在线观看高清| 国产精品自拍小视频| 日韩精品极品视频免费观看| 亚洲人成亚洲人成在线观看| 91精品啪aⅴ在线观看国产| 精品久久久久久国产91| 国产精品91在线观看| 亚洲成人亚洲激情| 日本亚洲欧美成人| 国产精品777| 久久久久久久久久久av| 国产丝袜一区二区三区| 亚洲xxx视频| 国产日韩换脸av一区在线观看| 国产精品久久色| 欧美日韩国产综合新一区| 亚洲欧美日韩天堂| 欧美视频在线免费| 91精品国产综合久久久久久蜜臀| 在线色欧美三级视频| 操人视频在线观看欧美| 国产精品爽爽爽| 日韩成人av在线播放| 国产婷婷97碰碰久久人人蜜臀| 国产精品视频中文字幕91| 成人福利网站在线观看| 国产日韩欧美综合| 日韩视频第一页| 97国产成人精品视频| 69国产精品成人在线播放| 91久久中文字幕| 久久久久久国产免费| 欧美麻豆久久久久久中文| 亚洲影影院av|