123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- #Programmierung 2 - Ping Pong Spiel
- # Willi Schlegel, Francine Theil, Kristin Weber
- # letzte Aenderung: 19.07.2017
- #-----------------------------------------------------------------
- # Import der einzelnen Module
- import random
- import time
- from Tkinter import *
- #----------------------------------------------------------------
- # Eigenschaften des Balles definieren
- class Ball():
- def __init__(self, canvas, color, size, paddle):
- self.canvas = canvas
- self.paddle = paddle
- self.id = canvas.create_oval(15, 15, size, size, fill=color)
- self.canvas.move(self.id, 245, 100)
- self.xspeed = random.randrange(-3,3)
- self.yspeed = -1
- self.hit_bottom = False
- self.score = 0
- def draw(self):
- self.canvas.move(self.id, self.xspeed, self.yspeed)
- pos = self.canvas.coords(self.id)
- if pos[0] <= 0:
- self.xspeed = 3
- if pos[1] <= 0:
- self.yspeed = 3
- if pos[2] >= 500:
- self.xspeed = -3
- if pos[3] >= 400:
- self.hit_bottom = True
- if self.hit_paddle(pos) == True:
- self.yspeed = -3
- self.xspeed = random.randrange(-3,3)
- self.score += 1
- def hit_paddle(self, pos):
- paddle_pos = self.canvas.coords(self.paddle.id)
- if pos[2] >= paddle_pos[0] and pos[0] <= paddle_pos[2]:
- if pos[3] >= paddle_pos[1] and pos[3] <= paddle_pos[3]:
- return True
- return False
- #---------------------------------------------------------------------------
- # Eigenschaften des Paddles definieren
- class Paddle:
- def __init__(self, canvas, color):
- self.canvas = canvas
- self.id = canvas.create_rectangle(0, 0, 100, 10, fill=color)
- self.canvas.move(self.id, 200, 300)
- self.xspeed = 0
- self.canvas.bind_all('<KeyPress-Left>', self.move_left)
- self.canvas.bind_all('<KeyPress-Right>', self.move_right)
- def draw(self):
- self.canvas.move(self.id, self.xspeed, 0)
- pos = self.canvas.coords(self.id)
- if pos[0] <= 0:
- self.xspeed = 0
- if pos[2] >= 500:
- self.xspeed = 0
- def move_left(self, evt):
- self.xspeed = -5
- def move_right(self, evt):
- self.xspeed = 5
- #----------------------------------------------------------------------------
- # Spieloberflaeche
- tk = Tk()
- tk.title("Superfantastisches Ping-Pong-Spiel")
- canvas = Canvas(tk, width=500, height=400, bd=3, bg='pink')
- canvas.pack()
- label = canvas.create_text(10, 10, anchor=NW, text="Punktestand: 0")
- tk.update()
- paddle = Paddle(canvas, 'black')
- ball = Ball(canvas, 'white', 25, paddle)
- def button_action():
- anweisungs_label.config(text=" ")
- exit_button = Button(tk, text="Spiel starten", command=tk.quit)
- exit_button.pack()
- # tk.mainloop()
- #--------------------------------------------------------------------------
- # Schleife fuer das fortlaufende Bewegen des Balles
- while ball.hit_bottom == False:
- ball.draw()
- paddle.draw()
- canvas.itemconfig(label, text="Highscore: "+str(ball.score))
- tk.update_idletasks()
- tk.update()
- time.sleep(0.01)
- while ball.hit_bottom == True:
- ball.draw()
- paddle.draw()
- canvas.itemconfig(label, text="Highscore: "+str(0))
- tk.update_idletasks()
- tk.update()
- time.sleep(0.01)
- # button_action()
- # tk.mainloop()
|