blob: 82a5dc07403c41519ec3ac8bfb4052b7004cd014 [file] [log] [blame]
Benjamin Petersond6d63f52009-01-04 18:53:28 +00001from tkinter import *
Guido van Rossum35820f71994-10-07 09:55:26 +00002
Guido van Rossum35820f71994-10-07 09:55:26 +00003
4class Pong(Frame):
5 def createWidgets(self):
Tim Peters182b5ac2004-07-18 06:16:08 +00006 self.QUIT = Button(self, text='QUIT', foreground='red',
7 command=self.quit)
8 self.QUIT.pack(side=LEFT, fill=BOTH)
Guido van Rossum35820f71994-10-07 09:55:26 +00009
Tim Peters182b5ac2004-07-18 06:16:08 +000010 ## The playing field
11 self.draw = Canvas(self, width="5i", height="5i")
Guido van Rossum35820f71994-10-07 09:55:26 +000012
Tim Peters182b5ac2004-07-18 06:16:08 +000013 ## The speed control for the ball
14 self.speed = Scale(self, orient=HORIZONTAL, label="ball speed",
15 from_=-100, to=100)
Guido van Rossum35820f71994-10-07 09:55:26 +000016
Tim Peters182b5ac2004-07-18 06:16:08 +000017 self.speed.pack(side=BOTTOM, fill=X)
Guido van Rossum35820f71994-10-07 09:55:26 +000018
Tim Peters182b5ac2004-07-18 06:16:08 +000019 # The ball
20 self.ball = self.draw.create_oval("0i", "0i", "0.10i", "0.10i",
21 fill="red")
22 self.x = 0.05
23 self.y = 0.05
24 self.velocity_x = 0.3
25 self.velocity_y = 0.5
Guido van Rossum35820f71994-10-07 09:55:26 +000026
Tim Peters182b5ac2004-07-18 06:16:08 +000027 self.draw.pack(side=LEFT)
Guido van Rossum35820f71994-10-07 09:55:26 +000028
29 def moveBall(self, *args):
Tim Peters182b5ac2004-07-18 06:16:08 +000030 if (self.x > 5.0) or (self.x < 0.0):
31 self.velocity_x = -1.0 * self.velocity_x
32 if (self.y > 5.0) or (self.y < 0.0):
33 self.velocity_y = -1.0 * self.velocity_y
Guido van Rossum35820f71994-10-07 09:55:26 +000034
Tim Peters182b5ac2004-07-18 06:16:08 +000035 deltax = (self.velocity_x * self.speed.get() / 100.0)
36 deltay = (self.velocity_y * self.speed.get() / 100.0)
37 self.x = self.x + deltax
38 self.y = self.y + deltay
Guido van Rossum35820f71994-10-07 09:55:26 +000039
Tim Peters182b5ac2004-07-18 06:16:08 +000040 self.draw.move(self.ball, "%ri" % deltax, "%ri" % deltay)
41 self.after(10, self.moveBall)
Guido van Rossum35820f71994-10-07 09:55:26 +000042
43 def __init__(self, master=None):
Tim Peters182b5ac2004-07-18 06:16:08 +000044 Frame.__init__(self, master)
45 Pack.config(self)
46 self.createWidgets()
47 self.after(10, self.moveBall)
Guido van Rossum35820f71994-10-07 09:55:26 +000048
49
50game = Pong()
51
52game.mainloop()