美文网首页
python turtle库实例:动画版汉诺塔的实现

python turtle库实例:动画版汉诺塔的实现

作者: 顺子_aba3 | 来源:发表于2021-10-25 12:14 被阅读0次
  • 效果图


    动画版汉诺塔效果图
  • 源码如下:
import turtle as t


def hanoi(n, a, b, c):
    if n == 1:
        move(a, c)
    else:
        hanoi(n - 1, a, c, b)
        move(a, c)
        hanoi(n - 1, b, a, c)


def move(a, b):
    m = towers[a].pop()  # 列表尾部的小盘子删除,并取出
    m.goto(p[b], len(towers[b]) * 20)  # 移动取出的小盘子
    towers[b].append(m)  # 取出的小盘子放入另一个塔


n = 5
towers = [[], [], []]  # 三个塔
p = [-200, 0, 200]  # 三个塔的x位置

for i in range(n):  # 初始化第一个塔
    tt = t.Turtle()  # 盘子是一个乌龟
    # 设置乌龟不划线,黑线黄底,方块状,大小、位置
    tt.up()
    tt.color('black', 'yellow')
    tt.shape('square')
    tt.shapesize(1, n - i)  # 列表头部是最大的盘子,尾部是最小的盘子
    tt.goto(p[0], i * 20)

    towers[0].append(tt)  # 把乌龟放入第一个塔

hanoi(n, 0, 1, 2)

t.done()

相关文章

网友评论

      本文标题:python turtle库实例:动画版汉诺塔的实现

      本文链接:https://www.haomeiwen.com/subject/puvjaltx.html