python写简单的图形界面汉诺塔解题器
Posted LoongKo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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教学,若有侵权联系我马上删除,谢谢!!)
以上是关于python写简单的图形界面汉诺塔解题器的主要内容,如果未能解决你的问题,请参考以下文章