码迷,mamicode.com
首页 > 编程语言 > 详细

python写简单的图形界面汉诺塔解题器

时间:2017-11-25 18:28:08      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:ring   let   思路   blog   inter   1.0   输入   引入   rom   

下图是汉诺塔游戏的简单图示,我们要把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写简单的图形界面汉诺塔解题器

标签:ring   let   思路   blog   inter   1.0   输入   引入   rom   

原文地址:http://www.cnblogs.com/LoongKo/p/7895700.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!