• 大小: 3KB
    文件类型: .py
    金币: 2
    下载: 1 次
    发布日期: 2021-05-09
  • 语言: Python
  • 标签: Python  

资源简介

这是一个用Python制作的汉诺塔演示小脚本,适合想入门Python的朋友!

资源截图

代码片段和文件信息

from tkinter import Tk Canvas


def hanoi(n a b c report):
    if n <= 0:
        return
    hanoi(n-1 a c b report)
    report(n a c)
    hanoi(n-1  b a c report)


class Tkhanoi:
    def __init__(self n speed):
        self.n = n
        self.speed = speed
        self.tk = tk = Tk(className=‘Hanoi‘)
        self.canvas = c = Canvas(tkwidth=500height=500)
        c.pack()
        width height = tk.getint(c[‘width‘]) tk.getint(c[‘height‘])

        pegwidth = 10
        pegheight = height/2
        pegdist = width/3
        x1 y1 = (pegdist-pegwidth)/2 height/3
        x2 y2 = x1+pegwidth y1+pegheight
        self.pegs = []
        p = c.create_rectangle(x1 y1 x2 y2 fill=‘black‘)
        self.pegs.append(p)
        x1 x2 = x1+pegdist x2+pegdist
        p = c.create_rectangle(x1 y1 x2 y2 fill=‘black‘)
        self.pegs.append(p)
        x1 x2 = x1+pegdist x2+pegdist
        p = c.create_rectangle(x1 y1 x2 y2 fill=‘black‘)
        self.pegs.append(p)
        self.tk.update()

        pieceheight = pegheight//16
        maxpiecewidth = pegdist*2//3
        minpiecewidth = 2*pegwidth
        self.pegstate = [[] [] []]
        self.pieces = {}
        x1 y1 = (pegdist-maxpiecewidth)//2 y2-pieceheight-2
        x2 y2 = x1+maxpiecewidth y1+pieceheight
        dx = (maxpiecewidth-minpiecewidth) // (2*max(1 n-1))
        for i in range(n 0 -1):
            p = c.create_rectangle(x1 y1 x2 y2 fill=‘red‘)
            self.pieces[i] = p
            self.pegstate[0].append(i)
        

评论

共有 条评论