import copy import pygame import random pygame.init() pygame.mixer.init() class MeinSpiel: hintergrundstile = ["Sand","Gras"] hintergrundstil = random.choice(hintergrundstile) ebene0bilder = [] for i in range(6): ebene0bilder.append("Bilder/"+hintergrundstil+str(i+1)+".xcf") 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): self.ebene0feld.append([]) 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): self.ebene1feld[x].append(0) 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 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 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 def links(self): self.spielerx -= 1 def oben(self): self.spielery -= 1 def unten(self): self.spielery += 1 def bewegen(self,taste,xverschiebungaktuell,yverschiebungaktuell): verschiebung = [0,0] self.altspielerx = self.spielerx self.altspielery = self.spielery if taste == 1 and self.spielerx < 41: self.rechts() sound.Schrittsound(sound) if taste == 2 and self.spielerx > 0: self.links() sound.Schrittsound(sound) if taste == 3 and self.spielery < 41: self.unten() sound.Schrittsound(sound) if taste == 4 and self.spielery > 0: self.oben() sound.Schrittsound(sound) if self.ebene0feld[self.spielerx][self.spielery]== 5: 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 return verschiebung def hinergrundverschieben(self,xverschiebungaktuell,yverschiebungaktuell): xverschiebung=0 yverschiebung=0 if self.spielerx >= 11-xverschiebungaktuell and self.spielerx <= 38 and self.spielerx >= 3: xverschiebung = -1 if self.spielerx <= 2-xverschiebungaktuell and self.spielerx <= 38 and self.spielerx >= 3: xverschiebung = 1 if self.spielery >= 11-yverschiebungaktuell and self.spielery <= 38 and self.spielery >= 3: yverschiebung = -1 if self.spielery <= 2-yverschiebungaktuell and self.spielery <= 38 and self.spielery >= 3: yverschiebung = 1 verschiebung=[xverschiebung,yverschiebung] return verschiebung class sound: hintergrundsong1 = pygame.mixer.Sound("Sounds/Ritter Der Kokosnuss - ending song.mp3") hintergrundsong1.set_volume(0.8) SchleimSchritt = pygame.mixer.Sound("Sounds/Schleim_Schritt.mp3") Hintergrundkanal = pygame.mixer.Channel(0) Kanal1 = pygame.mixer.Channel(1) Kanal2 = pygame.mixer.Channel(2) Kanal3 = pygame.mixer.Channel(3) Kanal4 = pygame.mixer.Channel(4) def __init__(self): pass def hintergrundmusik(self): if not self.Hintergrundkanal.get_busy(): self.Hintergrundkanal.play(self.hintergrundsong1) def Schrittsound(self): self.Kanal1.play(self.SchleimSchritt) class monster: cooldownx = 1 cooldowny = 1 def __init__(self): pass def bewegen(self,posx,posy): xrichtung = random.randint(1,50*(self.cooldownx)) if xrichtung == 1 and posx < 41: posx += 1 self.cooldownx = 100 if xrichtung == 2 and posx > 0: posx -= 1 self.cooldownx = 100 if self.cooldownx != 1: self.cooldownx -= 1 yrichtung = random.randint(1,50*(self.cooldowny)) if yrichtung == 1 and posy < 41: posy += 1 self.cooldowny = 100 if yrichtung == 2 and posy > 0: posy -= 1 self.cooldowny = 100 if self.cooldowny != 1: self.cooldowny -= 1 return posx,posy