summaryrefslogtreecommitdiff
path: root/pong.py
diff options
context:
space:
mode:
Diffstat (limited to 'pong.py')
-rw-r--r--pong.py79
1 files changed, 79 insertions, 0 deletions
diff --git a/pong.py b/pong.py
new file mode 100644
index 0000000..574253a
--- /dev/null
+++ b/pong.py
@@ -0,0 +1,79 @@
+# zustand.Ball
+# Ball.xKoordinate()
+# Ball.yKoordinate()
+#
+# zustand.listeBall()
+# zustand.Schlaeger
+# Schlaeger.identifikation()
+# Schlaeger.yKoordinate()
+# Schlaeger.punktzahl()
+# zustand.listeSchlaeger()
+#
+# zug.ausgabe(text)
+# zug.nachOben()
+# zug.nachUnten()
+
+import math
+
+def zug(id, zustand, zug):
+ if not "round" in globals():
+ # in der ersten Runde nur initialisieren
+ globals()["t_ballX"] = globals()["letztes_ballX"] = getBall(zustand).xKoordinate()
+ globals()["t_ballY"] = globals()["letztes_ballY"] = getBall(zustand).yKoordinate()
+ globals()["deltaX"] = globals()["deltaY"] = globals()["round"] = globals()["count"] = 0
+ return
+
+ globals()["round"] += 1
+
+# zug.ausgabe("Runde " + str(globals()["round"]))
+
+ globals()["t_ballX"] = getBall(zustand).xKoordinate()
+ globals()["t_ballY"] = getBall(zustand).yKoordinate()
+
+ if (globals()["t_ballX"] < 15 and globals()["deltaX"] <= 0) or (globals()["t_ballX"] > 50 and globals()["deltaX"] >= 0) \
+ or (globals()["t_ballY"] < 5) or (globals()["t_ballY"] > 55):
+ globals()["letztes_ballX"], globals()["letztes_ballY"] = globals()["t_ballX"], globals()["t_ballY"]
+ globals()["count"] = 0
+
+ if globals()["count"] != 0:
+ globals()["deltaX"] = float((globals()["t_ballX"] - globals()["letztes_ballX"]) / globals()["count"])
+ globals()["deltaY"] = float((globals()["t_ballY"] - globals()["letztes_ballY"]) / globals()["count"])
+ globals()["count"] += 1
+
+ bounces = 0
+ if globals()["deltaX"] != 0:
+ schritte = abs(0 + globals()["t_ballX"] / globals()["deltaX"])
+ #nach `schritte` Runden ist der Ball beim anderen Spieler
+ bounces = math.floor((globals()["t_ballY"] + abs(globals()["deltaY"] * schritte)) / 60)
+# zug.ausgabe("Achtung: ")
+# zug.ausgabe(bounces)
+# zug.ausgabe(schritte)
+
+ if globals()["deltaX"] < 0:
+ schritte = abs(0 - globals()["t_ballX"]) / globals()["deltaX"]
+ target_ballY = ((globals()["t_ballY"] + abs(globals()["deltaY"] * schritte)) % 60)
+ else:
+ target_ballY = 30
+
+ if globals()["t_ballX"] > 55 or globals()["t_ballX"] < 10:
+ target_ballY = globals()["t_ballY"]
+
+ if getMe(zustand, id).yKoordinate() > target_ballY - 3:
+ zug.nachOben()
+ else:
+ if getMe(zustand, id).yKoordinate() < target_ballY - 3:
+ zug.nachUnten()
+
+###
+def getMe(zustand, id):
+ if zustand.listeSchlaeger()[0].identifikation() == id:
+ return zustand.listeSchlaeger()[0]
+ return zustand.listeSchlaeger()[1]
+
+def getEnemy(zustand, id):
+ if zustand.listeSchlaeger()[0].identifikation() == id:
+ return zustand.listeSchlaeger()[1]
+ return zustand.listeSchlaeger()[0]
+
+def getBall(zustand):
+ return zustand.listeBall()[0]