日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

python實現數字華容道

瀏覽:103日期:2022-06-23 09:16:48

制作Python數字華容道(可選擇關卡),供大家參考,具體內容如下

由于比賽需要,我這邊制作了一份數字華容道,內含有3,4,5階的數字華容道,開頭在殼窗口內選擇,運用了隨機數模塊(random)和圖形化用戶界面(tkinter)

下面是程序完整代碼

# coding:utf-8 #'''#============================================================作者:@Qss2021年3月20日起草2021年3月21日完工2021年3月23日一次優化完成2021年3月31日完成二次優化(關卡設計)二次優化待解決漏洞:設計關卡后窗口不能自動顯示,需手動切換2021年4月1日三次優化完成,成功解決二次優化bug#============================================================'''from random import * #導入隨機數模塊from tkinter import * #導入圖形化用戶界面模塊step_number = 0 #設置步數的變量,初始值為0difficulty = int(input(’請輸入數字華容道列數(3/4/5):’))def Button_Click_1(x,y): #按鈕點擊事件函數'''聲明空白按鈕行列號和步數的變量為全局變量'''global row_of_space global col_of_space global step_number'''判斷判斷點擊按鈕旁是否為空白按鈕,是則交換位置'''if abs(x-row_of_space) + abs(y-col_of_space) == 1: step_number += 1 #將步數賦值 label_step_number[’text’] = ’步數:’ + str(step_number) #將步數變量導入label控件 '''交換按鈕位置''' buttons[row_of_space,col_of_space][’text’] = buttons[x,y][’text’] buttons[x,y][’text’] = ’ ’ row_of_space = xcol_of_space = y n = 0 for row in range(3):for col in range(3): '''對比所有按鈕序列是否正確,不正確則跳出函數''' if buttons[row,col][’text’] != numbers[n]: return n += 1 '''所有按鈕判斷完畢贏得游戲勝利''' label_welcomes[’text’] = ’你贏了’def Button_Click_2(x,y): #按鈕點擊事件函數'''聲明空白按鈕行列號和步數的變量為全局變量'''global row_of_space global col_of_space global step_number'''判斷判斷點擊按鈕旁是否為空白按鈕,是則交換位置'''if abs(x-row_of_space) + abs(y-col_of_space) == 1: step_number += 1 #將步數賦值 label_step_number[’text’] = ’步數:’ + str(step_number) #將步數變量導入label控件 '''交換按鈕位置''' buttons[row_of_space,col_of_space][’text’] = buttons[x,y][’text’] buttons[x,y][’text’] = ’ ’ row_of_space = xcol_of_space = y n = 0 for row in range(4):for col in range(4): '''對比所有按鈕序列是否正確,不正確則跳出函數''' if buttons[row,col][’text’] != numbers[n]: return n += 1 '''所有按鈕判斷完畢贏得游戲勝利''' label_welcomes[’text’] = ’你贏了’def Button_Click_3(x,y): #按鈕點擊事件函數'''聲明空白按鈕行列號和步數的變量為全局變量'''global row_of_space global col_of_space global step_number'''判斷判斷點擊按鈕旁是否為空白按鈕,是則交換位置'''if abs(x-row_of_space) + abs(y-col_of_space) == 1: step_number += 1 #將步數賦值 label_step_number[’text’] = ’步數:’ + str(step_number) #將步數變量導入label控件 '''交換按鈕位置''' buttons[row_of_space,col_of_space][’text’] = buttons[x,y][’text’] buttons[x,y][’text’] = ’ ’ row_of_space = xcol_of_space = y n = 0 for row in range(5):for col in range(5): '''對比所有按鈕序列是否正確,不正確則跳出函數''' if buttons[row,col][’text’] != numbers[n]: return n += 1 '''所有按鈕判斷完畢贏得游戲勝利''' label_welcomes[’text’] = ’你贏了’'''創建華容道游戲窗口'''root = Tk() #創建圖形化用戶界面實例root.title(’數字華容道’) #設置窗口標題root.geometry('400x400') #將窗口大小設為高400寬400root.configure(bg = ’black’) #將窗口背景設為黑色root.resizable(width = False,height = False) #設置窗口為不可拉伸'''設置歡迎語的label控件'''label_welcomes = Label(root,text = ’歡迎來到數字華容道’,bg = ’black’,fg = ’red’,font = ('Arial',13)) #設置label控件的屬性label_welcomes.place(x = 20,y = 10,width = 250,height = 40) #設置label控件位置'''設置顯示操作方式的label控件'''label_operation = Label(root,text = ’單擊數字’,bg = ’black’,fg = ’white’,font = ('Arial',10))label_operation.place(x = 3,y = 40,width = 50,height = 30)label_operation_2 = Label(root,text = ’移動方塊’,bg = ’black’,fg = ’white’,font = ('Arial',10))label_operation_2.place(x = 3,y = 60,width = 50,height = 30)'''設置顯示步數的label控件'''label_step_number = Label(root,text = ’步數:’ + str(step_number),bg = ’black’,fg = ’yellow’,font = ('Arial',10))label_step_number.place(x = 3,y = 20,width = 50,height = 30)if difficulty == 3: root.attributes('-topmost', True) row_of_space = 0 #存放空白按鈕的行號 col_of_space = 0 #存放空白按鈕的列號 buttons = {} #存放數字按鈕的數組 numbers = [’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’ ’] #所有數字文本的列表 shuffle(numbers) #打亂數字列表中的數字順序 '''制造數字華容道方陣''' for row in range(3): for col in range(3): '''創建數字按鈕,并將行列號傳入該按鈕的點擊事件函數''' button = Button(root,command = lambda x = row,y = col:Button_Click_1(x,y),bg = ’black’,fg = ’green’,font = ('Arial',35)) buttons[row,col] = button #將按鈕導入數組 button[’text’] = numbers.pop() #設置按鈕上的文本 button.place(x = 60 + col * 60,y = 60 + row * 60,width = 50,height = 50) #設置數字按鈕大小 if button[’text’] == ’ ’:#判斷是否為空白按鈕,如果是,則記錄到空白按鈕行列號變量row_of_space = rowcol_of_space = col numbers = [’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’ ’] #還原數字列表 root.mainloop() #顯示窗口elif difficulty == 4: root.attributes('-topmost', True) row_of_space = 0 #存放空白按鈕的行號 col_of_space = 0 #存放空白按鈕的列號 buttons = {} #存放數字按鈕的數組 numbers = [’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,’10’,’11’,’12’,’13’,’14’,’15’,’ ’] #所有數字文本的列表 shuffle(numbers) #打亂數字列表中的數字順序 '''制造數字華容道方陣''' for row in range(4): for col in range(4): '''創建數字按鈕,并將行列號傳入該按鈕的點擊事件函數''' button = Button(root,command = lambda x = row,y = col:Button_Click_2(x,y),bg = ’black’,fg = ’green’,font = ('Arial',35)) buttons[row,col] = button #將按鈕導入數組 button[’text’] = numbers.pop() #設置按鈕上的文本 button.place(x = 60 + col * 60,y = 60 + row * 60,width = 50,height = 50) #設置數字按鈕大小 if button[’text’] == ’ ’:#判斷是否為空白按鈕,如果是,則記錄到空白按鈕行列號變量row_of_space = rowcol_of_space = col numbers = [’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,’10’,’11’,’12’,’13’,’14’,’15’,’ ’] #還原數字列表 root.mainloop() #顯示窗口elif difficulty == 5: root.attributes('-topmost', True) row_of_space = 0 #存放空白按鈕的行號 col_of_space = 0 #存放空白按鈕的列號 buttons = {} #存放數字按鈕的數組 numbers = [’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,’10’,’11’,’12’,’13’,’14’,’15’,’16’,’17’,’18’,’19’,’20’,’21’,’22’,’23’,’24’,’ ’] #所有數字文本的列表 shuffle(numbers) #打亂數字列表中的數字順序 for row in range(5): for col in range(5): '''創建數字按鈕,并將行列號傳入該按鈕的點擊事件函數''' button = Button(root,command = lambda x = row,y = col:Button_Click_3(x,y),bg = ’black’,fg = ’green’,font = ('Arial',35)) buttons[row,col] = button #將按鈕導入數組 button[’text’] = numbers.pop() #設置按鈕上的文本 button.place(x = 60 + col * 60,y = 60 + row * 60,width = 50,height = 50) #設置數字按鈕大小 if button[’text’] == ’ ’:#判斷是否為空白按鈕,如果是,則記錄到空白按鈕行列號變量row_of_space = rowcol_of_space = col numbers = [’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,’10’,’11’,’12’,’13’,’14’,’15’,’16’,’17’,’18’,’19’,’20’,’21’,’22’,’23’,’24’,’ ’] #還原數字列表 root.mainloop() #顯示窗口else: print(’未完成此類關卡’)

