This commit is contained in:
alstergym
2026-10-07 11:04:24 +02:00
parent c54a08ac3d
commit 5c0bb6ff44
3 changed files with 107 additions and 93 deletions
+3
View File
@@ -29,6 +29,9 @@ Ball prallt venünfig an den Wänden ab und wenn man den auffrisst spawnt er in
## 06.10.26 ## 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. 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 # Quellen
Karten von itch.io -> nächste stunde sind hier genauere Quellen Karten von itch.io -> nächste stunde sind hier genauere Quellen
+94 -85
View File
@@ -10,9 +10,10 @@ class MeinSpiel:
richtung = 0 richtung = 0
richtung_y = 0 richtung_y = 0
alter_hintergrund = 0 alter_hintergrund = 0
geschwindigkeit = 15 geschwindigkeit = 10
punkte1 = 0 # Punkte des Spieler 1 punkte1 = 0 # Punkte des Spieler 1
punkte2 = 0 # Punkte des Spieler 2 punkte2 = 0 # Punkte des Spieler 2
Com_enabled = False
def __init__(self, felderX, felderY): def __init__(self, felderX, felderY):
for x in range(felderX): for x in range(felderX):
self.spielfeld.append([]) self.spielfeld.append([])
@@ -34,28 +35,34 @@ class MeinSpiel:
def tasteGedrueckt(self, taste): def tasteGedrueckt(self, taste):
print(f"{taste} gedrückt") print(f"{taste} gedrückt")
if taste == 97: if taste == pygame.K_a:
print(self.spielfeld) print(self.spielfeld)
elif taste == 113: elif taste == 113:
pygame.quit() pygame.quit()
elif taste == 116: # Taste T elif taste == pygame.K_t: # Taste T
self.starte_spiel(neue_punkte=True) self.starte_spiel(neue_punkte=True)
elif taste == 115: # Taste S elif taste == pygame.K_s: # Taste S
self.bewegeSpieler(2, "spieler1") 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 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") self.bewegeSpieler(1, "spieler2")
elif taste == 1073741905: # Pfeiltaste_Runter elif taste == pygame.K_DOWN: # Pfeiltaste_Runter
self.bewegeSpieler(2, "spieler2") self.bewegeSpieler(2, "spieler2")
elif taste == pygame.K_o: elif taste == pygame.K_o:
self.geschwindigkeit = 7 if self.geschwindigkeit !=7 else 10 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): def starte_spiel(self, neue_punkte = False):
self.richtung = random.randint(1, 2) # 1 = linke Spielhälfte / 2 = rechte Spielhälfte 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 # Gucke, ob der Ball am Spielfeldrand ist
if y+1 == 15 and self.richtung_y != -1: if y+1 == 15 and self.richtung_y != -1:
print("aaaaaaaaaaa") # print("aaaaaaaaaaa")
print(y+1) # print(y+1)
print(self.richtung_y) # print(self.richtung_y)
print("---------") # print("---------")
self.richtung_y = -1 if self.richtung_y == 1 else 1 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: elif y-1 == 0 and self.richtung_y != 1:
print("aaaaaaaaaaa") # print("aaaaaaaaaaa")
print(y+1) # print(y+1)
print(self.richtung_y) # print(self.richtung_y)
print("---------") # print("---------")
self.richtung_y = -1 if self.richtung_y == 1 else 1 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: elif x+1 == 14:
self.punkte1 +=1 self.punkte1 +=1
@@ -150,32 +157,28 @@ class MeinSpiel:
stoppe_suche = True stoppe_suche = True
sleep(0.1) sleep(0.1)
except IndexError as e: except IndexError as e:
print("Ball ist außerhalb des") # print("Ball ist außerhalb des")
print(e) # print(e)
# Wenn am Rand des spielfelds, muss gucken ob punkt gibt oder von wand abprallt # 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("x-1",x-1) # print("x-1",x-1)
print("y-1",y-1) # print("y-1",y-1)
print("y+1",y+1) # print("y+1",y+1)
if y+1 == 15 or y-1 == 0: if y+1 == 15 or y-1 == 0:
if self.richtung_y != 0: if self.richtung_y != 0:
print("aaaaaaaaaaa") # print("aaaaaaaaaaa")
print(y+1) # print(y+1)
print(self.richtung_y) # print(self.richtung_y)
print("---------") # print("---------")
self.richtung_y = -1 if self.richtung_y == 1 else 1 self.richtung_y = -1 if self.richtung_y == 1 else 1
print("richtung y geändert") # print("richtung y geändert")
else: else:
print("einfach anders") pass
self.spielfeld[x][y] = 2 self.spielfeld[x][y] = 2
if stoppe_suche: break if stoppe_suche: break
if stoppe_suche: break if stoppe_suche: break
@@ -186,60 +189,62 @@ class MeinSpiel:
self.starte_spiel() 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
@@ -260,14 +265,14 @@ class MeinSpiel:
self.alter_hintergrund = self.spielfeld[x+1][y] self.alter_hintergrund = self.spielfeld[x+1][y]
self.spielfeld[x][y+3] = 1 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.spielfeld[x][y+2] = self.alter_hintergrund
self.alter_hintergrund = self.spielfeld[x-1][y] 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! 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 stoppe_suche = True
except IndexError: except IndexError:
self.spielfeld[x][y] = 1 # Später Punktesystem! self.spielfeld[x][y] = 1 # Später Punktesystem!
@@ -276,6 +281,10 @@ class MeinSpiel:
if stoppe_suche: break if stoppe_suche: break
class ComLogic:
def __init__(self): def bewegeCom(self):
pass # load coms inventory random_richtung = random.randint(1, 2)
self.bewegeSpieler(random_richtung, "spieler2")
+3 -1
View File
@@ -48,7 +48,9 @@ while True:
fenster.blit(pyGameBilder[meinSpiel.spielfeld[x][y]],(x*Pixel,y*Pixel)) fenster.blit(pyGameBilder[meinSpiel.spielfeld[x][y]],(x*Pixel,y*Pixel))
# Spielfeld/figuren zeichnen # 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) font = pygame.font.Font(None, 64)
text = font.render(f"{meinSpiel.punkte1}| {meinSpiel.punkte2}", False, WEISS) text = font.render(f"{meinSpiel.punkte1}| {meinSpiel.punkte2}", False, WEISS)
textpos = text.get_rect(centerx=fenster.get_width() / 2, y=10) textpos = text.get_rect(centerx=fenster.get_width() / 2, y=10)