亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

39條Python語(yǔ)句實(shí)現(xiàn)數(shù)字華容道

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

原以為用Python編寫(xiě)“數(shù)字華容道”游戲可能需要很多代碼,完成后發(fā)現(xiàn)只用了39條語(yǔ)句,可見(jiàn)Python的強(qiáng)大。

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

import randomfrom tkinter import Tk,Button,Labeldef btnClick(x,y): #所有按鈕的事件函數(shù),有兩個(gè)參數(shù),被點(diǎn)擊按鈕所在位置行列號(hào) global row_of_space #說(shuō)明變量是全局變量,即變量在主程序中定義的,必加否則報(bào)錯(cuò) global col_of_space #在函數(shù)內(nèi)為變量賦值,默認(rèn)是局部變量,這兩個(gè)變量是空白按鈕的行列號(hào) 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’]=’ ’ #如相鄰,被點(diǎn)擊按鈕和空白按鈕交換標(biāo)題row_of_space=x #現(xiàn)在被點(diǎn)擊按鈕標(biāo)題變?yōu)榭瞻祝辛斜槐4鎐ol_of_space=yn=0 #按第1、2、3行順序,每行從左到右所有按鈕標(biāo)題和列表numbers每一項(xiàng)值逐一比較for row in range(3): for col in range(3):if buttons[row,col][’text’]!=numbers[n]: #有1項(xiàng)不等,表示排列不正確退出 returnn+=1label[’text’]=’你贏了’ #到這里,說(shuō)明排列正確,玩家贏了,修改Label標(biāo)題root = Tk() #初始化窗口root.title(’數(shù)字華容道’) #窗口標(biāo)題root.geometry('300x250+200+20') #窗口寬300,高=300,窗口左上點(diǎn)離屏幕左邊界200,離屏幕上邊界距離20。root.resizable(width=False,height=False) #設(shè)置窗口是否可變,寬不可變,高不可變,默認(rèn)為T(mén)ruelabel=Label(root,text=’單擊數(shù)字移動(dòng)方塊’,fg=’red’,font=('Arial',15))label.place(x=20,y=10,width=250,height=40)row_of_space=0 #保存標(biāo)題空白按鈕的行號(hào)col_of_space=0 #保存標(biāo)題空白按鈕的行號(hào)buttons={} #字典numbers=list(’12345678 ’) #列表,所有按鈕標(biāo)題可顯示的數(shù)字1到8和空白random.shuffle(numbers) #使列表數(shù)字和空白隨機(jī)排列for row in range(3): #row=行,0,1,2 for col in range(3): #col=列,0,1,2,參見(jiàn)博文:python3.8的tkinter按鈕事件函數(shù)實(shí)現(xiàn)多個(gè)參數(shù)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最后一項(xiàng)作為按鈕標(biāo)題并將列表最后1項(xiàng)刪除button.place(x=60+col*60,y=60+row*60,width=50,height=50)if button[’text’]==’ ’: #記住空白按鈕所在位置的行列號(hào) row_of_space=row col_of_space=colnumbers=list(’12345678 ’)root.mainloop() #進(jìn)入循環(huán),運(yùn)行窗口

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 黄色影院 | 免费观看欧美成人h | 国产目拍亚洲精品一区二区三区 | 国产精品青草久久久久婷婷 | 日韩一级视频免费观看 | 激情动态视频 | 女人精69xxxxx免费视频 | 黄 在线 | 亚洲精品一区二区三区在线看 | 又爽又黄又无遮挡的视频美女软件 | 久久88香港三级 | 欧美色资源| 国产亚洲精品一区999 | 免费高清观看青青草原 | 九九精品国产兔费观看久久 | 在线观看二区三区午夜 | 久久精品国产福利国产琪琪 | 日本欧美成人免费观看 | 亚洲日韩中文字幕天堂不卡 | 麻豆视频一区 | 一级a性色生活片久久毛片 一级a性色生活片毛片 | 国产亚洲青色国产 | 久久亚洲国产成人亚 | 久草免费公开视频 | 在线观看黄免费 | 午夜视频在线观看国产 | 毛片毛片毛片毛片出来毛片 | 亚洲尹人香蕉网在线视颅 | 成年人视频黄色 | 男人黄女人色视频在线观看 | 在线成人看片 | 国产成人精品一区二区三区 | 丝袜乱小说 | 久久精品福利视频 | 欧美日韩亚洲二区在线 | 久久91在线| 久久永久视频 | 国产呦系列 欧美呦 日韩呦 | 青青久久精品国产免费看 | 中文字幕高清在线 | 国产精品自拍一区 |