婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > python實現(xiàn)數(shù)字華容道

python實現(xiàn)數(shù)字華容道

熱門標簽:淮安呼叫中心外呼系統(tǒng)如何 佛山通用400電話申請 看懂地圖標注方法 電話機器人貸款詐騙 蘇州人工外呼系統(tǒng)軟件 打印谷歌地圖標注 電話外呼系統(tǒng)招商代理 京華圖書館地圖標注 廣東旅游地圖標注

制作Python數(shù)字華容道(可選擇關(guān)卡),供大家參考,具體內(nèi)容如下

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

下面是程序完整代碼

# coding:utf-8 #

"""
#============================================================
作者:@Qss
2021年3月20日起草
2021年3月21日完工
2021年3月23日一次優(yōu)化完成
2021年3月31日完成二次優(yōu)化(關(guān)卡設(shè)計)
二次優(yōu)化待解決漏洞:設(shè)計關(guān)卡后窗口不能自動顯示,需手動切換
2021年4月1日三次優(yōu)化完成,成功解決二次優(yōu)化bug
#============================================================
"""
from random import *    #導(dǎo)入隨機數(shù)模塊
from tkinter import *   #導(dǎo)入圖形化用戶界面模塊
step_number = 0     #設(shè)置步數(shù)的變量,初始值為0
difficulty = int(input('請輸入數(shù)字華容道列數(shù)(3/4/5):'))
def Button_Click_1(x,y):      #按鈕點擊事件函數(shù)
        """聲明空白按鈕行列號和步數(shù)的變量為全局變量"""
        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    #將步數(shù)賦值
            label_step_number['text'] = '步數(shù):' + str(step_number)  #將步數(shù)變量導(dǎo)入label控件
            """交換按鈕位置"""
            buttons[row_of_space,col_of_space]['text'] = buttons[x,y]['text']
            buttons[x,y]['text']  = ' '  
            row_of_space = x            
            col_of_space = y
            n = 0   
            for row in range(3):
                for col in range(3):
                    """對比所有按鈕序列是否正確,不正確則跳出函數(shù)"""
                    if buttons[row,col]['text'] != numbers[n]:  
                        return
                    n += 1
            """所有按鈕判斷完畢贏得游戲勝利"""
            label_welcomes['text'] = '你贏了'

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

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

