From 5c0bb6ff441018dd4c5f1953321d875a028a0ccd Mon Sep 17 00:00:00 2001 From: alstergym Date: Wed, 7 Oct 2026 11:04:24 +0200 Subject: [PATCH] 07.10.26 --- README.md | 3 + meinspiel.py | 193 +++++++++++++++++++++++++++------------------------ starten2.py | 4 +- 3 files changed, 107 insertions(+), 93 deletions(-) diff --git a/README.md b/README.md index b481406..48279a3 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,9 @@ Ball prallt venünfig an den Wänden ab und wenn man den auffrisst spawnt er in ## 06.10.26 Heute Doppelunterricht oder Vertretungsstunde bei Frau Wilmsen. Funktion Bewegeball neu geschrieben und überarbeitet. Muss nurnoch Flüchtigkeitsfehler und Sachen die ich nicht bedacht habe lösen. +## 07.10.26 +Ein paar Fehler behoben und angefangen die Com Logik zu schreiben. Zudem geplant, die steuerung mit der Taste F3 anzuzeigen. Die Spieler können jetzt nicht mehr aus dem Spielfeld heraugehen. + # Quellen Karten von itch.io -> nächste stunde sind hier genauere Quellen \ No newline at end of file diff --git a/meinspiel.py b/meinspiel.py index 5b54e11..89c5725 100644 --- a/meinspiel.py +++ b/meinspiel.py @@ -10,9 +10,10 @@ class MeinSpiel: richtung = 0 richtung_y = 0 alter_hintergrund = 0 - geschwindigkeit = 15 + geschwindigkeit = 10 punkte1 = 0 # Punkte des Spieler 1 punkte2 = 0 # Punkte des Spieler 2 + Com_enabled = False def __init__(self, felderX, felderY): for x in range(felderX): self.spielfeld.append([]) @@ -34,28 +35,34 @@ class MeinSpiel: def tasteGedrueckt(self, taste): print(f"{taste} gedrückt") - if taste == 97: + if taste == pygame.K_a: print(self.spielfeld) elif taste == 113: pygame.quit() - elif taste == 116: # Taste T + elif taste == pygame.K_t: # Taste T self.starte_spiel(neue_punkte=True) - elif taste == 115: # Taste S + elif taste == pygame.K_s: # Taste S self.bewegeSpieler(2, "spieler1") - elif taste == 119: # Taste W + elif taste == pygame.K_w: # Taste W self.bewegeSpieler(1, "spieler1") # 1 ist nach oben, 2 nach unten - elif taste == 1073741906: # Pfeiltaste_Hoch + elif taste == pygame.K_UP: # Pfeiltaste_Hoch self.bewegeSpieler(1, "spieler2") - elif taste == 1073741905: # Pfeiltaste_Runter + elif taste == pygame.K_DOWN: # Pfeiltaste_Runter self.bewegeSpieler(2, "spieler2") elif taste == pygame.K_o: self.geschwindigkeit = 7 if self.geschwindigkeit !=7 else 10 + elif taste == pygame.K_c: + self.Com_enabled = True if not self.Com_enabled else False + + elif taste == pygame.K_F3: + pass # Soll Steuerung Zeigen + def starte_spiel(self, neue_punkte = False): self.richtung = random.randint(1, 2) # 1 = linke Spielhälfte / 2 = rechte Spielhälfte @@ -122,21 +129,21 @@ class MeinSpiel: # Gucke, ob der Ball am Spielfeldrand ist if y+1 == 15 and self.richtung_y != -1: - print("aaaaaaaaaaa") - print(y+1) - print(self.richtung_y) - print("---------") + # print("aaaaaaaaaaa") + # print(y+1) + # print(self.richtung_y) + # print("---------") self.richtung_y = -1 if self.richtung_y == 1 else 1 - print("richtung y geändert") + # print("richtung y geändert") elif y-1 == 0 and self.richtung_y != 1: - print("aaaaaaaaaaa") - print(y+1) - print(self.richtung_y) - print("---------") + # print("aaaaaaaaaaa") + # print(y+1) + # print(self.richtung_y) + # print("---------") self.richtung_y = -1 if self.richtung_y == 1 else 1 - print("richtung y geändert") + # print("richtung y geändert") elif x+1 == 14: self.punkte1 +=1 @@ -150,32 +157,28 @@ class MeinSpiel: stoppe_suche = True sleep(0.1) except IndexError as e: - print("Ball ist außerhalb des") - print(e) + # print("Ball ist außerhalb des") + # print(e) # Wenn am Rand des spielfelds, muss gucken ob punkt gibt oder von wand abprallt - print("x+1",x+1) - print("x-1",x-1) - print("y-1",y-1) - print("y+1",y+1) + # print("x+1",x+1) + # print("x-1",x-1) + # print("y-1",y-1) + # print("y+1",y+1) if y+1 == 15 or y-1 == 0: if self.richtung_y != 0: - print("aaaaaaaaaaa") - print(y+1) - print(self.richtung_y) - print("---------") + # print("aaaaaaaaaaa") + # print(y+1) + # print(self.richtung_y) + # print("---------") self.richtung_y = -1 if self.richtung_y == 1 else 1 - print("richtung y geändert") + # print("richtung y geändert") else: - print("einfach anders") + pass self.spielfeld[x][y] = 2 - - - - if stoppe_suche: break if stoppe_suche: break @@ -186,63 +189,65 @@ class MeinSpiel: self.starte_spiel() - def bewegeball2(self): - if self.richtung == 0: return # Wenn Spiel nicht aktiv, dann self.richtung = 0; Also bewegt sich der Ball nicht - kontrollfeld = copy.deepcopy(self.spielfeld) - stoppe_suche = False - for x in range(len(self.spielfeld)): - for y in range(len(self.spielfeld[x])): - if self.spielfeld[x][y] == 2: # 2 = Ball - stoppe_suche = True # um den Ball nicht ein zweites mal zu finden - # setze Ballcoordinaten auf das nächste Feld - BallX = x+1 if self.richtung == 2 else x-1 - BallY = y+1 if self.richtung_y == 2 else y-1 - print(BallX) - print(BallY) - - # gucken ob an der neuen Position ein Spieler ist - if self.spielfeld[BallX][BallY] == 1: - # Richtung des Balles ändern und danach BallX und BallY neu setzen - self.richtung = 1 if self.richtung == 2 else 1 - self.richtung_y = 1 if self.richtung_y == 2 else 1 - - BallX = x+1 if self.richtung == 2 else x-1 - BallY = y+1 if self.richtung_y == 2 else y-1 - - # gucken ob Ball am Rand (x-position) ist; Für Punktesystem - if BallX == -1: - self.punkte2 += 1 - self.starte_spiel() - - elif BallX == 15: # 15, weil mein Spiel 15 Felder (standart 14) hat und von 0 gezählt wird -> max anzahl 14; 15 würde heißen, ball aus dem Spielfeld - self.punkte1 += 1 - self.starte_spiel() - - # gucken ob Ball am Rand (y-position) ist; Richtung ändern - if BallY == -1: - self.richtung_y = 1 if self.richtung_y == 2 else 2 - BallX = y - - elif BallY == 15: # in if abfrage drüber inkludiert - self.richtung_y = 1 if self.richtung_y == 2 else 2 - BallY = y - - kontrollfeld[x][y] = 0 - kontrollfeld[BallX][BallY] = 2 - if stoppe_suche: break - if stoppe_suche: break - self.spielfeld = kontrollfeld + + + # def bewegeball2(self): + # if self.richtung == 0: return # Wenn Spiel nicht aktiv, dann self.richtung = 0; Also bewegt sich der Ball nicht + # kontrollfeld = copy.deepcopy(self.spielfeld) + # stoppe_suche = False + # for x in range(len(self.spielfeld)): + # for y in range(len(self.spielfeld[x])): + # if self.spielfeld[x][y] == 2: # 2 = Ball + # stoppe_suche = True # um den Ball nicht ein zweites mal zu finden + + # # setze Ballcoordinaten auf das nächste Feld + # BallX = x+1 if self.richtung == 2 else x-1 + # BallY = y+1 if self.richtung_y == 2 else y-1 + # print("Zukunft:", BallX, BallY) + # # print(BallY) + + # # gucken ob Ball am Rand (x-position) ist; Für Punktesystem + # if BallX == -1: + # self.punkte2 += 1 + # return self.starte_spiel() + + # elif BallX == 15: # 15, weil mein Spiel 15 Felder (standart 14) hat und von 0 gezählt wird -> max anzahl 14; 15 würde heißen, ball aus dem Spielfeld + # self.punkte1 += 1 + # return self.starte_spiel() + + # # gucken ob Ball am Rand (y-position) ist; Richtung ändern + # if BallY == -1: + # print(BallY, "hier will er weg") + # self.richtung_y = 1 if self.richtung_y == 2 else 2 + # BallX = y + + # elif BallY == 15: # in if abfrage drüber inkludiert + # print("hier woll er weg", BallY) + # self.richtung_y = 1 if self.richtung_y == 2 else 2 + # BallY = y + + + # # gucken ob an der neuen Position ein Spieler ist + # if self.spielfeld[BallX][BallY] == 1: + # print("Da ist jemand hiiiiiiiilfeeee") + # # Richtung des Balles ändern und danach BallX und BallY neu setzen + # self.richtung = 1 if self.richtung == 2 else 1 + # self.richtung_y = 1 if self.richtung_y == 2 else 1 + + # BallX = x+1 if self.richtung == 2 else x-1 + # BallY = y+1 if self.richtung_y == 2 else y-1 + + + # kontrollfeld[x][y] = 0 + # kontrollfeld[BallX][BallY] = 2 + # if stoppe_suche: break + # if stoppe_suche: break + + # self.spielfeld = kontrollfeld - - - - - - - def bewegeSpieler(self, richtung, spieler: Literal["spieler1", "spieler2"]): # Bei Richtung ist 1 nach oben und 2 nach unten x = 1 if spieler == "spieler1" else 13 @@ -260,14 +265,14 @@ class MeinSpiel: self.alter_hintergrund = self.spielfeld[x+1][y] self.spielfeld[x][y+3] = 1 - elif richtung == 1: + elif richtung == 1 and y-1 != -1: self.spielfeld[x][y+2] = self.alter_hintergrund self.alter_hintergrund = self.spielfeld[x-1][y] - self.spielfeld[x][y-1] = 1 + self.spielfeld[x][y-1] = 1 elif y-1 == 0: richtung = 2; self.spielfeld[x][y] = 1 # Später Punktesystem! - spieler_x, spieler_y = y+1 if richtung == 2 else y-1, y + # spieler_x, spieler_y = y+1 if richtung == 2 else y-1, y stoppe_suche = True except IndexError: self.spielfeld[x][y] = 1 # Später Punktesystem! @@ -276,6 +281,10 @@ class MeinSpiel: if stoppe_suche: break -class ComLogic: - def __init__(self): - pass # load coms inventory + + def bewegeCom(self): + random_richtung = random.randint(1, 2) + + self.bewegeSpieler(random_richtung, "spieler2") + + diff --git a/starten2.py b/starten2.py index 17ebee5..9e862d9 100644 --- a/starten2.py +++ b/starten2.py @@ -48,7 +48,9 @@ while True: fenster.blit(pyGameBilder[meinSpiel.spielfeld[x][y]],(x*Pixel,y*Pixel)) # Spielfeld/figuren zeichnen - meinSpiel.bewegeball2() if counter % geschwindigkeit == 0 else None + meinSpiel.bewegeball() if counter % geschwindigkeit == 0 else None + if meinSpiel.Com_enabled: + meinSpiel.bewegeCom() if counter % geschwindigkeit == 0 else None font = pygame.font.Font(None, 64) text = font.render(f"{meinSpiel.punkte1}| {meinSpiel.punkte2}", False, WEISS) textpos = text.get_rect(centerx=fenster.get_width() / 2, y=10)