Ein GUI(Tkinter) basiertes Programm für ein einfaches Ping-Pong-Spiel. Die Steuerung des Paddles soll mittel der Tastatur erfolgen.

probe.py 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #Einfaches Ping-Pong Spiel basier auf GUI(Tkinter)
  2. #Authors : Milad Shirvani Filabadi, Kai Zhang,Yuan Wei
  3. #08.11.2017
  4. #Stufe 1 - Eigenschaften und Funktionen der Ball definieren
  5. #Stufe 2 - Eigenschaften und Funktionen der Paddle definieren
  6. #Stufe 3 - Fenster und canvas erstellen für zeichnen
  7. #Stufe 4 - Animation Schleife
  8. #Stufe 5 - Game Over
  9. from tkinter import *
  10. import random
  11. import time
  12. # Eigenschaften und Funktionen der Ball definieren
  13. class Ball:
  14. def __init__(self, canvas, color, size, paddle):
  15. self.canvas = canvas
  16. self.paddle = paddle
  17. self.id = canvas.create_oval(10, 10, size, size, fill=color)
  18. self.canvas.move(self.id, 245, 100)
  19. self.xspeed = random.randrange(-3,3)
  20. self.yspeed = -1
  21. self.hit_bottom = False
  22. self.score = 0
  23. def draw(self):
  24. self.canvas.move(self.id, self.xspeed, self.yspeed)
  25. pos = self.canvas.coords(self.id)
  26. if pos[1] <= 0:
  27. self.yspeed = 3
  28. if pos[3] >= 400:
  29. self.hit_bottom = True
  30. if pos[0] <= 0:
  31. self.xspeed = 3
  32. if pos[2] >= 500:
  33. self.xspeed = -3
  34. if self.hit_paddle(pos) == True:
  35. self.yspeed = -3
  36. self.xspeed = random.randrange(-3,3)
  37. self.score += 1
  38. def hit_paddle(self, pos):
  39. paddle_pos = self.canvas.coords(self.paddle.id)
  40. if pos[2] >= paddle_pos[0] and pos[0] <= paddle_pos[2]:
  41. if pos[3] >= paddle_pos[1] and pos[3] <= paddle_pos[3]:
  42. return True
  43. return False
  44. # Eigenschaften und Funktionen der Paddle definieren
  45. class Paddle:
  46. def __init__(self, canvas, color):
  47. self.canvas = canvas
  48. self.id = canvas.create_rectangle(0,0, 100, 10, fill=color)
  49. self.canvas.move(self.id, 200, 300)
  50. self.xspeed = 0
  51. self.canvas.bind_all('<KeyPress-Left>', self.move_left)
  52. self.canvas.bind_all('<KeyPress-Right>', self.move_right)
  53. def draw(self):
  54. self.canvas.move(self.id, self.xspeed, 0)
  55. pos = self.canvas.coords(self.id)
  56. if pos[0] <= 0:
  57. self.xspeed = 0
  58. if pos[2] >= 500:
  59. self.xspeed = 0
  60. def move_left(self, evt):
  61. self.xspeed = -2
  62. def move_right(self, evt):
  63. self.xspeed = 2
  64. # Fenster und canvas erstellen für zeichnen
  65. tk = Tk()
  66. tk.title("Ping-Pong Spiel")
  67. canvas = Canvas(tk, width=500, height=400, bd=0, bg='papaya whip')
  68. canvas.pack()
  69. label = canvas.create_text(5, 5, anchor=NW, text="Punkt: 0")
  70. tk.update()
  71. paddle = Paddle(canvas, 'blue')
  72. ball = Ball(canvas, 'red', 25, paddle)
  73. # Animation Schleife
  74. while ball.hit_bottom == False:
  75. ball.draw()
  76. paddle.draw()
  77. canvas.itemconfig(label, text="Punkt: "+str(ball.score))
  78. tk.update_idletasks()
  79. tk.update()
  80. time.sleep(0.01)
  81. # Game Over
  82. go_label = canvas.create_text(250,200,text="GAME OVER",font=("Helvetica",30))
  83. tk.update()