亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

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

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

瀏覽:7日期: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 編程
相關文章:
主站蜘蛛池模板: 国产成人精品亚洲 | 久久九九免费 | 精品久久久在线观看 | 欧美成人鲁丝片在线观看 | 日本 欧美 在线 | 老妇综合久久香蕉蜜桃 | 婷婷色综合久久五月亚洲 | 视频一区视频二区在线观看 | 视频三区精品中文字幕 | 久草新在线观看 | 欧美日韩精品国产一区在线 | 欧美一区二区三区在线播放 | 99精品国产高清一区二区三区香蕉 | 久9久9精品视频在线观看 | 萌白酱白丝护士服喷水铁牛tv | 精品自拍视频在线观看 | 韩国good三级在线观看久 | 国内在线播放 | 99re66热这里只有精品免费观看 | 综合自拍| 日韩欧美中文字幕在线视频 | 欧美成人免费午夜全 | 美国免费高清一级毛片 | 一区二区三区在线 | 91欧洲在线视精品在亚洲 | 欧美视频在线网站 | 欧美a大片欧美片 | 亚洲天堂男人在线 | 美女张开双腿让男人桶视频免费 | 久久综合中文字幕一区二区 | 国产精品hd在线播放 | 最近手机高清中文字幕大全7 | 成人a毛片免费全部播放 | 国产成人综合95精品视频免费 | 欧美一级成人影院免费的 | xxxxxhd亚洲日本hd | 国产成人3p视频免费观看 | 一级毛片情侣 | 97在线视频网站 | 国产三级日产三级韩国三级 | 日本成a人片在线观看网址 日本成年人视频网站 |