Kai Zhang 6 years ago
parent
commit
893cfd4e60
1 changed files with 129 additions and 83 deletions
  1. 129 83
      pingpong.py

+ 129 - 83
pingpong.py

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