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

  • 效果图


    动画版汉诺塔效果图
  • 源码如下:
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()

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容