starten.py aktualisiert

This commit is contained in:
2026-10-28 10:04:14 +00:00
parent 0c78054f56
commit db2550ca53
+21 -176
View File
@@ -1,210 +1,55 @@
# Importieren u. initialisieren der Pygame-Bibliothek
from meinspiel import MeinSpiel
import pygame
from pygame.locals import *
import random
import time
import sys
pygame.init()
Spielerfigur = pygame.image.load("H:\git\E-To-Linus-Hasenspiel\Bilder/Ritter1.png")
Gegner = pygame.image.load("H:\git\E-To-Linus-Hasenspiel\Bilder/Goblin.png")
Herzen = pygame.image.load("H:\git\E-To-Linus-Hasenspiel\Bilder/Herz.png")
font = pygame.font.Font(None, 74)
text = font.render ("GAME OVER", True, (255,255, 255))
spielerX = 6
spielerY = 6
HerzX = -1
Leben = 3
letzter_treffer = 0
treffbar = False
GegnerLebt = True
GegnerGetötet = 0
Spawnanzahl = 1
Gegneranzahl = 1
Spielend = True
Getroffen = False
GegnerX = random.randint(0,13)
GegnerY = random.randint(0,13)
LetzteBewegung = 0
BewegungsPause = 500 # Millisekunden
# Variablen/KONSTANTEN
# Variablen/KONSTANTEN setzen
Breite, Hoehe = 840, 840
Pixel = 60
FelderX, FelderY = int(Breite / Pixel), int(Hoehe / Pixel)
FPS = 60
SCHWARZ = (0, 0, 0)
WEISS = (255, 255, 255)
Rot = ()
FPS = 60
SCHWARZ = ( 0, 0, 0)
WEISS = ( 255, 255, 255)
pyGameBilder = []
# Mein Spiel erstellen
# Bilder aus meinSpiel werden für pygame vorbereitet
meinSpiel = MeinSpiel(FelderX, FelderY)
# Bilder laden
for fname in meinSpiel.bilder:
pyGameBilder.append(pygame.image.load(fname))
# Anfangskonfiguration
#Anfangskonfiguration für das Spielfeld wird geladen
meinSpiel.anfangsKonfiguration()
# Fenster
# Definieren und Öffnen eines neuen Fensters
fenster = pygame.display.set_mode((Breite, Hoehe))
pygame.display.set_caption("Medival Goblin Dungeon")
clock = pygame.time.Clock()
# Hauptschleife
# Schleife Hauptprogramm
while True:
# Ereignisse überprüfen
# Überprüfen, ob Nutzer eine Aktion durchgeführt hat
for event in pygame.event.get():
# Beenden
if event.type == QUIT:
# Beenden bei [ESC] oder [X]
if event.type==QUIT or (event.type==KEYDOWN and event.key==K_ESCAPE):
pygame.quit()
exit()
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
pygame.quit()
exit()
# Gegner treffen und töten und wieder einen neuen Spawnen
if event.key == K_SPACE and treffbar == True:
GegnerLebt = False
print("Attacke")
GegnerX = random.randint(0, 13)
GegnerY = random.randint(0, 13)
GegnerLebt = True
BewegungsPause -= 15
GegnerGetötet += 1
# Bewegung
if event.key == K_w:
spielerY -= 1
if event.key == K_s:
spielerY += 1
if event.key == K_a:
spielerX -= 1
if event.key == K_d:
spielerX += 1
# Spiellogik
if event.type==KEYDOWN:
meinSpiel.tasteGedrueckt(event.key)
# Attacke
# Spielfeld zeichnen
if Spielend:
for x in range(FelderX):
for y in range(FelderY):
fenster.blit(
pyGameBilder[meinSpiel.spielfeld[x][y]],
(x * Pixel, y * Pixel)
)
# Lebensanzeige
for Herzposition in range(Leben):
fenster.blit(
Herzen,
(HerzX + Herzposition * 60, 0)
)
# Gegner folgt dem Spieler
Jetzt = pygame.time.get_ticks()
# Gegner bewegen, Leben prüfen (neu: wird jeden Durchlauf aufgerufen)
meinSpiel.update()
if Jetzt - LetzteBewegung > BewegungsPause:
# Spielfeld löschen
for x in range(FelderX):
for y in range(FelderY):
fenster.blit(pyGameBilder[meinSpiel.spielfeld[x][y]],(x*Pixel,y*Pixel))
if GegnerX < spielerX:
GegnerX += 1
elif GegnerX > spielerX:
GegnerX -= 1
elif GegnerY < spielerY:
GegnerY += 1
elif GegnerY > spielerY:
GegnerY -= 1
# Spielfeld/figuren zeichnen
LetzteBewegung = Jetzt
# Spielfigur und Gegner zeichnen
if Leben == 0:
Spielend = False
fenster.fill(SCHWARZ)
fenster.blit(text, (250, 250))
if Spielend:
fenster.blit(
Spielerfigur,
(spielerX * Pixel, spielerY * Pixel)
)
if GegnerLebt and Spielend:
for i in range(Gegneranzahl):
fenster.blit(
Gegner,
(GegnerX * Pixel, GegnerY * Pixel)
)
# Berührung prüfen
spieler_rect = pygame.Rect(
spielerX * Pixel + 10,
spielerY * Pixel + 10,
40,
40
)
if GegnerLebt and Spielend:
gegner_rect = pygame.Rect(
GegnerX * Pixel + 10,
GegnerY * Pixel + 10,
40,
40
)
if GegnerLebt:
gegner_rect_hitbox = pygame.Rect(
GegnerX * Pixel - 20,
GegnerY * Pixel - 20,
120,
120
)
#Hitbox Logik für den Gegner
if GegnerLebt and spieler_rect.colliderect(gegner_rect_hitbox):
print("In der Hitbox")
treffbar = True
else:
treffbar = False
# Lebensabzug
if spieler_rect.colliderect(gegner_rect):
if Jetzt - letzter_treffer > 1000:
Leben -= 1
letzter_treffer = Jetzt
print("Leben", Leben)
#Gegner kann nicht das Spielfeld verlassen
if spielerX == -1:
spielerX += 1
if spielerX == 14:
spielerX -= 1
if spielerY == -1:
spielerY += 1
if spielerY == 14:
spielerY -= 1
# Fenster aktualisieren
pygame.display.flip()
clock.tick(FPS)