23.09. und 22.09.

This commit is contained in:
alstergym
2026-09-23 11:06:30 +02:00
parent e9d80c72a7
commit a6cd5890bf
20 changed files with 132 additions and 20 deletions
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
+9 -1
View File
@@ -2,11 +2,19 @@
## Spiel Informatik 2026 Johannes Matzen Eb ## Spiel Informatik 2026 Johannes Matzen Eb
### Spielidee ### Spielidee
kommt noch... Ich möchte ein Spiel machen, bei dem man einen Spieler steuert, der durch eine große Welt läuft. Man sieht davon aber immer nur einen Ausschnitt. Die Umgebung wird zufällig generiert und es gibt "Monster", die sich von alleine bewegen (sehr einfache KI). Das Ziel des Spiels wird es (wahrscheinlich) sein, entweder, alle Monster zu besiegen, oder, eine Aufgabe zu erfüllen (z.B. Diamanten sammeln).
### Protokoll ### Protokoll
#### 09.09. #### 09.09.
Ich habe programmiert, dass man die Spielfigur in dem Raster bewegen kann und, dass sich das Raster dabei verschiebt. Letzteres funktioniert aber noch nicht so gut. Ich habe programmiert, dass man die Spielfigur in dem Raster bewegen kann und, dass sich das Raster dabei verschiebt. Letzteres funktioniert aber noch nicht so gut.
#### 16.09.
Ich habe ein paar Bugs entfernt (z.B. beim Laden der Grafiken) und versucht, das Verschieben des Rasters zu verbessern.
#### 19.09.
Zu Hause habe ich es endlich geschafft, das Raster zu verschieben.
#### 22.09.
Binary file not shown.
Binary file not shown.
+117 -16
View File
@@ -1,24 +1,59 @@
import copy import copy
import pygame import pygame
import random import random
pygame.init()
pygame.mixer.init()
class MeinSpiel: class MeinSpiel:
bilder = [] hintergrundstile = ["Sand","Gras"]
for i in range(20): hintergrundstil = random.choice(hintergrundstile)
bilder.append("Bilder/"+str(i)+".jpg") bilder = ["Bilder/Spieler.xcf"]
for i in range(6):
bilder.append("Bilder/"+hintergrundstil+str(i+1)+".xcf")
bilder.append("Bilder/Monster.xcf")
spielfeld = [] spielfeld = []
feldunterspieler=random.randint(0,5) feldunterspieler=random.randint(1,5)
felduntermonster=random.randint(1,5)
game_over = False
def __init__(self, felderX, felderY): def __init__(self, felderX, felderY):
for x in range(felderX): for x in range(felderX):
self.spielfeld.append([]) self.spielfeld.append([])
for y in range(felderY): for y in range(felderY):
self.spielfeld[x].append(random.randint(0,5)) self.spielfeld[x].append(random.randint(1,6))
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.spielfeld[self.spielerx][self.spielery] = 6 self.spielfeld[self.spielerx][self.spielery] = 1
self.monsterx = random.randint(5,9)
self.monstery = random.randint(5,9)
self.spielfeld[self.monsterx][self.monstery] = 1
def spawnSpieler(self):
self.spielfeld[self.spielerx][self.spielery] = 0
self.spielfeld[self.monsterx][self.monstery] = self.felduntermonster
self.altmonsterx = self.monsterx
self.altmonstery = self.monstery
self.felduntermonsteralt = self.felduntermonster
self.monsterx,self.monstery = monster.bewegen(monster,self.monsterx,self.monstery)
self.felduntermonster = self.spielfeld[self.monsterx][self.monstery]
if self.felduntermonster != 6:
self.spielfeld[self.monsterx][self.monstery] = 7
else:
self.spielfeld[self.altmonsterx][self.altmonstery] = 7
self.spielfeld[self.monsterx][self.monstery] = 6
self.felduntermonster = self.felduntermonsteralt
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): def rechts(self):
self.spielerx += 1 self.spielerx += 1
@@ -34,35 +69,101 @@ class MeinSpiel:
self.spielfeld[self.spielerx][self.spielery] = self.feldunterspieler self.spielfeld[self.spielerx][self.spielery] = self.feldunterspieler
posalt=[self.spielerx,self.spielery] posalt=[self.spielerx,self.spielery]
feldunterspieleralt=self.feldunterspieler feldunterspieleralt=self.feldunterspieler
if taste == 1:
if taste == 1 and self.spielerx < 41:
self.rechts() self.rechts()
if taste == 2: sound.Schrittsound(sound)
if taste == 2 and self.spielerx > 0:
self.links() self.links()
if taste == 3: sound.Schrittsound(sound)
if taste == 3 and self.spielery < 41:
self.unten() self.unten()
if taste == 4: sound.Schrittsound(sound)
if taste == 4 and self.spielery > 0:
self.oben() self.oben()
sound.Schrittsound(sound)
self.feldunterspieler = self.spielfeld[self.spielerx][self.spielery] self.feldunterspieler = self.spielfeld[self.spielerx][self.spielery]
if self.feldunterspieler== 5: if self.feldunterspieler== 6:
self.spielerx,self.spielery = posalt self.spielerx,self.spielery = posalt
self.feldunterspieler=feldunterspieleralt self.feldunterspieler=feldunterspieleralt
verschiebung = self.hinergrundverschieben(xverschiebungaktuell,yverschiebungaktuell) verschiebung = self.hinergrundverschieben(xverschiebungaktuell,yverschiebungaktuell)
self.spielfeld[self.spielerx][self.spielery] = 6 self.spielfeld[self.spielerx][self.spielery] = 0
return verschiebung return verschiebung
def hinergrundverschieben(self,xverschiebungaktuell,yverschiebungaktuell): def hinergrundverschieben(self,xverschiebungaktuell,yverschiebungaktuell):
xverschiebung=0 xverschiebung=0
yverschiebung=0 yverschiebung=0
if self.spielerx >= 11-xverschiebungaktuell: if self.spielerx >= 11-xverschiebungaktuell and self.spielerx <= 38 and self.spielerx >= 3:
xverschiebung = -1 xverschiebung = -1
if self.spielerx <= 2-xverschiebungaktuell: if self.spielerx <= 2-xverschiebungaktuell and self.spielerx <= 38 and self.spielerx >= 3:
xverschiebung = 1 xverschiebung = 1
if self.spielery >= 11-yverschiebungaktuell: if self.spielery >= 11-yverschiebungaktuell and self.spielery <= 38 and self.spielery >= 3:
yverschiebung = -1 yverschiebung = -1
if self.spielery <= 2-yverschiebungaktuell: if self.spielery <= 2-yverschiebungaktuell and self.spielery <= 38 and self.spielery >= 3:
yverschiebung = 1 yverschiebung = 1
verschiebung=[xverschiebung,yverschiebung] verschiebung=[xverschiebung,yverschiebung]
return verschiebung 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):
print(self.cooldowny)
print()
print(self.cooldownx)
print()
print()
print()
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
+5 -2
View File
@@ -1,5 +1,6 @@
# Importieren u. initialisieren der Pygame-Bibliothek # Importieren u. initialisieren der Pygame-Bibliothek
from meinspiel import MeinSpiel from meinspiel import MeinSpiel
from meinspiel import sound
import pygame import pygame
from pygame.locals import * from pygame.locals import *
pygame.init() pygame.init()
@@ -12,6 +13,7 @@ FelderX, FelderY = 42, 42
FPS = 60 FPS = 60
SCHWARZ = ( 0, 0, 0) SCHWARZ = ( 0, 0, 0)
WEISS = ( 255, 255, 255) WEISS = ( 255, 255, 255)
Beigegelb = ( 226, 181, 97 )
pyGameBilder = [] pyGameBilder = []
xverschiebung = 0 xverschiebung = 0
yverschiebung = 0 yverschiebung = 0
@@ -32,11 +34,12 @@ clock = pygame.time.Clock()
# Schleife Hauptprogramm # Schleife Hauptprogramm
while True: while True:
sound.hintergrundmusik(sound)
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): if event.type==QUIT or (event.type==KEYDOWN and event.key==K_ESCAPE) or meinSpiel.game_over == True:
pygame.quit() pygame.quit()
if event.type==KEYDOWN: if event.type==KEYDOWN:
verschiebung = meinSpiel.bewegen(event.key-1073741902,xverschiebung,yverschiebung) verschiebung = meinSpiel.bewegen(event.key-1073741902,xverschiebung,yverschiebung)
@@ -48,7 +51,7 @@ while True:
for y in range(FelderY): for y in range(FelderY):
fenster.blit(pyGameBilder[meinSpiel.spielfeld[x][y]],((x+xverschiebung)*Pixel,(y+yverschiebung)*Pixel)) fenster.blit(pyGameBilder[meinSpiel.spielfeld[x][y]],((x+xverschiebung)*Pixel,(y+yverschiebung)*Pixel))
# Spielfeld/figuren zeichnen # Spielfeld/figuren zeichnen
meinSpiel.spawnSpieler()
# Fenster aktualisieren # Fenster aktualisieren
pygame.display.flip() pygame.display.flip()
clock.tick(FPS) clock.tick(FPS)