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

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

39條Python語句實現數字華容道

瀏覽:6日期:2022-06-23 09:09:03

原以為用Python編寫“數字華容道”游戲可能需要很多代碼,完成后發現只用了39條語句,可見Python的強大。

編程的思路如下,使用9個tkinter庫的Button按鈕,按3行3列排列,每個按鈕的標題是1到8和空白中的一個,初始標題所顯示的數字和空白隨機排列。當一個按鈕被單擊后,調用事件函數,該函數有兩個參數,該按鈕的所在位置的行列號。在函數中首先判斷該按鈕(行號為x,列號為y)是否和標題為空白的按鈕(行號為x0,列號為y0)相鄰,相鄰條件是(x-x0)絕對值+(y-y0)絕對值=1,如相鄰則兩個按鈕的標題交換,就像標題不為空白的按鈕移到標題為空白的按鈕位置。然后檢查所有按鈕標題是否第1行為1、2、3,第2行為4、5、6,第3行為7、8、空白排列。檢查方法是按第1、2、3行順序,每行從左到右所有按鈕標題和列表list[’12345678 ’]每一項值逐一比較。下邊是所有代碼。應再加一重玩按鈕,單擊該按鈕實現標題所顯示的數字和空白隨機重新排列。改成4行4列或5行5列的數字華容道也是不困難的。

