From 6be7d132c4ce692c1ef037d644db2bd581e7959c Mon Sep 17 00:00:00 2001 From: alstergym Date: Tue, 6 Oct 2026 12:12:19 +0200 Subject: [PATCH] 06.10. --- Bilder/angriff2.xcf | Bin 0 -> 2220 bytes Bilder/gameover.xcf | Bin 0 -> 95241 bytes README.md | 2 + meinspiel.py | 95 ++++++++++++++++++++++++++++++++------------ starten.py | 19 +++++++-- 5 files changed, 86 insertions(+), 30 deletions(-) create mode 100644 Bilder/angriff2.xcf create mode 100644 Bilder/gameover.xcf diff --git a/Bilder/angriff2.xcf b/Bilder/angriff2.xcf new file mode 100644 index 0000000000000000000000000000000000000000..c5973dbdc656bdef3afd16843c8c6c914b1b231c GIT binary patch literal 2220 zcmbtW+iuf95KXzXRiIFyAR+Ov7*N`x*y}*k5+$j6qpC#JsuxjEUmSbwtmK>QZE<;l z2fhIbiNE7R%1mr0+tM^?8Ed@9yEA7eGkb}{y^tiPO^&Iq7eMNnBK`^b0CZ#oUXMV> zSD*_OWD4{a=uOZk8AiLug~I3`XeS(?E}MbpF<-!U0S6zhM9dJ(B44;@ll6_wZ5)~G zm~zi>SlNlVg?(T>@^m^DCoUs#;BsrGIBh#-;095VfJ}EFQFcn}rRCBRvE9HB3el@X zIi#076-p21=M_R{fUtE1!ql
PD`lQ=X??mI-MFwe=Euk53Ia7Tyo5!mt!`jF)MYN>Z5HhsUg$EVxj^8lYhc>nWfdyC$33vF z&`PzY(;BT3U9Zi})!x1v(swK34)+cBIvkzAKQP}BZKYYI17_@4f8^Fs#ybqw;*o%) z?nCh)xB=t`JqM-vhEh!*;P7d9hwXMC0(Av<#4ap0NOyno)HW~7D&$u1ugtnycF&Sr zuR=204W%ta zSkp8=Rt+m?F%^zAt!tyf_R^GQUF-6k+ZzX7sCKPYtU`7Srui@Hv`nje`3@NzUE*C9 zS7L-iMFcEr8V5!+R4Ba@0)G+`Y-T6V|4_iGWS?AvU?UW!x)g>kHx1m9m42zcXwUuY zjLWfGmkWzg*LvqA9<`E;eU?6QnBS#%^Np^xn9p$JMm9VOEnc9fpwAI6eup<)vY^s5xKDZE5{3Igp53Cn*1pgWiG ic8;Vr&j#{?jQ>d6&O0B&{@;23w|kQ<&{NO?=&!#RRxQH- literal 0 HcmV?d00001 diff --git a/Bilder/gameover.xcf b/Bilder/gameover.xcf new file mode 100644 index 0000000000000000000000000000000000000000..f2260fe50e9a3a3ee35c914c3426b38f11949725 GIT binary patch literal 95241 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 b$Iw4?FE=?GzdIdANE`jlkd5N~Wi$T+i)xee literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 0091f32..1525b76 100644 --- a/README.md +++ b/README.md @@ -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. 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. diff --git a/meinspiel.py b/meinspiel.py index c96b044..8359f89 100644 --- a/meinspiel.py +++ b/meinspiel.py @@ -11,15 +11,18 @@ class MeinSpiel: for i in range(6): ebene0bilder.append("Bilder/"+hintergrundstil+str(i+1)+".xcf") ebene0feld = [] - ebene1bilder = ["Bilder/leer.xcf","Bilder/angriff1.xcf"] + ebene1bilder = ["Bilder/leer.xcf","Bilder/angriff2.xcf","Bilder/angriff1.xcf"] 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 = [] game_over = False anzahlMonster= 0 monsterspawncooldown=0 monsterstruktur = [] betrachtetesmonster = 0 + cooldownangriff = 0 + spielerleben = 10 + angriffMonster = 420 def __init__(self, felderX, felderY): for x in range(felderX): @@ -40,39 +43,63 @@ class MeinSpiel: def anfangsKonfiguration(self): self.spielerx = random.randint(5,9) self.spielery = random.randint(5,9) - self.ebene2feld[self.spielerx][self.spielery] = 1 - self.ebene1feld[4][4] = 1 + self.ebene2feld[self.spielerx][self.spielery] = 4 + def Monster(self): if self.monsterspawncooldown == 0: 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.betrachtetesmonster = 0 while self.betrachtetesmonster < self.anzahlMonster: self.monsterstruktur [self.betrachtetesmonster][2] = self.monsterstruktur [self.betrachtetesmonster][0] 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]) - if self.ebene0feld[self.monsterstruktur [self.betrachtetesmonster][0]][self.monsterstruktur [self.betrachtetesmonster][1]] == 5: - self.ebene2feld[self.monsterstruktur [self.betrachtetesmonster][1]][self.monsterstruktur [self.betrachtetesmonster][2]] = 0 + 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][0]][self.monsterstruktur [self.betrachtetesmonster][1]] = 0 self.monsterstruktur [self.betrachtetesmonster][0] = self.monsterstruktur [self.betrachtetesmonster][2] self.monsterstruktur [self.betrachtetesmonster][1] = self.monsterstruktur [self.betrachtetesmonster][3] else: self.ebene2feld[self.monsterstruktur [self.betrachtetesmonster][2]][self.monsterstruktur [self.betrachtetesmonster][3]] = 0 - print(self.betrachtetesmonster) - self.ebene2feld[self.monsterstruktur [self.betrachtetesmonster][0]][self.monsterstruktur [self.betrachtetesmonster][3]] = 2 + #print(self.betrachtetesmonster) + self.ebene2feld[self.monsterstruktur [self.betrachtetesmonster][0]][self.monsterstruktur [self.betrachtetesmonster][1]] = self.monsterstruktur[self.betrachtetesmonster][4] self.betrachtetesmonster +=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: - if self.spielerx == self.monsterstruktur [betrachtetesMonster][0] and self.spielery == self.monsterstruktur [betrachtetesMonster][1]: - self.game_over = True - betrachtetesMonster +=1 + + + self.betrachtetesmonster +=1 + + def Monstergetroffen(self): + 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): self.spielerx += 1 @@ -88,24 +115,24 @@ class MeinSpiel: self.altspielerx = self.spielerx 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() 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() 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() 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() 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.spielerx,self.spielery = self.altspielerx,self.altspielery verschiebung = self.hinergrundverschieben(xverschiebungaktuell,yverschiebungaktuell) self.ebene2feld[self.altspielerx][self.altspielery] = 0 - self.ebene2feld[self.spielerx][self.spielery] = 1 + self.ebene2feld[self.spielerx][self.spielery] = 4 return verschiebung @@ -123,8 +150,24 @@ class MeinSpiel: verschiebung=[xverschiebung,yverschiebung] 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: hintergrundsong1 = pygame.mixer.Sound("Sounds/Ritter Der Kokosnuss - ending song.mp3") hintergrundsong1.set_volume(0.8) @@ -154,10 +197,10 @@ class monster: pass def bewegen(self,posx,posy): xrichtung = random.randint(1,50*(self.cooldownx)) - if xrichtung == 1 and posx < 41: + if xrichtung == 1 and posx <= 42: posx += 1 self.cooldownx = 100 - if xrichtung == 2 and posx > 0: + if xrichtung == 2 and posx >= 0: posx -= 1 self.cooldownx = 100 @@ -166,10 +209,10 @@ class monster: yrichtung = random.randint(1,50*(self.cooldowny)) - if yrichtung == 1 and posy < 41: + if yrichtung == 1 and posy <= 42: posy += 1 self.cooldowny = 100 - if yrichtung == 2 and posy > 0: + if yrichtung == 2 and posy >= 0: posy -= 1 self.cooldowny = 100 diff --git a/starten.py b/starten.py index 82ccca4..3a7a7f5 100644 --- a/starten.py +++ b/starten.py @@ -20,6 +20,9 @@ pyGameBilderebene2 = [] xverschiebung = 0 yverschiebung = 0 verschiebung = [0,0] +gameover = pygame.image.load("Bilder/gameover.xcf") + + # Bilder aus meinSpiel werden für pygame vorbereitet meinspiel = MeinSpiel(FelderX, FelderY) @@ -35,7 +38,7 @@ meinspiel.anfangsKonfiguration() # Definieren und Öffnen eines neuen Fensters 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() # Schleife Hauptprogramm @@ -51,7 +54,11 @@ while True: if event.type==QUIT or (event.type==KEYDOWN and event.key==K_ESCAPE): pygame.quit() 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 xverschiebung += verschiebung[0] @@ -68,8 +75,12 @@ while True: # Spielfeld/figuren zeichnen if meinspiel.game_over == False: meinspiel.Monster() - meinspiel.Angriffe() - print(meinspiel.monsterstruktur) + meinspiel.Monstergetroffen() + meinspiel.angriffzuruecksetzen() + meinspiel.Monsterangriff() + else: + fenster.blit(gameover,(0,0)) + print(meinspiel.spielerleben) # Fenster aktualisieren pygame.display.flip() clock.tick(FPS) \ No newline at end of file