PageRenderTime 28ms CodeModel.GetById 12ms app.highlight 11ms RepoModel.GetById 3ms app.codeStats 0ms

/Demo/tkinter/matt/pong-demo-1.py

http://unladen-swallow.googlecode.com/
Python | 54 lines | 36 code | 15 blank | 3 comment | 4 complexity | fc94f23ab75685cc45329628619bfdd3 MD5 | raw file
 1from Tkinter import *
 2
 3import string
 4
 5
 6class Pong(Frame):
 7    def createWidgets(self):
 8        self.QUIT = Button(self, text='QUIT', foreground='red',
 9                           command=self.quit)
10        self.QUIT.pack(side=LEFT, fill=BOTH)
11
12        ## The playing field
13        self.draw = Canvas(self, width="5i", height="5i")
14
15        ## The speed control for the ball
16        self.speed = Scale(self, orient=HORIZONTAL, label="ball speed",
17                           from_=-100, to=100)
18
19        self.speed.pack(side=BOTTOM, fill=X)
20
21        # The ball
22        self.ball = self.draw.create_oval("0i", "0i", "0.10i", "0.10i",
23                                          fill="red")
24        self.x = 0.05
25        self.y = 0.05
26        self.velocity_x = 0.3
27        self.velocity_y = 0.5
28
29        self.draw.pack(side=LEFT)
30
31    def moveBall(self, *args):
32        if (self.x > 5.0) or (self.x < 0.0):
33            self.velocity_x = -1.0 * self.velocity_x
34        if (self.y > 5.0) or (self.y < 0.0):
35            self.velocity_y = -1.0 * self.velocity_y
36
37        deltax = (self.velocity_x * self.speed.get() / 100.0)
38        deltay = (self.velocity_y * self.speed.get() / 100.0)
39        self.x = self.x + deltax
40        self.y = self.y + deltay
41
42        self.draw.move(self.ball,  "%ri" % deltax, "%ri" % deltay)
43        self.after(10, self.moveBall)
44
45    def __init__(self, master=None):
46        Frame.__init__(self, master)
47        Pack.config(self)
48        self.createWidgets()
49        self.after(10, self.moveBall)
50
51
52game = Pong()
53
54game.mainloop()