下面是程序運行結果

三階華容道加勝利

python實現數字華容道

python實現數字華容道

四階華容道加勝利

python實現數字華容道

python實現數字華容道

五階就不傳了,都一樣

接下來說一下代碼原理

首先看下這一段

def Button_Click_1(x,y): #按鈕點擊事件函數'''聲明空白按鈕行列號和步數的變量為全局變量'''global row_of_space global col_of_space global step_number'''判斷判斷點擊按鈕旁是否為空白按鈕,是則交換位置'''if abs(x-row_of_space) + abs(y-col_of_space) == 1: step_number += 1 #將步數賦值 label_step_number[’text’] = ’步數:’ + str(step_number) #將步數變量導入label控件 '''交換按鈕位置''' buttons[row_of_space,col_of_space][’text’] = buttons[x,y][’text’] buttons[x,y][’text’] = ’ ’ row_of_space = xcol_of_space = y n = 0 for row in range(3):for col in range(3): '''對比所有按鈕序列是否正確,不正確則跳出函數''' if buttons[row,col][’text’] != numbers[n]: return n += 1 '''所有按鈕判斷完畢贏得游戲勝利''' label_welcomes[’text’] = ’你贏了’

這段是自定義了三個按鈕的點擊事件函數,不過三個都差不多,就是range后面的數字換了(應對不同的階級)。這個函數在注釋上已經寫明了,是判斷點擊按鈕旁是否有空白按鈕的,有則交換位置。后面運用循環嵌套對比序列中的數字和矩陣上的是否一一對應,不對應就跳出循環,對應則判定為贏得游戲。

