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/Spieler.xcf","Bilder/Monster.xcf",] ebene1feld = [] game_over = False 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.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.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 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 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.ebene1feld[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 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,xpos,ypos): xrichtung = random.randint(1,50*(self.cooldownx)) if xrichtung == 1 and xpos < 41: xpos += 1 self.cooldownx = 100 if xrichtung == 2 and xpos > 0: xpos -= 1 self.cooldownx = 100 if self.cooldownx != 1: self.cooldownx -= 1 yrichtung = random.randint(1,50*(self.cooldowny)) if yrichtung == 1 and xpos < 41: ypos += 1 self.cooldowny = 100 if yrichtung == 2 and ypos > 0: ypos -= 1 self.cooldowny = 100 if self.cooldowny != 1: self.cooldowny -= 1 return xpos,ypos