Files
e-To-Johannes-Hasenspiel/meinspiel.py
T
2026-09-29 12:10:58 +02:00

157 lines
5.1 KiB
Python

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