'''創建華容道游戲窗口'''root = Tk() #創建圖形化用戶界面實例root.title(’數字華容道’) #設置窗口標題root.geometry('400x400') #將窗口大小設為高300寬300root.configure(bg = ’black’) #將窗口背景設為黑色root.resizable(width = False,height = False) #設置窗口為不可拉伸'''設置歡迎語的label控件'''label_welcomes = Label(root,text = ’歡迎來到數字華容道’,bg = ’black’,fg = ’red’,font = ('Arial',13)) #設置label控件的屬性label_welcomes.place(x = 20,y = 10,width = 250,height = 40) #設置label控件位置'''設置顯示操作方式的label控件'''label_operation = Label(root,text = ’單擊數字’,bg = ’black’,fg = ’white’,font = ('Arial',10))label_operation.place(x = 3,y = 40,width = 50,height = 30)label_operation_2 = Label(root,text = ’移動方塊’,bg = ’black’,fg = ’white’,font = ('Arial',10))label_operation_2.place(x = 3,y = 60,width = 50,height = 30)'''設置顯示步數的label控件'''label_step_number = Label(root,text = ’步數:’ + str(step_number),bg = ’black’,fg = ’yellow’,font = ('Arial',10))label_step_number.place(x = 3,y = 20,width = 50,height = 30)

這一段創建了圖形化用戶界面,具體每行代碼做什么用的注釋上我都標清楚了。

