| 1 | from Tkinter import *
|
|---|
| 2 |
|
|---|
| 3 | import string
|
|---|
| 4 |
|
|---|
| 5 |
|
|---|
| 6 | class 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 |
|
|---|
| 52 | game = Pong()
|
|---|
| 53 |
|
|---|
| 54 | game.mainloop()
|
|---|