"""創(chuàng)建華容道游戲窗口"""
root = Tk()                      #創(chuàng)建圖形化用戶界面實例
root.title('數(shù)字華容道')         #設(shè)置窗口標題
root.geometry("400x400")    #將窗口大小設(shè)為高400寬400
root.configure(bg = 'black') #將窗口背景設(shè)為黑色
root.resizable(width = False,height = False)    #設(shè)置窗口為不可拉伸
"""設(shè)置歡迎語的label控件"""
label_welcomes = Label(root,text = '歡迎來到數(shù)字華容道',bg = 'black',fg = 'red',font = ("Arial",13))    #設(shè)置label控件的屬性
label_welcomes.place(x = 20,y = 10,width = 250,height = 40)  #設(shè)置label控件位置
"""設(shè)置顯示操作方式的label控件"""
label_operation = Label(root,text = '單擊數(shù)字',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)
"""設(shè)置顯示步數(shù)的label控件"""
label_step_number = Label(root,text = '步數(shù):' + 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 = {}      #存放數(shù)字按鈕的數(shù)組
    numbers = ['1','2','3','4','5','6','7','8',' '] #所有數(shù)字文本的列表 
    shuffle(numbers)     #打亂數(shù)字列表中的數(shù)字順序
    """制造數(shù)字華容道方陣"""
    for row in range(3): 
        for col in range(3):
            """創(chuàng)建數(shù)字按鈕,并將行列號傳入該按鈕的點擊事件函數(shù)"""
            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   #將按鈕導(dǎo)入數(shù)組
            button['text'] = numbers.pop()    #設(shè)置按鈕上的文本
            button.place(x = 60 + col * 60,y = 60 + row * 60,width = 50,height = 50)    #設(shè)置數(shù)字按鈕大小
            if button['text'] == ' ':        #判斷是否為空白按鈕,如果是,則記錄到空白按鈕行列號變量
                row_of_space = row
                col_of_space = col
    numbers = ['1','2','3','4','5','6','7','8',' ']   #還原數(shù)字列表 
    root.mainloop() #顯示窗口
elif difficulty == 4:
    root.attributes("-topmost", True)
    row_of_space = 0    #存放空白按鈕的行號 
    col_of_space = 0    #存放空白按鈕的列號
    buttons = {}      #存放數(shù)字按鈕的數(shù)組
    numbers = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15',' '] #所有數(shù)字文本的列表 
    shuffle(numbers)     #打亂數(shù)字列表中的數(shù)字順序
    """制造數(shù)字華容道方陣"""
    for row in range(4): 
        for col in range(4):
            """創(chuàng)建數(shù)字按鈕,并將行列號傳入該按鈕的點擊事件函數(shù)"""
            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   #將按鈕導(dǎo)入數(shù)組
            button['text'] = numbers.pop()    #設(shè)置按鈕上的文本
            button.place(x = 60 + col * 60,y = 60 + row * 60,width = 50,height = 50)    #設(shè)置數(shù)字按鈕大小
            if button['text'] == ' ':        #判斷是否為空白按鈕,如果是,則記錄到空白按鈕行列號變量
                row_of_space = row
                col_of_space = col
    numbers = ['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15',' ']   #還原數(shù)字列表 
    root.mainloop() #顯示窗口
elif difficulty == 5:
    root.attributes("-topmost", True)
    row_of_space = 0    #存放空白按鈕的行號 
    col_of_space = 0    #存放空白按鈕的列號
    buttons = {}      #存放數(shù)字按鈕的數(shù)組
    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',' '] #所有數(shù)字文本的列表 
    shuffle(numbers)     #打亂數(shù)字列表中的數(shù)字順序
    for row in range(5): 
        for col in range(5):
            """創(chuàng)建數(shù)字按鈕,并將行列號傳入該按鈕的點擊事件函數(shù)"""
            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   #將按鈕導(dǎo)入數(shù)組
            button['text'] = numbers.pop()    #設(shè)置按鈕上的文本
            button.place(x = 60 + col * 60,y = 60 + row * 60,width = 50,height = 50)    #設(shè)置數(shù)字按鈕大小
            if button['text'] == ' ':        #判斷是否為空白按鈕,如果是,則記錄到空白按鈕行列號變量
                row_of_space = row
                col_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',' ']   #還原數(shù)字列表 
    root.mainloop() #顯示窗口
else:
    print('未完成此類關(guān)卡')

下面是程序運行結(jié)果

三階華容道加勝利

四階華容道加勝利

五階就不傳了,都一樣

接下來說一下代碼原理

首先看下這一段

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

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

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

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

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 如何在CocosCreator中利用常駐節(jié)點做圖層管理
  • 游戲開發(fā)中如何使用CocosCreator進行音效處理
  • CocosCreator ScrollView優(yōu)化系列之分幀加載
  • 詳解CocosCreator項目結(jié)構(gòu)機制
  • 如何使用CocosCreator對象池
  • CocosCreator如何實現(xiàn)劃過的位置顯示紋理
  • 整理CocosCreator常用知識點
  • 39條Python語句實現(xiàn)數(shù)字華容道
  • Android數(shù)字華容道小游戲開發(fā)
  • C/C++仿華容道小游戲
  • 詳解CocosCreator華容道數(shù)字拼盤

標簽:股票 駐馬店 江蘇 衡水 中山 呼和浩特 湖州 畢節(jié)

巨人網(wǎng)絡(luò)通訊聲明:本文標題《python實現(xiàn)數(shù)字華容道》,本文關(guān)鍵詞  python,實現(xiàn),數(shù)字,華容道,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python實現(xiàn)數(shù)字華容道》相關(guān)的同類信息!
  • 本頁收集關(guān)于python實現(xiàn)數(shù)字華容道的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产综合色在线| 国产精品乱码久久久久久| 91在线看国产| 成人午夜短视频| 一本到一区二区三区| 欧美国产禁国产网站cc| 亚洲三级理论片| 一区二区三区在线视频观看58| 一区二区三区在线视频观看58 | 国产一区二区不卡在线| 国内精品久久久久影院薰衣草| 日韩一区和二区| 日韩一区欧美小说| 免费在线观看成人| 成人精品国产一区二区4080| 国产色综合一区| 亚洲综合色成人| 国产福利一区二区三区| 国产精品拍天天在线| 日本不卡不码高清免费观看| 成人av免费观看| 高清国产一区二区| 亚洲成av人片在线观看| www.性欧美| 亚洲精品在线电影| 91在线视频观看| 久久久久久久久久久久久夜| 青青青伊人色综合久久| 91国产免费看| 精品亚洲免费视频| 制服丝袜av成人在线看| 亚洲日本一区二区三区| 亚洲一级二级三级在线免费观看| 97成人超碰视| 中文字幕欧美激情一区| 国产精品一卡二| 亚洲一区二区偷拍精品| www.色精品| 中文一区二区在线观看| 精品入口麻豆88视频| 国产a久久麻豆| 日韩一区二区在线观看视频播放| 自拍偷自拍亚洲精品播放| 老司机精品视频导航| 日韩午夜在线观看视频| 日韩高清一级片| 欧洲精品视频在线观看| 亚洲最大成人综合| 欧美日韩一区三区四区| 国产精品视频看| 精品理论电影在线| 久久 天天综合| 久久久噜噜噜久噜久久综合| 欧美精品三级在线观看| 免费在线观看日韩欧美| 2014亚洲片线观看视频免费| 中文字幕一区二区三| 中文字幕精品一区| 成人h精品动漫一区二区三区| 国产精品免费av| 国产精品初高中害羞小美女文| 亚洲免费av高清| 日本道精品一区二区三区| 亚洲黄色小说网站| 日韩理论片网站| 日韩色在线观看| 国产99精品国产| 国产激情视频一区二区在线观看 | 26uuu色噜噜精品一区| 欧美三电影在线| 亚洲地区一二三色| 欧美xxxx老人做受| 国产精品久久久久久久久动漫 | 亚洲成人免费在线| 日韩色在线观看| 蜜桃av一区二区在线观看| 免费成人在线网站| 中文字幕av一区二区三区免费看 | 欧美裸体bbwbbwbbw| 国产精品福利一区二区三区| 中文字幕一区av| 日韩一区二区三区电影在线观看| 国产精品99久久久| 欧美一区午夜视频在线观看| 日韩丝袜美女视频| 色丁香久综合在线久综合在线观看| 精品视频123区在线观看| 久久精品国产99国产| 国产麻豆成人精品| 久久激情五月婷婷| 综合久久久久久久| 91影院在线免费观看| 99久久久精品| 国产真实乱偷精品视频免| 亚洲sss视频在线视频| 九九在线精品视频| 91国在线观看| 精品国产乱码久久久久久1区2区| 国产精品私人影院| 日本女人一区二区三区| 国产成人av电影在线播放| 欧美最猛黑人xxxxx猛交| 久久久久成人黄色影片| 亚洲成人中文在线| 成人午夜电影网站| 日韩视频免费观看高清在线视频| 一色桃子久久精品亚洲| 免费观看一级欧美片| 色综合中文字幕国产 | 午夜精品视频在线观看| 国产激情一区二区三区| 欧美另类一区二区三区| 国产精品久久久久影院老司 | 国产很黄免费观看久久| 欧美日本国产一区| 久久精子c满五个校花| 日韩电影免费在线观看网站| 国产91精品一区二区麻豆网站 | 91麻豆精品国产91久久久使用方法 | 国产超碰在线一区| 91成人在线观看喷潮| 欧美日韩中文字幕一区二区| 国产免费观看久久| 蜜臂av日日欢夜夜爽一区| 91浏览器在线视频| 国产精品人人做人人爽人人添| 九色|91porny| 精品国产网站在线观看| 日本不卡123| 欧美日韩五月天| 亚洲国产精品传媒在线观看| 极品瑜伽女神91| 精品欧美一区二区在线观看| 亚洲sss视频在线视频| 欧洲精品一区二区| 亚洲午夜免费电影| 欧美伊人久久大香线蕉综合69| 亚洲免费观看高清完整版在线观看| av不卡在线观看| 亚洲视频在线观看三级| 91在线播放网址| 亚洲一二三四区不卡| 欧美日本一道本在线视频| 日韩成人精品在线| 日韩欧美一区二区久久婷婷| 免费观看在线综合| 久久综合九色综合欧美98 | 久久99九九99精品| 久久毛片高清国产| 粉嫩aⅴ一区二区三区四区五区| 欧美激情综合五月色丁香| 93久久精品日日躁夜夜躁欧美| 亚洲美女在线国产| 欧美男同性恋视频网站| 老司机一区二区| 中文欧美字幕免费| 欧美影院一区二区| 久久国产尿小便嘘嘘尿| 亚洲国产成人在线| 欧美在线999| 狠狠色丁香婷婷综合| 国产精品福利一区二区三区| 欧美裸体bbwbbwbbw| 激情欧美一区二区三区在线观看| 国产精品色婷婷久久58| 欧美视频在线观看一区二区| 激情小说欧美图片| 亚洲视频网在线直播| 91.com视频| va亚洲va日韩不卡在线观看| 丝袜美腿成人在线| 国产精品久久久99| 日韩一区二区三区高清免费看看| 成人手机电影网| 日本成人中文字幕| 国产精品情趣视频| 欧美岛国在线观看| 欧美色综合影院| 成人小视频免费观看| 婷婷丁香久久五月婷婷| 中文字幕国产精品一区二区| 这里只有精品免费| 色悠悠久久综合| 国产宾馆实践打屁股91| 日本亚洲最大的色成网站www| 国产精品久久毛片a| 日韩免费电影一区| 欧美日韩高清一区二区| 色综合网站在线| 国产91精品精华液一区二区三区| 天堂影院一区二区| 亚洲免费观看高清在线观看| 久久久99精品久久| 欧美大胆一级视频| 欧美亚洲国产一区二区三区| 不卡在线视频中文字幕| 国产一区二区日韩精品| 另类专区欧美蜜桃臀第一页| 亚洲成人午夜电影| 亚洲成人免费av|