Browse Source

Das fertiges Programm

kai zhang 6 years ago
parent
commit
d3203a9575
1 changed files with 258 additions and 0 deletions
  1. 258 0
      PingPong.py

+ 258 - 0
PingPong.py

@@ -0,0 +1,258 @@
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, he#Einfaches Ping-Pong Spiel basier auf GUI(Tkinter)
109
+
110
+#Authors : Milad Shirvani Filabadi, Kai Zhang,Yuan Wei
111
+
112
+#15.11.2017
113
+
114
+#Hier sind erstmal gesamte schritte für das Programm.
115
+
116
+#Stufe 1 - Eigenschaften und Funktionen der Ball definieren
117
+#Class der Ball und Funktionen wurde in dieser Stufe difiniert.
118
+
119
+#Stufe 2 - Eigenschaften und Funktionen der Paddle definieren
120
+
121
+#Stufe 3 - Fenster und canvas erstellen für zeichnen
122
+
123
+#Stufe 4 - Animation Schleife
124
+
125
+#Stufe 5 - Game Over
126
+
127
+
128
+#hier sind die Modoule, die wir wind for das Programm brachen und muss während der Programm abgerufen werden.
129
+
130
+
131
+from tkinter import *
132
+import random
133
+import time
134
+
135
+# Eigenschaften und Funktionen der Ball definieren
136
+
137
+#Class von Ball wurde hier definiert und dann in der ball Class sind Objecte
138
+#und Eigenschaften und auch Funktionen der Ball definierte.
139
+#init-mthode ist hier benutzt.
140
+#init-methode installiert die erstellte Objecte.
141
+
142
+
143
+class Ball:
144
+    def __init__(self, canvas, farbe, groesse, paddle):
145
+        self.canvas = canvas
146
+        self.paddle = paddle
147
+        self.id = canvas.create_oval(10, 10, groesse, groesse, fill=farbe)
148
+        self.canvas.move(self.id, 245, 100)
149
+        self.xspeed = random.randrange(-3,3)#  x-ache Geschwindigkeit random
150
+        self.yspeed = -1  #y-ache Geschwindigkeit
151
+        self.hit_bottom = False
152
+        self.score = 0
153
+
154
+#hier wurde Die Bewegung des Balls definiert.In welche richtung das Ball bewegen sollen muss.
155
+
156
+    def draw(self):
157
+        self.canvas.move(self.id, self.xspeed, self.yspeed)
158
+        pos = self.canvas.coords(self.id) #ball koordination ,data speichern
159
+        if pos[1] <= 0:# wenn ball oberreseite trifft, wird nach unter
160
+            self.yspeed = 3 # Geschwindigkeit von oben nach unten
161
+        if pos[3] >= 400:# wenn ball unterseite trifft , dann wird spiel beenden.
162
+            self.hit_bottom = True
163
+        if pos[0] <= 0: #:#wenn ball gegen linksseite ,pos[0] nach rechts
164
+            self.xspeed = 3
165
+        if pos[2] >= 500:#wennn ball gegen rechtsseite, nach links
166
+            self.xspeed = -3
167
+        if self.hit_paddle(pos) == True:
168
+            self.yspeed = -3
169
+            self.xspeed = random.randrange(-3,3)
170
+            self.score = self.score + 1
171
+
172
+#Definition von dem Ball wenn trifft Paddle.
173
+#hier wird so defeniert wenn die koordination von Ball trifft koordination
174
+#von Paddle ls
175
+
176
+    def hit_paddle(self, pos):
177
+        paddle_pos = self.canvas.coords(self.paddle.id)
178
+        if pos[2] >= paddle_pos[0] and pos[0] <= paddle_pos[2]:
179
+            if pos[3] >= paddle_pos[1] and pos[3] <= paddle_pos[3]:
180
+                return True
181
+        return False
182
+
183
+# Eigenschaften und Funktionen der Paddle definieren
184
+##Class von paddle wurde hier definiert und dann in der paddle Class sind Objecte
185
+class Paddle:
186
+    def __init__(self, canvas, farbe):
187
+        self.canvas = canvas
188
+        self.id = canvas.create_rectangle(0,0, 100, 10, fill=farbe)
189
+        self.canvas.move(self.id, 200, 300)
190
+        self.xspeed = 0
191
+        self.canvas.bind_all('<KeyPress-Left>', self.move_left)
192
+        self.canvas.bind_all('<KeyPress-Right>', self.move_right)
193
+#
194
+    def draw(self):
195
+        self.canvas.move(self.id, self.xspeed, 0)
196
+        pos = self.canvas.coords(self.id)
197
+#wenn Paddle trift rechte oder linke seite der Wand  wurde dann hier Geschwindigkeit
198
+#null defeniert
199
+        if pos[0] <= 0:
200
+            self.xspeed = 0
201
+        if pos[2] >= 500:
202
+            self.xspeed = 0
203
+#Padlle Bewegung und geschwindigkeit der Paddle
204
+    def move_left(self, evt):
205
+        self.xspeed = -2
206
+    def move_right(self, evt):
207
+        self.xspeed = 2
208
+
209
+# Fenster und canvas erstellen für zeichnen
210
+# name des Spiels
211
+# Ballsfarbe,paddlesfarbe und Hintergrundsfarbe
212
+# ball groesse
213
+tk = Tk()
214
+tk.title("Ping-Pong Spiel")
215
+canvas = Canvas(tk, width=500, height=400, bd=0, bg='green')
216
+canvas.pack()pingpong
217
+label = canvas.create_text(5, 5, anchor=NW, text="Punkt: 0")
218
+tk.update() # update date
219
+paddle = Paddle(canvas, 'blue')
220
+ball = Ball(canvas, 'red', 25, paddle)
221
+
222
+# Animation Schleife
223
+# hier wird programm durchgeführt
224
+while ball.hit_bottom == False:
225
+    ball.draw()
226
+    paddle.draw()
227
+    canvas.itemconfig(label, text="Punkt: "+str(ball.score))
228
+    tk.update_idletasks()
229
+    tk.update()
230
+    time.sleep(0.01)
231
+
232
+# Game Over Wenn das Ball der Paddle nicht trifft wird Spiel beenden.
233
+#ein Text wird gezeigt nach dem Ende des Spiels.Größe und Font der Text sind hier definiert.
234
+go_label = canvas.create_text(250,200,text="GAME OVER",font=("Helvetica",30))
235
+#(Position x, position y, Textinhalt ,Type, Groesse)
236
+tk.update()
237
+ight=400, bd=0, bg='green')
238
+canvas.pack()pingpong
239
+label = canvas.create_text(5, 5, anchor=NW, text="Punkt: 0")
240
+tk.update() # update date
241
+paddle = Paddle(canvas, 'blue')
242
+ball = Ball(canvas, 'red', 25, paddle)
243
+
244
+# Animation Schleife
245
+# hier wird programm durchgeführt
246
+while ball.hit_bottom == False:
247
+    ball.draw()
248
+    paddle.draw()
249
+    canvas.itemconfig(label, text="Punkt: "+str(ball.score))
250
+    tk.update_idletasks()
251
+    tk.update()
252
+    time.sleep(0.01)
253
+
254
+# Game Over Wenn das Ball der Paddle nicht trifft wird Spiel beenden.
255
+#ein Text wird gezeigt nach dem Ende des Spiels.Größe und Font der Text sind hier definiert.
256
+go_label = canvas.create_text(250,200,text="GAME OVER",font=("Helvetica",30))
257
+#(Position x, position y, Textinhalt ,Type, Groesse)
258
+tk.update()