接著說一下,由于時間有限,只做了在殼窗口內選擇幾階級數字華容道的版本。是用輸入數字來判定的。其他的都是些簡單玩意,比如說按鈕創建,調用函數和循環嵌套,代碼的注釋上都寫了一些大概意思,有點tkinter基礎的應該都能看懂,不會的可以問我。

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

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美搞黄网站| 亚洲人成高清| 精品视频一区二区三区四区五区| 水蜜桃久久夜色精品一区| 亚洲1234区| 亚洲精品一级二级三级| 鲁大师影院一区二区三区| 国产视频久久| 免费一区二区视频| 91精品成人| 欧美在线影院| 视频一区二区中文字幕| 欧美13videosex性极品| 亚洲欧美日韩专区| 国产美女撒尿一区二区| 久久高清免费| 中文精品电影| 国产精品v一区二区三区| 国产精品美女在线观看直播| 欧美黄色一区| 精品国模一区二区三区| 美女国产精品| 久久精品女人| 999在线观看精品免费不卡网站| 亚洲电影有码| 日韩av一区二区三区四区| 久久精品亚洲欧美日韩精品中文字幕| 视频在线观看一区二区三区| 精品久久视频| 亚洲永久字幕| 欧美影院三区| 国产精品成久久久久| 欧美中文一区二区| 六月丁香综合| 丝袜美腿亚洲一区| 久久最新视频| 国产亚洲久久| 国产成人精品一区二区三区免费 | 蜜桃一区二区三区在线观看| 精品国产乱码| 在线看片日韩| 天堂资源在线亚洲| av在线资源| 精品亚洲成人| 亚洲精品亚洲人成在线观看| 超级白嫩亚洲国产第一| 蜜桃久久久久久| 亚洲a一区二区三区| 91亚洲成人| 日本色综合中文字幕| 日韩在线a电影| 美女精品网站| 午夜性色一区二区三区免费视频| 国产婷婷精品| 午夜国产一区二区| 欧美一区二区三区高清视频| 欧美日韩视频网站| 亚洲午夜一级| 国产精品91一区二区三区| 婷婷精品在线| 超碰99在线| 日本精品国产| 一区二区自拍| 国产香蕉精品| 国内精品亚洲| 在线亚洲国产精品网站| 国产欧美88| 999在线观看精品免费不卡网站| 国产精品午夜一区二区三区| 欧美 日韩 国产一区二区在线视频| 日本综合精品一区| 婷婷综合六月| 国产精品传媒麻豆hd| 欧美精品一卡| 国产一区二区三区探花| 日本一区二区三区中文字幕| av一区在线| 欧美亚洲三级| 免费国产自线拍一欧美视频| 精品国产欧美日韩| 日日夜夜免费精品| 欧美+日本+国产+在线a∨观看| 国产精品草草| 亚洲有吗中文字幕| 久久天堂精品| 精品国产乱码久久久久久1区2匹 | 精品91福利视频| 一区二区三区四区精品视频| 免费在线小视频| 久久亚洲国产精品尤物| 日韩精品视频一区二区三区| 亚洲一区二区动漫| 99国产精品免费视频观看| 国产精品香蕉| 日韩综合一区二区| 黄色免费成人| 日韩成人亚洲| 国产aⅴ精品一区二区三区久久 | 欧美影院视频| 六月婷婷一区| 婷婷亚洲五月色综合| 国产v日韩v欧美v| 美女视频黄久久| 7m精品国产导航在线| 人人爽香蕉精品| 91久久午夜| 久久精品亚洲人成影院| 国产成人黄色| 久久99免费视频| 国产色噜噜噜91在线精品| 婷婷精品在线| 日韩精品亚洲专区| 美女精品在线| 久久av一区| 国产一级久久| 在线亚洲成人| 老鸭窝毛片一区二区三区| 亚洲美洲欧洲综合国产一区| 免费视频亚洲| 亚洲一级黄色| 999久久久精品国产| 国产不卡人人| а√在线中文在线新版| 国产va在线视频| 日本高清不卡一区二区三区视频| 欧美丰满日韩| 九色porny丨国产首页在线| 日韩电影免费在线观看| 91亚洲国产成人久久精品| 久久久久久自在自线| 国产一区二区三区四区二区| 91视频一区| 99久久精品网| 欧美在线亚洲综合一区| 99成人在线| 水野朝阳av一区二区三区| 日韩午夜精品| 日av在线不卡| 91欧美精品| 久久99影视| 国产在线看片免费视频在线观看| 日韩久久电影| 蜜臀av免费一区二区三区| 国产亚洲毛片| 日本va欧美va瓶| 欧美黄页在线免费观看| 国产91在线播放精品| 日韩久久电影| 日韩午夜av在线| 日韩免费精品| 美女高潮久久久| 日韩大片免费观看| 久久久久蜜桃| 爽好久久久欧美精品| 日韩av中文在线观看| 久久精品国产在热久久| 五月天av在线| 在线视频精品| 国产日韩中文在线中文字幕| 精品欧美日韩精品| 99久久精品网站| 蜜桃久久av一区| 国产乱码精品一区二区三区亚洲人| 精品国产精品国产偷麻豆 | 久久成人精品| 日韩av一区二区三区四区| 国产伊人久久| 91久久午夜| 国产精品手机在线播放| 欧洲av不卡| 免费在线观看不卡| 久久99精品久久久野外观看| 99久久精品网站| 日韩毛片一区| 午夜影院一区| 婷婷综合电影| 亚洲人成在线网站| 日韩有码av| www成人在线视频| 亚洲日韩视频| 91亚洲人成网污www| 亚洲一区二区日韩| 精品久久网站| 免费在线欧美视频| 国产一区二区三区国产精品| 午夜国产精品视频| 国产精品传媒麻豆hd| 欧美日韩国产一区二区三区不卡 | 国产欧美一区二区精品久久久| 日韩大片在线| 日韩va亚洲va欧美va久久| 久久精品观看| 日韩精品午夜视频| 视频福利一区| 国产午夜一区| 欧美精品九九| 精品三区视频| 日欧美一区二区| 欧美日韩中文一区二区| 国产精品久久久久久久久久齐齐|