Erstellen eines Ping Pong Spiels mittels Python unter Verwendung einer grafischen Benutzeroberfläche

pingpong.py 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. # Programmierung 2 - Ping Pong Spiel
  2. # Willi Schlegel, Francine Theil, Kristin Weber
  3. # letzte Aenderung: 19.07.2017
  4. #-----------------------------------------------------------------
  5. # Import der einzelnen Module
  6. import random
  7. import time
  8. from Tkinter import *
  9. #----------------------------------------------------------------
  10. # Eigenschaften des Balles definieren
  11. class Ball():
  12. def __init__(self, canvas, color, size, paddle):
  13. self.canvas = canvas
  14. self.paddle = paddle
  15. self.id = canvas.create_oval(15, 15, size, size, fill=color)
  16. self.canvas.move(self.id, 245, 100)
  17. self.xspeed = random.randrange(-3,3)
  18. self.yspeed = -1
  19. self.hit_bottom = False
  20. self.score = 0
  21. def draw(self):
  22. self.canvas.move(self.id, self.xspeed, self.yspeed)
  23. pos = self.canvas.coords(self.id)
  24. if pos[0] <= 0:
  25. self.xspeed = 3
  26. if pos[1] <= 0:
  27. self.yspeed = 3
  28. if pos[2] >= 500:
  29. self.xspeed = -3
  30. if pos[3] >= 400:
  31. self.hit_bottom = True
  32. if self.hit_paddle(pos) == True:
  33. self.yspeed = -3
  34. self.xspeed = random.randrange(-3,3)
  35. self.score += 1
  36. def hit_paddle(self, pos):
  37. paddle_pos = self.canvas.coords(self.padle.id)
  38. if pos[2] >= padle_pos[0] and pos[0] <= paddle_pos[2]:
  39. if pos[3] >= paddle_pos[1] and pos[3] <= paddle_pos[3]:
  40. return True
  41. return False
  42. #---------------------------------------------------------------------------
  43. # Eigenschaften des Paddles definieren
  44. class Paddle:
  45. def __init__(self, canvas, color):
  46. self.canvas = canvas
  47. self.id = canvas.create_rectangle(0, 0, 100, 10, fill=color)
  48. self.canvas.move(self.id, 200, 300)
  49. self.xspeed = 0
  50. self.canvas.bind_all('<KeyPress-Right>', self.move_right)
  51. self.canvas.bind_all('<KeyPress-Left>', self.move_left)
  52. def draw(self):
  53. self.canvas.move(self.id, self.xspeed, 0)
  54. pos = self.canvas.coords(self.id)
  55. if pos[0] <= 0:
  56. self.xspeed = 0
  57. if pos[2] >= 500:
  58. self.xspeed = 0
  59. def move_left(self, evt):
  60. self.xspeed = -2
  61. def move_right(self, evt):
  62. self.xspeed = 2
  63. #----------------------------------------------------------------------------
  64. # Spieloberflaeche
  65. tk = Tk()
  66. tk.title("Superfantastisches Ping-Pong-Spiel")
  67. canvas = Canvas(tk, width=500, height=400, bd=3, bg='pink')
  68. canvas.pack()
  69. label = canvas.create_text(10, 10, anchor=NW, text="Punktestand: 0")
  70. tk.update()
  71. paddle = Paddle(canvas, 'black')
  72. ball = Ball(canvas, 'white', 25, paddle)
  73. #--------------------------------------------------------------------------
  74. # Schleife fuer das fortlaufende Bewegen des Balles
  75. while ball.hit_bottom == False:
  76. ball.draw()
  77. padle.draw()
  78. canvwas.itemconfig(label, text="Highscore: "+str(ball.score))
  79. tk.update_idletasks()
  80. tk.update()
  81. time.sleep(0.01)