import randomfrom tkinter import Tk,Button,Labeldef btnClick(x,y): #所有按鈕的事件函數,有兩個參數,被點擊按鈕所在位置行列號 global row_of_space #說明變量是全局變量,即變量在主程序中定義的,必加否則報錯 global col_of_space #在函數內為變量賦值,默認是局部變量,這兩個變量是空白按鈕的行列號 if abs(x-row_of_space)+abs(y-col_of_space)==1: #判斷被單擊按鈕是否和空白按鈕相鄰buttons[row_of_space,col_of_space][’text’]=buttons[x,y][’text’]buttons[x,y][’text’]=’ ’ #如相鄰,被點擊按鈕和空白按鈕交換標題row_of_space=x #現在被點擊按鈕標題變為空白,行列被保存col_of_space=yn=0 #按第1、2、3行順序,每行從左到右所有按鈕標題和列表numbers每一項值逐一比較for row in range(3): for col in range(3):if buttons[row,col][’text’]!=numbers[n]: #有1項不等,表示排列不正確退出 returnn+=1label[’text’]=’你贏了’ #到這里,說明排列正確,玩家贏了,修改Label標題root = Tk() #初始化窗口root.title(’數字華容道’) #窗口標題root.geometry('300x250+200+20') #窗口寬300,高=300,窗口左上點離屏幕左邊界200,離屏幕上邊界距離20。root.resizable(width=False,height=False) #設置窗口是否可變,寬不可變,高不可變,默認為Truelabel=Label(root,text=’單擊數字移動方塊’,fg=’red’,font=('Arial',15))label.place(x=20,y=10,width=250,height=40)row_of_space=0 #保存標題空白按鈕的行號col_of_space=0 #保存標題空白按鈕的行號buttons={} #字典numbers=list(’12345678 ’) #列表,所有按鈕標題可顯示的數字1到8和空白random.shuffle(numbers) #使列表數字和空白隨機排列for row in range(3): #row=行,0,1,2 for col in range(3): #col=列,0,1,2,參見博文:python3.8的tkinter按鈕事件函數實現多個參數button=Button(root,command=lambda x=row,y=col:btnClick(x,y),fg=’red’,font=('Arial',35))buttons[row,col]=buttonbutton[’text’]=numbers.pop() #將列表numbers最后一項作為按鈕標題并將列表最后1項刪除button.place(x=60+col*60,y=60+row*60,width=50,height=50)if button[’text’]==’ ’: #記住空白按鈕所在位置的行列號 row_of_space=row col_of_space=colnumbers=list(’12345678 ’)root.mainloop() #進入循環,運行窗口

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

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 台湾阳明固态继电器-奥托尼克斯光电传感器-接近开关-温控器-光纤传感器-编码器一级代理商江苏用之宜电气 | 不锈钢螺丝,不锈钢螺栓,不锈钢标准件-江苏百德特种合金有限公司 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 | 氧氮氢联合测定仪-联测仪-氧氮氢元素分析仪-江苏品彦光电 | 真空干燥烘箱_鼓风干燥箱 _高低温恒温恒湿试验箱_光照二氧化碳恒温培养箱-上海航佩仪器 | 生物制药洁净车间-GMP车间净化工程-食品净化厂房-杭州波涛净化设备工程有限公司 | 胜为光纤光缆_光纤跳线_单模尾纤_光纤收发器_ODF光纤配线架厂家直销_北京睿创胜为科技有限公司 - 北京睿创胜为科技有限公司 | 工程管道/塑料管材/pvc排水管/ppr给水管/pe双壁波纹管等品牌管材批发厂家-河南洁尔康建材 | 列管冷凝器,刮板蒸发器,外盘管反应釜厂家-无锡曼旺化工设备有限公司 | 壹作文_中小学生优秀满分作文大全| Maneurop/美优乐压缩机,活塞压缩机,型号规格,技术参数,尺寸图片,价格经销商 | 12cr1mov无缝钢管切割-15crmog无缝钢管切割-40cr无缝钢管切割-42crmo无缝钢管切割-Q345B无缝钢管切割-45#无缝钢管切割 - 聊城宽达钢管有限公司 | 安徽合肥项目申报咨询公司_安徽合肥高新企业项目申报_安徽省科技项目申报代理 | 螺旋压榨机-刮泥机-潜水搅拌机-电动泥斗-潜水推流器-南京格林兰环保设备有限公司 | 合肥白癜风医院_[治疗白癜风]哪家好_合肥北大白癜风医院 | 淄博不锈钢,淄博不锈钢管,淄博不锈钢板-山东振远合金科技有限公司 | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 半容积式换热器_北京浮动盘管换热器厂家|北京亿丰上达 | 航空铝型材,7系铝型材挤压,硬质阳*氧化-余润铝制品 | 拉力测试机|材料拉伸试验机|电子拉力机价格|万能试验机厂家|苏州皖仪实验仪器有限公司 | 北京印刷厂_北京印刷_北京印刷公司_北京印刷厂家_北京东爵盛世印刷有限公司 | 丹佛斯变频器-丹佛斯压力开关-变送器-广州市风华机电设备有限公司 | 热熔胶网膜|pes热熔网膜价格|eva热熔胶膜|热熔胶膜|tpu热熔胶膜厂家-苏州惠洋胶粘制品有限公司 | 乳化沥青设备_改性沥青设备_沥青加温罐_德州市昊通路桥工程有限公司 | 镀锌方管,无缝方管,伸缩套管,方矩管_山东重鑫致胜金属制品有限公司 | 考勤系统_考勤管理系统_网络考勤软件_政企|集团|工厂复杂考勤工时统计排班管理系统_天时考勤 | 干粉砂浆设备_干混砂浆生产线_腻子粉加工设备_石膏抹灰砂浆生产成套设备厂家_干粉混合设备_砂子烘干机--郑州铭将机械设备有限公司 | 高效复合碳源-多核碳源生产厂家-污水处理反硝化菌种一长隆科技库巴鲁 | 重庆磨床过滤机,重庆纸带过滤机,机床伸缩钣金,重庆机床钣金护罩-重庆达鸿兴精密机械制造有限公司 | 跨境物流_美国卡派_中大件运输_尾程派送_海外仓一件代发 - 广州环至美供应链平台 | 好看的韩国漫画_韩漫在线免费阅读-汗汗漫画 | 全国国际学校排名_国际学校招生入学及学费-学校大全网 | 空心明胶胶囊|植物胶囊|清真胶囊|浙江绿键胶囊有限公司欢迎您! | 中山市派格家具有限公司【官网】 | 洁净化验室净化工程_成都实验室装修设计施工_四川华锐净化公司 | 都江堰招聘网-都江堰人才网 都江堰人事人才网 都江堰人才招聘网 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | 上海道勤塑化有限公司 | 西安微信朋友圈广告投放_微信朋友圈推广_西安度娘网络科技有限公司 | 微波消解仪器_智能微波消解仪报价_高压微波消解仪厂家_那艾 | 真空包装机-诸城市坤泰食品机械有限公司 | 旗杆生产厂家_不锈钢锥形旗杆价格_铝合金电动旗杆-上海锥升金属科技有限公司 | 骁龙云呼电销防封号系统-axb电销平台-外呼稳定『免费试用』 |