This commit is contained in:
alstergym
2026-10-06 12:12:19 +02:00
parent 57bf9df884
commit 6be7d132c4
5 changed files with 86 additions and 30 deletions
Binary file not shown.
Binary file not shown.
+2
View File
@@ -23,4 +23,6 @@ Ich habe das Spielfeld in Ebenen augeteilt. Eine für den Hintergrund und eine f
Ich habe eine dritte Ebene für Effekte hinzugefügt. Ich habe eine dritte Ebene für Effekte hinzugefügt.
Außerdem wollte ich mehrere Monster erstellen. Da gab es jedoch ein paar Bugs, von denen noch einer besteht. Außerdem wollte ich mehrere Monster erstellen. Da gab es jedoch ein paar Bugs, von denen noch einer besteht.
#### 06.10.
Ich sitze gerade an dem Angriff der Monster und ein paar Bugs.
+68 -25
View File
@@ -11,15 +11,18 @@ class MeinSpiel:
for i in range(6): for i in range(6):
ebene0bilder.append("Bilder/"+hintergrundstil+str(i+1)+".xcf") ebene0bilder.append("Bilder/"+hintergrundstil+str(i+1)+".xcf")
ebene0feld = [] ebene0feld = []
ebene1bilder = ["Bilder/leer.xcf","Bilder/angriff1.xcf"] ebene1bilder = ["Bilder/leer.xcf","Bilder/angriff2.xcf","Bilder/angriff1.xcf"]
ebene1feld = [] ebene1feld = []
ebene2bilder = ["Bilder/leer.xcf","Bilder/Spieler.xcf","Bilder/Monster.xcf"] ebene2bilder = ["Bilder/leer.xcf","Bilder/Monster.xcf","Bilder/Monster.xcf","Bilder/Monster.xcf","Bilder/Spieler.xcf"]
ebene2feld = [] ebene2feld = []
game_over = False game_over = False
anzahlMonster= 0 anzahlMonster= 0
monsterspawncooldown=0 monsterspawncooldown=0
monsterstruktur = [] monsterstruktur = []
betrachtetesmonster = 0 betrachtetesmonster = 0
cooldownangriff = 0
spielerleben = 10
angriffMonster = 420
def __init__(self, felderX, felderY): def __init__(self, felderX, felderY):
for x in range(felderX): for x in range(felderX):
@@ -40,39 +43,63 @@ class MeinSpiel:
def anfangsKonfiguration(self): def anfangsKonfiguration(self):
self.spielerx = random.randint(5,9) self.spielerx = random.randint(5,9)
self.spielery = random.randint(5,9) self.spielery = random.randint(5,9)
self.ebene2feld[self.spielerx][self.spielery] = 1 self.ebene2feld[self.spielerx][self.spielery] = 4
self.ebene1feld[4][4] = 1
def Monster(self): def Monster(self):
if self.monsterspawncooldown == 0: if self.monsterspawncooldown == 0:
self.anzahlMonster += 1 self.anzahlMonster += 1
self.monsterstruktur.append([random.randint(1,42),random.randint(1,42),random.randint(1,42),random.randint(1,42)]) #Monsterstruktur: [x,y,Leben,cooldown Schaden bekommen, cooldown angreifen]
self.monsterstruktur.append([random.randint(1,42),random.randint(1,42),random.randint(1,42),random.randint(1,42),3,0,0])
self.monsterspawncooldown = 600 self.monsterspawncooldown = 600
self.betrachtetesmonster = 0 self.betrachtetesmonster = 0
while self.betrachtetesmonster < self.anzahlMonster: while self.betrachtetesmonster < self.anzahlMonster:
self.monsterstruktur [self.betrachtetesmonster][2] = self.monsterstruktur [self.betrachtetesmonster][0] self.monsterstruktur [self.betrachtetesmonster][2] = self.monsterstruktur [self.betrachtetesmonster][0]
self.monsterstruktur [self.betrachtetesmonster][3] = self.monsterstruktur [self.betrachtetesmonster][1] self.monsterstruktur [self.betrachtetesmonster][3] = self.monsterstruktur [self.betrachtetesmonster][1]
self.monsterstruktur [self.betrachtetesmonster][0],self.monsterstruktur [self.betrachtetesmonster][1] = monster.bewegen(monster,self.monsterstruktur [self.betrachtetesmonster][0],self.monsterstruktur [self.betrachtetesmonster][1]) self.monsterstruktur [self.betrachtetesmonster][0],self.monsterstruktur [self.betrachtetesmonster][1] = monster.bewegen(monster,self.monsterstruktur [self.betrachtetesmonster][0],self.monsterstruktur [self.betrachtetesmonster][1])
if self.ebene0feld[self.monsterstruktur [self.betrachtetesmonster][0]][self.monsterstruktur [self.betrachtetesmonster][1]] == 5: if self.ebene0feld[self.monsterstruktur [self.betrachtetesmonster][0]][self.monsterstruktur [self.betrachtetesmonster][1]] == 5 or self.ebene2feld[self.monsterstruktur [self.betrachtetesmonster][0]][self.monsterstruktur [self.betrachtetesmonster][1]] > 0:
self.ebene2feld[self.monsterstruktur [self.betrachtetesmonster][1]][self.monsterstruktur [self.betrachtetesmonster][2]] = 0 self.ebene2feld[self.monsterstruktur [self.betrachtetesmonster][0]][self.monsterstruktur [self.betrachtetesmonster][1]] = 0
self.monsterstruktur [self.betrachtetesmonster][0] = self.monsterstruktur [self.betrachtetesmonster][2] self.monsterstruktur [self.betrachtetesmonster][0] = self.monsterstruktur [self.betrachtetesmonster][2]
self.monsterstruktur [self.betrachtetesmonster][1] = self.monsterstruktur [self.betrachtetesmonster][3] self.monsterstruktur [self.betrachtetesmonster][1] = self.monsterstruktur [self.betrachtetesmonster][3]
else: else:
self.ebene2feld[self.monsterstruktur [self.betrachtetesmonster][2]][self.monsterstruktur [self.betrachtetesmonster][3]] = 0 self.ebene2feld[self.monsterstruktur [self.betrachtetesmonster][2]][self.monsterstruktur [self.betrachtetesmonster][3]] = 0
print(self.betrachtetesmonster) #print(self.betrachtetesmonster)
self.ebene2feld[self.monsterstruktur [self.betrachtetesmonster][0]][self.monsterstruktur [self.betrachtetesmonster][3]] = 2 self.ebene2feld[self.monsterstruktur [self.betrachtetesmonster][0]][self.monsterstruktur [self.betrachtetesmonster][1]] = self.monsterstruktur[self.betrachtetesmonster][4]
self.betrachtetesmonster +=1 self.betrachtetesmonster +=1
self.monsterspawncooldown -=1 self.monsterspawncooldown -=1
def Monsterangriff(self):
self.betrachtetesmonster = 0
while self.betrachtetesmonster < self.anzahlMonster:
self.Monsterangriff = random.randint(0,420)
x,y = self.monsterstruktur [self.betrachtetesmonster] [0]-1, self.monsterstruktur [self.betrachtetesmonster] [1]-1
if self.Monsterangriff == 0:
for i in range(3):
for j in range(3):
self.ebene1feld[x+i] [y+j] = 2
self.monsterstruktur [self.betrachtetesmonster] [6] = 10
if self.monsterstruktur [self.betrachtetesmonster] [6]==0:
for i in range(3):
for j in range(3):
self.ebene1feld[x+i] [y+j] = 0
else:
self.monsterstruktur [self.betrachtetesmonster] [6] -= 1
def Angriffe(self):
betrachtetesMonster = 0
while betrachtetesMonster < self.anzahlMonster: self.betrachtetesmonster +=1
if self.spielerx == self.monsterstruktur [betrachtetesMonster][0] and self.spielery == self.monsterstruktur [betrachtetesMonster][1]:
self.game_over = True def Monstergetroffen(self):
betrachtetesMonster +=1 self.betrachtetesmonster = 0
while self.betrachtetesmonster < self.anzahlMonster:
if self.ebene1feld[self.monsterstruktur [self.betrachtetesmonster][0]][self.monsterstruktur [self.betrachtetesmonster][1]] ==1 and self.monsterstruktur [self.betrachtetesmonster] [5] == 0:
self.monsterstruktur [self.betrachtetesmonster][4] -= 1
self.monsterstruktur [self.betrachtetesmonster] [5] = 42
if self.monsterstruktur [self.betrachtetesmonster] [5] > 0:
self.monsterstruktur [self.betrachtetesmonster] [5] -= 1
self.betrachtetesmonster +=1
def rechts(self): def rechts(self):
self.spielerx += 1 self.spielerx += 1
@@ -88,24 +115,24 @@ class MeinSpiel:
self.altspielerx = self.spielerx self.altspielerx = self.spielerx
self.altspielery = self.spielery self.altspielery = self.spielery
if taste == 1 and self.spielerx < 41: if (taste == pygame.K_RIGHT or taste == pygame.K_d) and self.spielerx < 41:
self.rechts() self.rechts()
sound.Schrittsound(sound) sound.Schrittsound(sound)
if taste == 2 and self.spielerx > 0: if (taste == pygame.K_LEFT or taste == pygame.K_a) and self.spielerx > 0:
self.links() self.links()
sound.Schrittsound(sound) sound.Schrittsound(sound)
if taste == 3 and self.spielery < 41: if (taste == pygame.K_DOWN or taste == pygame.K_s) and self.spielery < 41:
self.unten() self.unten()
sound.Schrittsound(sound) sound.Schrittsound(sound)
if taste == 4 and self.spielery > 0: if (taste == pygame.K_UP or taste == pygame.K_w) and self.spielery > 0:
self.oben() self.oben()
sound.Schrittsound(sound) sound.Schrittsound(sound)
if self.ebene0feld[self.spielerx][self.spielery]== 5: if self.ebene0feld[self.spielerx][self.spielery]== 5 or self.ebene2feld[self.spielerx][self.spielery] > 0:
self.ebene2feld[self.spielerx][self.spielery] = 0 self.ebene2feld[self.spielerx][self.spielery] = 0
self.spielerx,self.spielery = self.altspielerx,self.altspielery self.spielerx,self.spielery = self.altspielerx,self.altspielery
verschiebung = self.hinergrundverschieben(xverschiebungaktuell,yverschiebungaktuell) verschiebung = self.hinergrundverschieben(xverschiebungaktuell,yverschiebungaktuell)
self.ebene2feld[self.altspielerx][self.altspielery] = 0 self.ebene2feld[self.altspielerx][self.altspielery] = 0
self.ebene2feld[self.spielerx][self.spielery] = 1 self.ebene2feld[self.spielerx][self.spielery] = 4
return verschiebung return verschiebung
@@ -123,6 +150,22 @@ class MeinSpiel:
verschiebung=[xverschiebung,yverschiebung] verschiebung=[xverschiebung,yverschiebung]
return verschiebung return verschiebung
def angriff(self):
x,y = self.spielerx-1,self.spielery-1
for i in range(3):
for j in range(3):
self.ebene1feld[x+i] [y+j] = 1
self.cooldownangriff = 10
def angriffzuruecksetzen(self):
if self.cooldownangriff==0:
x,y = self.spielerx-1,self.spielery-1
for i in range(3):
for j in range(3):
self.ebene1feld[x+i] [y+j] = 0
else:
self.cooldownangriff -= 1
def debug(self):
print(self.monsterstruktur)
class sound: class sound:
@@ -154,10 +197,10 @@ class monster:
pass pass
def bewegen(self,posx,posy): def bewegen(self,posx,posy):
xrichtung = random.randint(1,50*(self.cooldownx)) xrichtung = random.randint(1,50*(self.cooldownx))
if xrichtung == 1 and posx < 41: if xrichtung == 1 and posx <= 42:
posx += 1 posx += 1
self.cooldownx = 100 self.cooldownx = 100
if xrichtung == 2 and posx > 0: if xrichtung == 2 and posx >= 0:
posx -= 1 posx -= 1
self.cooldownx = 100 self.cooldownx = 100
@@ -166,10 +209,10 @@ class monster:
yrichtung = random.randint(1,50*(self.cooldowny)) yrichtung = random.randint(1,50*(self.cooldowny))
if yrichtung == 1 and posy < 41: if yrichtung == 1 and posy <= 42:
posy += 1 posy += 1
self.cooldowny = 100 self.cooldowny = 100
if yrichtung == 2 and posy > 0: if yrichtung == 2 and posy >= 0:
posy -= 1 posy -= 1
self.cooldowny = 100 self.cooldowny = 100
+15 -4
View File
@@ -20,6 +20,9 @@ pyGameBilderebene2 = []
xverschiebung = 0 xverschiebung = 0
yverschiebung = 0 yverschiebung = 0
verschiebung = [0,0] verschiebung = [0,0]
gameover = pygame.image.load("Bilder/gameover.xcf")
# Bilder aus meinSpiel werden für pygame vorbereitet # Bilder aus meinSpiel werden für pygame vorbereitet
meinspiel = MeinSpiel(FelderX, FelderY) meinspiel = MeinSpiel(FelderX, FelderY)
@@ -35,7 +38,7 @@ meinspiel.anfangsKonfiguration()
# Definieren und Öffnen eines neuen Fensters # Definieren und Öffnen eines neuen Fensters
fenster = pygame.display.set_mode((Breite, Hoehe)) fenster = pygame.display.set_mode((Breite, Hoehe))
pygame.display.set_caption("jjajajajjajajjaaa") pygame.display.set_caption("Spiel Informatik Johannes Matzen Eb 2026")
clock = pygame.time.Clock() clock = pygame.time.Clock()
# Schleife Hauptprogramm # Schleife Hauptprogramm
@@ -51,7 +54,11 @@ while True:
if event.type==QUIT or (event.type==KEYDOWN and event.key==K_ESCAPE): if event.type==QUIT or (event.type==KEYDOWN and event.key==K_ESCAPE):
pygame.quit() pygame.quit()
if event.type==KEYDOWN and meinspiel.game_over == False: if event.type==KEYDOWN and meinspiel.game_over == False:
verschiebung = meinspiel.bewegen(event.key-1073741902,xverschiebung,yverschiebung) verschiebung = meinspiel.bewegen(event.key,xverschiebung,yverschiebung)
if event.key == pygame.K_SPACE:
meinspiel.angriff()
elif event.key == pygame.K_F3:
meinspiel.debug()
# Spielfeld löschen # Spielfeld löschen
xverschiebung += verschiebung[0] xverschiebung += verschiebung[0]
@@ -68,8 +75,12 @@ while True:
# Spielfeld/figuren zeichnen # Spielfeld/figuren zeichnen
if meinspiel.game_over == False: if meinspiel.game_over == False:
meinspiel.Monster() meinspiel.Monster()
meinspiel.Angriffe() meinspiel.Monstergetroffen()
print(meinspiel.monsterstruktur) meinspiel.angriffzuruecksetzen()
meinspiel.Monsterangriff()
else:
fenster.blit(gameover,(0,0))
print(meinspiel.spielerleben)
# Fenster aktualisieren # Fenster aktualisieren
pygame.display.flip() pygame.display.flip()
clock.tick(FPS) clock.tick(FPS)