diff --git a/Bilder/angriff2.xcf b/Bilder/angriff2.xcf new file mode 100644 index 0000000..c5973db Binary files /dev/null and b/Bilder/angriff2.xcf differ diff --git a/Bilder/gameover.xcf b/Bilder/gameover.xcf new file mode 100644 index 0000000..f2260fe Binary files /dev/null and b/Bilder/gameover.xcf differ 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