python寫簡單的圖形界面漢諾塔解題器


下圖是漢諾塔游戲的簡單圖示,我們要把x柱子上面的移動到z軸上面(漢諾塔游戲規則可以自行搜索,這里不做介紹)

需要引入tkinter和ScrolledText模塊,下面直接貼代碼(我用的是python3.6)。

 1 import tkinter
 2 from tkinter.scrolledtext import ScrolledText
 3 root = tkinter.Tk()
 4 root.title('漢諾塔解題器')
 5 root.geometry('300x200')
 6 root.resizable(width=False, height=True)
 7 tkinter.Label(root, text='請輸入漢諾塔的層數', font=('微軟雅黑', 12)).pack()
 8 var = tkinter.StringVar()
 9 e = tkinter.Entry(root, textvariable = var)
10 e.pack()
11 t = tkinter.scrolledtext.ScrolledText(root)
12 ans = []
13 def hanoi(n, x, y, z):
14     if n == 1 :
15         ans.append(x + '-->' + z)
16     else :
17        hanoi(n-1, x, z, y) #將前n-1個盤子從x移動到y上
18        ans.append(x + '-->' + z) #將最底下的最后一個盤子從x移動到z上
19        hanoi(n-1, y, x, z) #將y上的n-1個盤子移動到z上
20     return ans
21 def calc() :
22     del ans[:]
23     n = int(var.get())
24     str2 = hanoi(n, 'x', 'y', 'z')
25     t.delete(0.0, tkinter.END)
26     count = 0
27     for stre in str2 :
28         count = count + 1
29         t.insert(tkinter.END, '' + str(count)  + '步:' + stre + '\n')
30     t.insert(1.0, '[一共' + str(count) + '步]\n')
31     t.pack()
32 tkinter.Button(root, text="確定", command=calc).pack()
33 root.mainloop()

 

然后運行之后結果如下圖,比如輸入漢諾塔的層數為3,然后點擊確定按鈕下面就會顯示出詳細的

步驟。

 

 

(ps:寫這個是為了做筆記防止以后忘記,解題思路代碼部分參考網上搜索的結果,例如小甲魚的python教學,若有侵權聯系我馬上刪除,謝謝!!)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM