学网站开发有用么,织梦网站被做跳转还被删除文件,端午节ppt模板免费下载,网站改版合同本文为大家分享了python实现扫雷游戏的具体代码#xff0c;供大家参考#xff0c;具体内容如下本文实例借鉴mvc模式#xff0c;核心数据为model#xff0c;维护1个矩阵#xff0c;0表无雷#xff0c;1表雷#xff0c;-1表已经检测过。本例使用python的tkinter做gui,由于…本文为大家分享了python实现扫雷游戏的具体代码供大家参考具体内容如下本文实例借鉴mvc模式核心数据为model维护1个矩阵0表无雷1表雷-1表已经检测过。本例使用python的tkinter做gui,由于没考虑可用性问题因此UI比较难看pygame更有趣更强大更好看做这些小游戏更合适感兴趣的读者可以尝试一下具体的功能代码如下# -*- coding: utf-8 -*-import randomimport sysfrom Tkinter import *想要学习Pythonclass Model:核心数据类维护一个矩阵def __init__(self,row,col):self.widthcolself.heightrowself.items[[0 for c in range(col)] for r in range(row)]def setItemValue(self,r,c,value):设置某个位置的值为valueself.items[r][c]value;def checkValue(self,r,c,value):检测某个位置的值是否为valueif self.items[r][c]!-1 and self.items[r][c]value:self.items[r][c]-1 #已经检测过return Trueelse:return Falsedef countValue(self,r,c,value):统计某个位置周围8个位置中值为value的个数count0if r-10 and c-10:if self.items[r-1][c-1]1:count1if r-10 and c0:if self.items[r-1][c]1:count1if r-10 and c1self.width-1:if self.items[r-1][c1]1:count1if c-10:if self.items[r][c-1]1:count1if c1self.width-1 :if self.items[r][c1]1:count1if r1self.height-1 and c-10:if self.items[r1][c-1]1:count1if r1self.height-1 :if self.items[r1][c]1:count1if r1self.height-1 and c1self.width-1:if self.items[r1][c1]1:count1return countclass Mines(Frame):def __init__(self,m,masterNone):Frame.__init__(self,master)self.modelmself.initmine()self.grid()self.createWidgets()def createWidgets(self):#topself.winfo_toplevel()#top.rowconfigure(self.model.height*2,weight1)#top.columnconfigure(self.model.width*2,weight1)self.rowconfigure(self.model.height,weight1)self.columnconfigure(self.model.width,weight1)self.buttongroups[[Button(self,height1,width2) 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(rowr,columnc)self.buttongroups[r][c].bind(,self.clickevent)self.buttongroups[r][c][padx]rself.buttongroups[r][c][pady]cdef 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]Minesdef recureshow(self,r,c):if 0rself.model.height-1 and 0cself.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,c1)self.recureshow(r,c-1)self.recureshow(r,c1)self.recureshow(r1,c-1)self.recureshow(r1,c)self.recureshow(r1,c1)elif model.countValue(r,c,1)!0:self.buttongroups[r][c][text]model.countValue(r,c,1)else:passdef clickevent(self,event):点击事件case 1:是雷所有都显示出来游戏结束case 2:是周围雷数为0的递归触发周围8个button的点击事件case 3:周围雷数不为0的显示周围雷数rint(str(event.widget[padx]))cint(str(event.widget[pady]))if model.checkValue(r,c,1):#是雷self.showall()else:#不是雷self.recureshow(r,c)def initmine(self):埋雷,每行埋height/width2个暂定rrandom.randint(1,model.height/model.width2)for r in range(model.height):for i in range(2):rancolrandom.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 /ndef new(self):重新开始游戏passif __name____main__:modelModel(10,10)rootTk()#menumenu Menu(root)root.config(menumenu)filemenu Menu(menu)menu.add_cascade(labelFile, menufilemenu)filemenu.add_command(labelNew,commandnew)filemenu.add_separator()filemenu.add_command(labelExit, commandroot.quit)#MinesmMines(model,root)#m.printf()root.mainloop()以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持我们。