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

pingpong.py 4.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. #Einfaches Ping-Pong Spiel basier auf GUI(Tkinter)
  2. #Authors : Milad Shirvani Filabadi, Kai Zhang,Yuan Wei
  3. #15.11.2017
  4. #Hier sind erstmal gesamte schritte für das Programm.
  5. #Stufe 1 - Eigenschaften und Funktionen der Ball definieren
  6. #Class der Ball und Funktionen wurde in dieser Stufe difiniert.
  7. #Stufe 2 - Eigenschaften und Funktionen der Paddle definieren
  8. #Stufe 3 - Fenster und canvas erstellen für zeichnen
  9. #Stufe 4 - Animation Schleife
  10. #Stufe 5 - Game Over
  11. #hier sind die Modoule, die wir wind for das Programm brachen und muss während der Programm abgerufen werden.
  12. from tkinter import *
  13. import random
  14. import time
  15. # Eigenschaften und Funktionen der Ball definieren
  16. #Class von Ball wurde hier definiert und dann in der ball Class sind Objecte
  17. #und Eigenschaften und auch Funktionen der Ball definierte.
  18. #init-mthode ist hier benutzt.
  19. #init-methode installiert die erstellte Objecte.
  20. class Ball:
  21. def __init__(self, canvas, farbe, groesse, paddle):
  22. self.canvas = canvas
  23. self.paddle = paddle
  24. self.id = canvas.create_oval(10, 10, groesse, groesse, fill=farbe)
  25. self.canvas.move(self.id, 245, 100)
  26. self.xspeed = random.randrange(-3,3)# x-ache Geschwindigkeit random
  27. self.yspeed = -1 #y-ache Geschwindigkeit
  28. self.hit_bottom = False
  29. self.score = 0
  30. #hier wurde Die Bewegung des Balls definiert.In welche richtung das Ball bewegen sollen muss.
  31. def draw(self):
  32. self.canvas.move(self.id, self.xspeed, self.yspeed)
  33. pos = self.canvas.coords(self.id) #ball koordination ,data speichern
  34. if pos[1] <= 0:# wenn ball oberreseite trifft, wird nach unter
  35. self.yspeed = 3 # Geschwindigkeit von oben nach unten
  36. if pos[3] >= 400:# wenn ball unterseite trifft , dann wird spiel beenden.
  37. self.hit_bottom = True
  38. if pos[0] <= 0: #:#wenn ball gegen linksseite ,pos[0] nach rechts
  39. self.xspeed = 3
  40. if pos[2] >= 500:#wennn ball gegen rechtsseite, nach links
  41. self.xspeed = -3
  42. if self.hit_paddle(pos) == True:
  43. self.yspeed = -3
  44. self.xspeed = random.randrange(-3,3)
  45. self.score = self.score + 1
  46. #Definition von dem Ball wenn trifft Paddle.
  47. #hier wird so defeniert wenn die koordination von Ball trifft koordination
  48. #von Paddle ls
  49. def hit_paddle(self, pos):
  50. paddle_pos = self.canvas.coords(self.paddle.id)
  51. if pos[2] >= paddle_pos[0] and pos[0] <= paddle_pos[2]:
  52. if pos[3] >= paddle_pos[1] and pos[3] <= paddle_pos[3]:
  53. return True
  54. return False
  55. # Eigenschaften und Funktionen der Paddle definieren
  56. ##Class von paddle wurde hier definiert und dann in der paddle Class sind Objecte
  57. class Paddle:
  58. def __init__(self, canvas, farbe):
  59. self.canvas = canvas
  60. self.id = canvas.create_rectangle(0,0, 100, 10, fill=farbe)
  61. self.canvas.move(self.id, 200, 300)
  62. self.xspeed = 0
  63. self.canvas.bind_all('<KeyPress-Left>', self.move_left)
  64. self.canvas.bind_all('<KeyPress-Right>', self.move_right)
  65. #
  66. def draw(self):
  67. self.canvas.move(self.id, self.xspeed, 0)
  68. pos = self.canvas.coords(self.id)
  69. #wenn Paddle trift rechte oder linke seite der Wand wurde dann hier Geschwindigkeit
  70. #null defeniert
  71. if pos[0] <= 0:
  72. self.xspeed = 0
  73. if pos[2] >= 500:
  74. self.xspeed = 0
  75. #Padlle Bewegung und geschwindigkeit der Paddle
  76. def move_left(self, evt):
  77. self.xspeed = -2
  78. def move_right(self, evt):
  79. self.xspeed = 2
  80. # Fenster und canvas erstellen für zeichnen
  81. # name des Spiels
  82. # Ballsfarbe,paddlesfarbe und Hintergrundsfarbe
  83. # ball groesse
  84. tk = Tk()
  85. tk.title("Ping-Pong Spiel")
  86. canvas = Canvas(tk, width=500, height=400, bd=0, bg='green')
  87. canvas.pack()
  88. label = canvas.create_text(5, 5, anchor=NW, text="Punkt: 0")
  89. tk.update() # update date
  90. paddle = Paddle(canvas, 'blue')
  91. ball = Ball(canvas, 'red', 25, paddle)
  92. # Animation Schleife
  93. # hier wird programm durchgeführt
  94. while ball.hit_bottom == False:
  95. ball.draw()
  96. paddle.draw()
  97. canvas.itemconfig(label, text="Punkt: "+str(ball.score))
  98. tk.update_idletasks()
  99. tk.update()
  100. time.sleep(0.01)
  101. # Game Over Wenn das Ball der Paddle nicht trifft wird Spiel beenden.
  102. #ein Text wird gezeigt nach dem Ende des Spiels.Größe und Font der Text sind hier definiert.
  103. go_label = canvas.create_text(250,200,text="GAME OVER",font=("Helvetica",30))
  104. #(Position x, position y, Textinhalt ,Type, Groesse)
  105. tk.update()