import tkinter
############################################################
# PLANE CLASS
############################################################
class Plane ():
def __init__(self, x, y, dx, dy):
# Stash args as ivars
self._x = x
self._y = y
self._dx = dx
self._dy = dy
# "Draw" ourself
def draw (self):
print ("Plane at " + str(self._x) + "," + str(self._y))
# Timer callback dispatched to us
def tick (self):
self._x += self._dx
self._y += self._dy
############################################################
# MAIN PROGRAM
############################################################
# Create map (just a list)
planes = list()
# Create some planes in the map
planes.append (Plane (30, 20, 1, 2))
planes.append (Plane (100, 20, 2, 1))
planes.append (Plane (140, 40, 1, 1))
# Unit test of Plane class
print ("\nInitial:")
for p in planes:
p.draw()
print ("\nAfter 1 tick:")
for p in planes:
p.tick()
p.draw()
print ("\nAfter 2 ticks:")
for p in planes:
p.tick()
p.draw()
# Primitive animation
# Receive tick, pass it to objects that need it,
# then set up the next callback in 1 second
def tick():
print ("\nAnimating:")
for p in planes:
p.tick()
p.draw()
top.after(1000, tick)
# Uses the after() function from tkinter
# Also creates useless main window here
top = tkinter.Tk()
# Commented out initially so can run on interactive command line
# top.after(1000, tick)
# top.mainloop()