diff --git a/Bilder/angriff1.xcf b/Bilder/angriff1.xcf new file mode 100644 index 0000000..5e2cb01 Binary files /dev/null and b/Bilder/angriff1.xcf differ diff --git a/README.md b/README.md index 616917c..0091f32 100644 --- a/README.md +++ b/README.md @@ -19,5 +19,8 @@ Ich habe ein Monster programmiert, das scih zufällig bewegt. Es bewegt sich abe #### 29.09. Ich habe das Spielfeld in Ebenen augeteilt. Eine für den Hintergrund und eine für die Spielfiguren. +#### 30.09. +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. diff --git a/meinspiel.py b/meinspiel.py index 4f0003a..c96b044 100644 --- a/meinspiel.py +++ b/meinspiel.py @@ -10,10 +10,16 @@ class MeinSpiel: ebene0bilder = [] for i in range(6): ebene0bilder.append("Bilder/"+hintergrundstil+str(i+1)+".xcf") - ebene0feld = [] - ebene1bilder = ["Bilder/leer.xcf","Bilder/Spieler.xcf","Bilder/Monster.xcf",] - ebene1feld = [] + ebene0feld = [] + ebene1bilder = ["Bilder/leer.xcf","Bilder/angriff1.xcf"] + ebene1feld = [] + ebene2bilder = ["Bilder/leer.xcf","Bilder/Spieler.xcf","Bilder/Monster.xcf"] + ebene2feld = [] game_over = False + anzahlMonster= 0 + monsterspawncooldown=0 + monsterstruktur = [] + betrachtetesmonster = 0 def __init__(self, felderX, felderY): for x in range(felderX): @@ -21,6 +27,11 @@ class MeinSpiel: for y in range(felderY): self.ebene0feld[x].append(random.randint(0,5)) + for x in range(felderX): + self.ebene2feld.append([]) + for y in range(felderY): + self.ebene2feld[x].append(0) + for x in range(felderX): self.ebene1feld.append([]) for y in range(felderY): @@ -29,26 +40,39 @@ class MeinSpiel: def anfangsKonfiguration(self): self.spielerx = random.randint(5,9) self.spielery = random.randint(5,9) - self.ebene1feld[self.spielerx][self.spielery] = 1 - self.monsterx = random.randint(5,9) - self.monstery = random.randint(5,9) - self.ebene1feld[self.monsterx][self.monstery] = 2 + self.ebene2feld[self.spielerx][self.spielery] = 1 + self.ebene1feld[4][4] = 1 + + 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)]) + 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 + 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 + self.betrachtetesmonster +=1 + self.monsterspawncooldown -=1 - def spawnSpieler(self): - self.altmonsterx = self.monsterx - self.altmonstery = self.monstery - self.monsterx,self.monstery = monster.bewegen(monster,self.monsterx,self.monstery) - if self.ebene0feld[self.monsterx][self.monstery] == 5: - self.ebene1feld[self.altmonsterx][self.altmonstery] = 2 - self.ebene1feld[self.monsterx][self.monstery] = 0 - self.monsterx = self.altmonsterx - self.monstery = self.altmonstery - - if self.spielerx == self.monsterx and self.spielery == self.monstery: - self.game_over = True + 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 def rechts(self): self.spielerx += 1 @@ -77,11 +101,11 @@ class MeinSpiel: self.oben() sound.Schrittsound(sound) if self.ebene0feld[self.spielerx][self.spielery]== 5: - self.ebene1feld[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.ebene1feld[self.altspielerx][self.altspielery] = 0 - self.ebene1feld[self.spielerx][self.spielery] = 1 + self.ebene2feld[self.altspielerx][self.altspielery] = 0 + self.ebene2feld[self.spielerx][self.spielery] = 1 return verschiebung @@ -124,16 +148,17 @@ class sound: class monster: cooldownx = 1 cooldowny = 1 + def __init__(self): pass - def bewegen(self,xpos,ypos): + def bewegen(self,posx,posy): xrichtung = random.randint(1,50*(self.cooldownx)) - if xrichtung == 1 and xpos < 41: - xpos += 1 + if xrichtung == 1 and posx < 41: + posx += 1 self.cooldownx = 100 - if xrichtung == 2 and xpos > 0: - xpos -= 1 + if xrichtung == 2 and posx > 0: + posx -= 1 self.cooldownx = 100 if self.cooldownx != 1: @@ -141,16 +166,16 @@ class monster: yrichtung = random.randint(1,50*(self.cooldowny)) - if yrichtung == 1 and xpos < 41: - ypos += 1 + if yrichtung == 1 and posy < 41: + posy += 1 self.cooldowny = 100 - if yrichtung == 2 and ypos > 0: - ypos -= 1 + if yrichtung == 2 and posy > 0: + posy -= 1 self.cooldowny = 100 if self.cooldowny != 1: self.cooldowny -= 1 - return xpos,ypos + return posx,posy diff --git a/starten.py b/starten.py index 0356f4d..82ccca4 100644 --- a/starten.py +++ b/starten.py @@ -16,20 +16,22 @@ WEISS = ( 255, 255, 255) Beigegelb = ( 226, 181, 97 ) pyGameBilderebene0 = [] pyGameBilderebene1 = [] +pyGameBilderebene2 = [] xverschiebung = 0 yverschiebung = 0 verschiebung = [0,0] # Bilder aus meinSpiel werden für pygame vorbereitet -ebene0 = MeinSpiel(FelderX, FelderY) -for fname in ebene0.ebene0bilder: +meinspiel = MeinSpiel(FelderX, FelderY) +for fname in meinspiel.ebene0bilder: pyGameBilderebene0.append(pygame.image.load(fname)) -ebene1 = MeinSpiel(FelderX, FelderY) -for fname in ebene1.ebene1bilder: +for fname in meinspiel.ebene1bilder: pyGameBilderebene1.append(pygame.image.load(fname)) +for fname in meinspiel.ebene2bilder: + pyGameBilderebene2.append(pygame.image.load(fname)) #Anfangskonfiguration für das Spielfeld wird geladen -ebene0.anfangsKonfiguration() +meinspiel.anfangsKonfiguration() # Definieren und Öffnen eines neuen Fensters fenster = pygame.display.set_mode((Breite, Hoehe)) @@ -38,27 +40,36 @@ clock = pygame.time.Clock() # Schleife Hauptprogramm while True: - sound.hintergrundmusik(sound) + if meinspiel.game_over == False: + sound.hintergrundmusik(sound) + else: + pass verschiebung=[0,0] # Überprüfen, ob Nutzer eine Aktion durchgeführt hat for event in pygame.event.get(): # Beenden bei [ESC] oder [X] - if event.type==QUIT or (event.type==KEYDOWN and event.key==K_ESCAPE) or ebene0.game_over == True: + if event.type==QUIT or (event.type==KEYDOWN and event.key==K_ESCAPE): pygame.quit() - if event.type==KEYDOWN: - verschiebung = ebene0.bewegen(event.key-1073741902,xverschiebung,yverschiebung) + if event.type==KEYDOWN and meinspiel.game_over == False: + verschiebung = meinspiel.bewegen(event.key-1073741902,xverschiebung,yverschiebung) # Spielfeld löschen xverschiebung += verschiebung[0] yverschiebung += verschiebung[1] for x in range(FelderX): for y in range(FelderY): - fenster.blit(pyGameBilderebene0[ebene0.ebene0feld[x][y]],((x+xverschiebung)*Pixel,(y+yverschiebung)*Pixel)) + fenster.blit(pyGameBilderebene0[meinspiel.ebene0feld[x][y]],((x+xverschiebung)*Pixel,(y+yverschiebung)*Pixel)) for x in range(FelderX): for y in range(FelderY): - fenster.blit(pyGameBilderebene1[ebene1.ebene1feld[x][y]],((x+xverschiebung)*Pixel,(y+yverschiebung)*Pixel)) + fenster.blit(pyGameBilderebene1[meinspiel.ebene1feld[x][y]],((x+xverschiebung)*Pixel,(y+yverschiebung)*Pixel)) + for x in range(FelderX): + for y in range(FelderY): + fenster.blit(pyGameBilderebene2[meinspiel.ebene2feld[x][y]],((x+xverschiebung)*Pixel,(y+yverschiebung)*Pixel)) # Spielfeld/figuren zeichnen - ebene0.spawnSpieler() + if meinspiel.game_over == False: + meinspiel.Monster() + meinspiel.Angriffe() + print(meinspiel.monsterstruktur) # Fenster aktualisieren pygame.display.flip() clock.tick(FPS) \ No newline at end of file