This commit is contained in:
alstergym
2026-09-30 11:06:35 +02:00
parent 937085726c
commit 57bf9df884
4 changed files with 83 additions and 44 deletions
Binary file not shown.
+3
View File
@@ -19,5 +19,8 @@ Ich habe ein Monster programmiert, das scih zufällig bewegt. Es bewegt sich abe
#### 29.09. #### 29.09.
Ich habe das Spielfeld in Ebenen augeteilt. Eine für den Hintergrund und eine für die Spielfiguren. 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.
+54 -29
View File
@@ -11,9 +11,15 @@ class MeinSpiel:
for i in range(6): for i in range(6):
ebene0bilder.append("Bilder/"+hintergrundstil+str(i+1)+".xcf") ebene0bilder.append("Bilder/"+hintergrundstil+str(i+1)+".xcf")
ebene0feld = [] ebene0feld = []
ebene1bilder = ["Bilder/leer.xcf","Bilder/Spieler.xcf","Bilder/Monster.xcf",] ebene1bilder = ["Bilder/leer.xcf","Bilder/angriff1.xcf"]
ebene1feld = [] ebene1feld = []
ebene2bilder = ["Bilder/leer.xcf","Bilder/Spieler.xcf","Bilder/Monster.xcf"]
ebene2feld = []
game_over = False game_over = False
anzahlMonster= 0
monsterspawncooldown=0
monsterstruktur = []
betrachtetesmonster = 0
def __init__(self, felderX, felderY): def __init__(self, felderX, felderY):
for x in range(felderX): for x in range(felderX):
@@ -21,6 +27,11 @@ class MeinSpiel:
for y in range(felderY): for y in range(felderY):
self.ebene0feld[x].append(random.randint(0,5)) 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): for x in range(felderX):
self.ebene1feld.append([]) self.ebene1feld.append([])
for y in range(felderY): for y in range(felderY):
@@ -29,26 +40,39 @@ class MeinSpiel:
def anfangsKonfiguration(self): def anfangsKonfiguration(self):
self.spielerx = random.randint(5,9) self.spielerx = random.randint(5,9)
self.spielery = random.randint(5,9) self.spielery = random.randint(5,9)
self.ebene1feld[self.spielerx][self.spielery] = 1 self.ebene2feld[self.spielerx][self.spielery] = 1
self.monsterx = random.randint(5,9) self.ebene1feld[4][4] = 1
self.monstery = random.randint(5,9)
self.ebene1feld[self.monsterx][self.monstery] = 2 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
def Angriffe(self):
if self.spielerx == self.monsterx and self.spielery == self.monstery: betrachtetesMonster = 0
while betrachtetesMonster < self.anzahlMonster:
if self.spielerx == self.monsterstruktur [betrachtetesMonster][0] and self.spielery == self.monsterstruktur [betrachtetesMonster][1]:
self.game_over = True self.game_over = True
betrachtetesMonster +=1
def rechts(self): def rechts(self):
self.spielerx += 1 self.spielerx += 1
@@ -77,11 +101,11 @@ class MeinSpiel:
self.oben() self.oben()
sound.Schrittsound(sound) sound.Schrittsound(sound)
if self.ebene0feld[self.spielerx][self.spielery]== 5: 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 self.spielerx,self.spielery = self.altspielerx,self.altspielery
verschiebung = self.hinergrundverschieben(xverschiebungaktuell,yverschiebungaktuell) verschiebung = self.hinergrundverschieben(xverschiebungaktuell,yverschiebungaktuell)
self.ebene1feld[self.altspielerx][self.altspielery] = 0 self.ebene2feld[self.altspielerx][self.altspielery] = 0
self.ebene1feld[self.spielerx][self.spielery] = 1 self.ebene2feld[self.spielerx][self.spielery] = 1
return verschiebung return verschiebung
@@ -125,15 +149,16 @@ class monster:
cooldownx = 1 cooldownx = 1
cooldowny = 1 cooldowny = 1
def __init__(self): def __init__(self):
pass pass
def bewegen(self,xpos,ypos): def bewegen(self,posx,posy):
xrichtung = random.randint(1,50*(self.cooldownx)) xrichtung = random.randint(1,50*(self.cooldownx))
if xrichtung == 1 and xpos < 41: if xrichtung == 1 and posx < 41:
xpos += 1 posx += 1
self.cooldownx = 100 self.cooldownx = 100
if xrichtung == 2 and xpos > 0: if xrichtung == 2 and posx > 0:
xpos -= 1 posx -= 1
self.cooldownx = 100 self.cooldownx = 100
if self.cooldownx != 1: if self.cooldownx != 1:
@@ -141,16 +166,16 @@ class monster:
yrichtung = random.randint(1,50*(self.cooldowny)) yrichtung = random.randint(1,50*(self.cooldowny))
if yrichtung == 1 and xpos < 41: if yrichtung == 1 and posy < 41:
ypos += 1 posy += 1
self.cooldowny = 100 self.cooldowny = 100
if yrichtung == 2 and ypos > 0: if yrichtung == 2 and posy > 0:
ypos -= 1 posy -= 1
self.cooldowny = 100 self.cooldowny = 100
if self.cooldowny != 1: if self.cooldowny != 1:
self.cooldowny -= 1 self.cooldowny -= 1
return xpos,ypos return posx,posy
+22 -11
View File
@@ -16,20 +16,22 @@ WEISS = ( 255, 255, 255)
Beigegelb = ( 226, 181, 97 ) Beigegelb = ( 226, 181, 97 )
pyGameBilderebene0 = [] pyGameBilderebene0 = []
pyGameBilderebene1 = [] pyGameBilderebene1 = []
pyGameBilderebene2 = []
xverschiebung = 0 xverschiebung = 0
yverschiebung = 0 yverschiebung = 0
verschiebung = [0,0] verschiebung = [0,0]
# Bilder aus meinSpiel werden für pygame vorbereitet # Bilder aus meinSpiel werden für pygame vorbereitet
ebene0 = MeinSpiel(FelderX, FelderY) meinspiel = MeinSpiel(FelderX, FelderY)
for fname in ebene0.ebene0bilder: for fname in meinspiel.ebene0bilder:
pyGameBilderebene0.append(pygame.image.load(fname)) pyGameBilderebene0.append(pygame.image.load(fname))
ebene1 = MeinSpiel(FelderX, FelderY) for fname in meinspiel.ebene1bilder:
for fname in ebene1.ebene1bilder:
pyGameBilderebene1.append(pygame.image.load(fname)) pyGameBilderebene1.append(pygame.image.load(fname))
for fname in meinspiel.ebene2bilder:
pyGameBilderebene2.append(pygame.image.load(fname))
#Anfangskonfiguration für das Spielfeld wird geladen #Anfangskonfiguration für das Spielfeld wird geladen
ebene0.anfangsKonfiguration() meinspiel.anfangsKonfiguration()
# Definieren und Öffnen eines neuen Fensters # Definieren und Öffnen eines neuen Fensters
fenster = pygame.display.set_mode((Breite, Hoehe)) fenster = pygame.display.set_mode((Breite, Hoehe))
@@ -38,27 +40,36 @@ clock = pygame.time.Clock()
# Schleife Hauptprogramm # Schleife Hauptprogramm
while True: while True:
if meinspiel.game_over == False:
sound.hintergrundmusik(sound) sound.hintergrundmusik(sound)
else:
pass
verschiebung=[0,0] verschiebung=[0,0]
# Überprüfen, ob Nutzer eine Aktion durchgeführt hat # Überprüfen, ob Nutzer eine Aktion durchgeführt hat
for event in pygame.event.get(): for event in pygame.event.get():
# Beenden bei [ESC] oder [X] # 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() pygame.quit()
if event.type==KEYDOWN: if event.type==KEYDOWN and meinspiel.game_over == False:
verschiebung = ebene0.bewegen(event.key-1073741902,xverschiebung,yverschiebung) verschiebung = meinspiel.bewegen(event.key-1073741902,xverschiebung,yverschiebung)
# Spielfeld löschen # Spielfeld löschen
xverschiebung += verschiebung[0] xverschiebung += verschiebung[0]
yverschiebung += verschiebung[1] yverschiebung += verschiebung[1]
for x in range(FelderX): for x in range(FelderX):
for y in range(FelderY): 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 x in range(FelderX):
for y in range(FelderY): 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 # Spielfeld/figuren zeichnen
ebene0.spawnSpieler() if meinspiel.game_over == False:
meinspiel.Monster()
meinspiel.Angriffe()
print(meinspiel.monsterstruktur)
# Fenster aktualisieren # Fenster aktualisieren
pygame.display.flip() pygame.display.flip()
clock.tick(FPS) clock.tick(FPS)