#Einfaches Ping-Pong Spiel basier auf GUI(Tkinter) #Authors : Milad Shirvani Filabadi, Kai Zhang,Yuan Wei #15.11.2017 #Hier sind erstmal gesamte schritte für das Programm. #Stufe 1 - Eigenschaften und Funktionen der Ball definieren #Class der Ball und Funktionen wurde in dieser Stufe difiniert. #Stufe 2 - Eigenschaften und Funktionen der Paddle definieren #Stufe 3 - Fenster und canvas erstellen für zeichnen #Stufe 4 - Animation Schleife #Stufe 5 - Game Over #hier sind die Modoule, die wir wind for das Programm brachen und muss während der Programm abgerufen werden. from tkinter import * import random import time # Eigenschaften und Funktionen der Ball definieren #Class von Ball wurde hier definiert und dann in der ball Class sind Objecte #und Eigenschaften und auch Funktionen der Ball definierte. #init-mthode ist hier benutzt. #init-methode installiert die erstellte Objecte. class Ball: def __init__(self, canvas, farbe, groesse, paddle): self.canvas = canvas self.paddle = paddle self.id = canvas.create_oval(10, 10, groesse, groesse, fill=farbe) self.canvas.move(self.id, 245, 100) self.xspeed = random.randrange(-3,3)# x-ache Geschwindigkeit random self.yspeed = -1 #y-ache Geschwindigkeit self.hit_bottom = False self.score = 0 #hier wurde Die Bewegung des Balls definiert.In welche richtung das Ball bewegen sollen muss. def draw(self): self.canvas.move(self.id, self.xspeed, self.yspeed) pos = self.canvas.coords(self.id) #ball koordination ,data speichern if pos[1] <= 0:# wenn ball oberreseite trifft, wird nach unter self.yspeed = 3 # Geschwindigkeit von oben nach unten if pos[3] >= 400:# wenn ball unterseite trifft , dann wird spiel beenden. self.hit_bottom = True if pos[0] <= 0: #:#wenn ball gegen linksseite ,pos[0] nach rechts self.xspeed = 3 if pos[2] >= 500:#wennn ball gegen rechtsseite, nach links self.xspeed = -3 if self.hit_paddle(pos) == True: self.yspeed = -3 self.xspeed = random.randrange(-3,3) self.score = self.score + 1 #Definition von dem Ball wenn trifft Paddle. #hier wird so defeniert wenn die koordination von Ball trifft koordination #von Paddle ls 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 und Funktionen der Paddle definieren ##Class von paddle wurde hier definiert und dann in der paddle Class sind Objecte class Paddle: def __init__(self, canvas, farbe): self.canvas = canvas self.id = canvas.create_rectangle(0,0, 100, 10, fill=farbe) self.canvas.move(self.id, 200, 300) self.xspeed = 0 self.canvas.bind_all('', self.move_left) self.canvas.bind_all('', self.move_right) # def draw(self): self.canvas.move(self.id, self.xspeed, 0) pos = self.canvas.coords(self.id) #wenn Paddle trift rechte oder linke seite der Wand wurde dann hier Geschwindigkeit #null defeniert if pos[0] <= 0: self.xspeed = 0 if pos[2] >= 500: self.xspeed = 0 #Padlle Bewegung und geschwindigkeit der Paddle def move_left(self, evt): self.xspeed = -2 def move_right(self, evt): self.xspeed = 2 # Fenster und canvas erstellen für zeichnen # name des Spiels # Ballsfarbe,paddlesfarbe und Hintergrundsfarbe # ball groesse tk = Tk() tk.title("Ping-Pong Spiel") canvas = Canvas(tk, width=500, height=400, bd=0, bg='green') canvas.pack() label = canvas.create_text(5, 5, anchor=NW, text="Punkt: 0") tk.update() # update date paddle = Paddle(canvas, 'blue') ball = Ball(canvas, 'red', 25, paddle) # Animation Schleife # hier wird programm durchgeführt while ball.hit_bottom == False: ball.draw() paddle.draw() canvas.itemconfig(label, text="Punkt: "+str(ball.score)) tk.update_idletasks() tk.update() time.sleep(0.01) # Game Over Wenn das Ball der Paddle nicht trifft wird Spiel beenden. #ein Text wird gezeigt nach dem Ende des Spiels.Größe und Font der Text sind hier definiert. go_label = canvas.create_text(250,200,text="GAME OVER",font=("Helvetica",30)) #(Position x, position y, Textinhalt ,Type, Groesse) tk.update()