#! /usr/bin/python2.7 """ turtle-example-suite: tdemo_minimal_hanoi.py A minimal 'Towers of Hanoi' animation: A tower of 6 discs is transferred from the left to the right peg. An imho quite elegant and concise implementation using a tower class, which is derived from the built-in type list. Discs are turtles with shape "square", but stretched to rectangles by shapesize() --------------------------------------- To exit press STOP button --------------------------------------- """ from turtle import * class Disc(Turtle): def __init__(self, n): Turtle.__init__(self, shape="square", visible=False) self.pu() self.shapesize(1.5, n*1.5, 2) # square-->rectangle self.fillcolor(n/6., 0, 1-n/6.) self.st() class Tower(list): "Hanoi tower, a subclass of built-in type list" def __init__(self, x): "create an empty tower. x is x-position of peg" self.x = x def push(self, d): d.setx(self.x) d.sety(-150+34*len(self)) self.append(d) def pop(self): d = list.pop(self) d.sety(150) return d def hanoi(n, from_, with_, to_): if n > 0: hanoi(n-1, from_, to_, with_) to_.push(from_.pop()) hanoi(n-1, with_, from_, to_) def play(): onkey(None,"space") clear() try: hanoi(6, t1, t2, t3) write("press STOP button to exit", align="center", font=("Courier", 16, "bold")) except Terminator: pass # turtledemo user pressed STOP def main(): global t1, t2, t3 ht(); penup(); goto(0, -225) # writer turtle t1 = Tower(-250) t2 = Tower(0) t3 = Tower(250) # make tower of 6 discs for i in range(6,0,-1): t1.push(Disc(i)) # prepare spartanic user interface ;-) write("press spacebar to start game", align="center", font=("Courier", 16, "bold")) onkey(play, "space") listen() return "EVENTLOOP" if __name__=="__main__": msg = main() print msg mainloop()
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
about_turtle.txt | File | 3.44 KB | 0644 |
|
about_turtledemo.txt | File | 302 B | 0644 |
|
demohelp.txt | File | 2.96 KB | 0644 |
|
tdemo_I_dontlike_tiltdemo.py | File | 1.05 KB | 0755 |
|
tdemo_I_dontlike_tiltdemo.pyc | File | 1.62 KB | 0644 |
|
tdemo_I_dontlike_tiltdemo.pyo | File | 1.62 KB | 0644 |
|
tdemo_bytedesign.py | File | 4.12 KB | 0755 |
|
tdemo_bytedesign.pyc | File | 5.19 KB | 0644 |
|
tdemo_bytedesign.pyo | File | 5.19 KB | 0644 |
|
tdemo_chaos.py | File | 951 B | 0644 |
|
tdemo_chaos.pyc | File | 2.24 KB | 0644 |
|
tdemo_chaos.pyo | File | 2.24 KB | 0644 |
|
tdemo_clock.py | File | 3.14 KB | 0755 |
|
tdemo_clock.pyc | File | 4.43 KB | 0644 |
|
tdemo_clock.pyo | File | 4.43 KB | 0644 |
|
tdemo_colormixer.py | File | 1.31 KB | 0644 |
|
tdemo_colormixer.pyc | File | 2.31 KB | 0644 |
|
tdemo_colormixer.pyo | File | 2.31 KB | 0644 |
|
tdemo_fractalcurves.py | File | 3.33 KB | 0755 |
|
tdemo_fractalcurves.pyc | File | 3.44 KB | 0644 |
|
tdemo_fractalcurves.pyo | File | 3.44 KB | 0644 |
|
tdemo_lindenmayer_indian.py | File | 2.38 KB | 0755 |
|
tdemo_lindenmayer_indian.pyc | File | 3.52 KB | 0644 |
|
tdemo_lindenmayer_indian.pyo | File | 3.52 KB | 0644 |
|
tdemo_minimal_hanoi.py | File | 2 KB | 0755 |
|
tdemo_minimal_hanoi.pyc | File | 3.54 KB | 0644 |
|
tdemo_minimal_hanoi.pyo | File | 3.54 KB | 0644 |
|
tdemo_nim.py | File | 6.36 KB | 0644 |
|
tdemo_nim.pyc | File | 9.16 KB | 0644 |
|
tdemo_nim.pyo | File | 9.16 KB | 0644 |
|
tdemo_paint.py | File | 1.26 KB | 0755 |
|
tdemo_paint.pyc | File | 1.86 KB | 0644 |
|
tdemo_paint.pyo | File | 1.86 KB | 0644 |
|
tdemo_peace.py | File | 1.04 KB | 0755 |
|
tdemo_peace.pyc | File | 1.36 KB | 0644 |
|
tdemo_peace.pyo | File | 1.36 KB | 0644 |
|
tdemo_penrose.py | File | 3.45 KB | 0755 |
|
tdemo_penrose.pyc | File | 5.86 KB | 0644 |
|
tdemo_penrose.pyo | File | 5.86 KB | 0644 |
|
tdemo_planet_and_moon.py | File | 2.76 KB | 0755 |
|
tdemo_planet_and_moon.pyc | File | 4.43 KB | 0644 |
|
tdemo_planet_and_moon.pyo | File | 4.43 KB | 0644 |
|
tdemo_tree.py | File | 1.38 KB | 0755 |
|
tdemo_tree.pyc | File | 2.07 KB | 0644 |
|
tdemo_tree.pyo | File | 2.07 KB | 0644 |
|
tdemo_two_canvases.py | File | 1.09 KB | 0644 |
|
tdemo_two_canvases.pyc | File | 1.6 KB | 0644 |
|
tdemo_two_canvases.pyo | File | 1.6 KB | 0644 |
|
tdemo_wikipedia.py | File | 1.32 KB | 0644 |
|
tdemo_wikipedia.pyc | File | 1.91 KB | 0644 |
|
tdemo_wikipedia.pyo | File | 1.91 KB | 0644 |
|
tdemo_yinyang.py | File | 807 B | 0755 |
|
tdemo_yinyang.pyc | File | 1.29 KB | 0644 |
|
tdemo_yinyang.pyo | File | 1.29 KB | 0644 |
|
turtle.cfg | File | 160 B | 0644 |
|
turtleDemo.py | File | 9.85 KB | 0755 |
|
turtleDemo.pyc | File | 10.69 KB | 0644 |
|
turtleDemo.pyo | File | 10.69 KB | 0644 |
|