电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

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

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

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

具體的功能代碼如下:

# -*- coding: utf-8 -*-import randomimport sysfrom Tkinter import *’’’想要學習Python?’’’class Model: ''' 核心數(shù)據(jù)類,維護一個矩陣 ''' 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 #已經(jīng)檢測過 return True else: return False def countValue(self,r,c,value): ''' 統(tǒng)計某個位置周圍8個位置中,值為value的個數(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): ''' 點擊事件 case 1:是雷,所有都顯示出來,游戲結(jié)束 case 2:是周圍雷數(shù)為0的,遞歸觸發(fā)周圍8個button的點擊事件 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個暫定 ''' 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()

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

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 无机纤维喷涂棉-喷涂棉施工工程-山东华泉建筑工程有限公司▲ | 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 北京印刷厂_北京印刷_北京印刷公司_北京印刷厂家_北京东爵盛世印刷有限公司 | 环讯传媒,永康网络公司,永康网站建设,永康小程序开发制作,永康网站制作,武义网页设计,金华地区网站SEO优化推广 - 永康市环讯电子商务有限公司 | jrs高清nba(无插件)直播-jrs直播低调看直播-jrs直播nba-jrs直播 上海地磅秤|电子地上衡|防爆地磅_上海地磅秤厂家–越衡称重 | 运动木地板_体育木地板_篮球馆木地板_舞台木地板-实木运动地板厂家 | 升降炉_真空气氛炉_管式电阻炉厂家-山东中辰电炉有限公司 | 压砖机_电动螺旋压力机_粉末成型压力机_郑州华隆机械tel_0371-60121717 | 临沂招聘网_人才市场_招聘信息_求职招聘找工作请认准【马头商标】 | 质检报告_CE认证_FCC认证_SRRC认证_PSE认证_第三方检测机构-深圳市环测威检测技术有限公司 | 企典软件一站式企业管理平台,可私有、本地化部署!在线CRM客户关系管理系统|移动办公OA管理系统|HR人事管理系统|人力 | 苹果售后维修点查询,苹果iPhone授权售后维修服务中心 – 修果网 拼装地板,悬浮地板厂家,悬浮式拼装运动地板-石家庄博超地板科技有限公司 | 西门子伺服电机维修,西门子电源模块维修,西门子驱动模块维修-上海渠利 | 智能楼宇-楼宇自控系统-楼宇智能化-楼宇自动化-三水智能化 | 吲哚菁绿衍生物-酶底物法大肠菌群检测试剂-北京和信同通科技发展有限公司 | WTB5光栅尺-JIE WILL磁栅尺-B60数显表-常州中崴机电科技有限公司 | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | LED灯杆屏_LED广告机_户外LED广告机_智慧灯杆_智慧路灯-太龙智显科技(深圳)有限公司 | 山东活动策划|济南活动公司|济南公关活动策划-济南锐嘉广告有限公司 | 蓄电池在线监测系统|SF6在线监控泄露报警系统-武汉中电通电力设备有限公司 | 大立教育官网-一级建造师培训-二级建造师培训-造价工程师-安全工程师-监理工程师考试培训 | 气动球阀_衬氟蝶阀_调节阀_电动截止阀_上海沃托阀门有限公司 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | B2B网站_B2B免费发布信息网站_B2B企业贸易平台 - 企资网 | 余姚生活网_余姚论坛_余姚市综合门户网站 | 档案密集架_电动密集架_移动密集架_辽宁档案密集架-盛隆柜业厂家现货批发销售价格公道 | 生物颗粒燃烧机-生物质燃烧机-热风炉-生物颗粒蒸汽发生器-丽水市久凯能源设备有限公司 | 驾驶人在线_专业学车门户网站 | 硫化罐-胶管硫化罐-山东鑫泰鑫智能装备有限公司 | 语料库-提供经典范文,文案句子,常用文书,您的写作得力助手 | 网站优化公司_SEO优化_北京关键词百度快速排名-智恒博网络 | 塑料薄膜_PP薄膜_聚乙烯薄膜-常州市鑫美新材料包装厂 | 宏源科技-房地产售楼系统|线上开盘系统|售楼管理系统|线上开盘软件 | 广州番禺搬家公司_天河黄埔搬家公司_企业工厂搬迁_日式搬家_广州搬家公司_厚道搬迁搬家公司 | 高光谱相机-近红外高光谱相机厂家-高光谱成像仪-SINESPEC 赛斯拜克 | 土壤墒情监测站_土壤墒情监测仪_土壤墒情监测系统_管式土壤墒情站-山东风途物联网 | 自动化生产线-自动化装配线-直流电机自动化生产线-东莞市慧百自动化有限公司 | 培训中心-翰香原香酥板栗饼加盟店总部-正宗板栗酥饼技术 | 12cr1mov无缝钢管切割-15crmog无缝钢管切割-40cr无缝钢管切割-42crmo无缝钢管切割-Q345B无缝钢管切割-45#无缝钢管切割 - 聊城宽达钢管有限公司 | 玉米深加工设备|玉米加工机械|玉米加工设备|玉米深加工机械-河南成立粮油机械有限公司 | 英语词典_成语词典_日语词典_法语词典_在线词典网 |