starten.py aktualisiert
This commit is contained in:
+21
-176
@@ -1,210 +1,55 @@
|
|||||||
|
# Importieren u. initialisieren der Pygame-Bibliothek
|
||||||
from meinspiel import MeinSpiel
|
from meinspiel import MeinSpiel
|
||||||
import pygame
|
import pygame
|
||||||
from pygame.locals import *
|
from pygame.locals import *
|
||||||
import random
|
|
||||||
import time
|
|
||||||
import sys
|
|
||||||
|
|
||||||
pygame.init()
|
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)
|
# Variablen/KONSTANTEN setzen
|
||||||
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
|
|
||||||
Breite, Hoehe = 840, 840
|
Breite, Hoehe = 840, 840
|
||||||
Pixel = 60
|
Pixel = 60
|
||||||
FelderX, FelderY = int(Breite / Pixel), int(Hoehe / Pixel)
|
FelderX, FelderY = int(Breite / Pixel), int(Hoehe / Pixel)
|
||||||
FPS = 60
|
FPS = 60
|
||||||
|
SCHWARZ = ( 0, 0, 0)
|
||||||
SCHWARZ = (0, 0, 0)
|
WEISS = ( 255, 255, 255)
|
||||||
WEISS = (255, 255, 255)
|
|
||||||
Rot = ()
|
|
||||||
|
|
||||||
pyGameBilder = []
|
pyGameBilder = []
|
||||||
|
|
||||||
# Mein Spiel erstellen
|
# Bilder aus meinSpiel werden für pygame vorbereitet
|
||||||
meinSpiel = MeinSpiel(FelderX, FelderY)
|
meinSpiel = MeinSpiel(FelderX, FelderY)
|
||||||
|
|
||||||
# Bilder laden
|
|
||||||
for fname in meinSpiel.bilder:
|
for fname in meinSpiel.bilder:
|
||||||
pyGameBilder.append(pygame.image.load(fname))
|
pyGameBilder.append(pygame.image.load(fname))
|
||||||
|
|
||||||
# Anfangskonfiguration
|
#Anfangskonfiguration für das Spielfeld wird geladen
|
||||||
meinSpiel.anfangsKonfiguration()
|
meinSpiel.anfangsKonfiguration()
|
||||||
|
|
||||||
# Fenster
|
# Definieren und Öffnen eines neuen Fensters
|
||||||
fenster = pygame.display.set_mode((Breite, Hoehe))
|
fenster = pygame.display.set_mode((Breite, Hoehe))
|
||||||
pygame.display.set_caption("Medival Goblin Dungeon")
|
pygame.display.set_caption("Medival Goblin Dungeon")
|
||||||
|
|
||||||
clock = pygame.time.Clock()
|
clock = pygame.time.Clock()
|
||||||
|
|
||||||
# Hauptschleife
|
# Schleife Hauptprogramm
|
||||||
while True:
|
while True:
|
||||||
|
# Überprüfen, ob Nutzer eine Aktion durchgeführt hat
|
||||||
# Ereignisse überprüfen
|
|
||||||
for event in pygame.event.get():
|
for event in pygame.event.get():
|
||||||
|
# Beenden bei [ESC] oder [X]
|
||||||
# Beenden
|
if event.type==QUIT or (event.type==KEYDOWN and event.key==K_ESCAPE):
|
||||||
if event.type == QUIT:
|
|
||||||
pygame.quit()
|
pygame.quit()
|
||||||
exit()
|
exit()
|
||||||
|
|
||||||
if event.type == KEYDOWN:
|
# Spiellogik
|
||||||
|
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
|
|
||||||
|
|
||||||
meinSpiel.tasteGedrueckt(event.key)
|
meinSpiel.tasteGedrueckt(event.key)
|
||||||
|
|
||||||
# Attacke
|
# Gegner bewegen, Leben prüfen (neu: wird jeden Durchlauf aufgerufen)
|
||||||
|
meinSpiel.update()
|
||||||
|
|
||||||
# Spielfeld zeichnen
|
# Spielfeld löschen
|
||||||
if Spielend:
|
for x in range(FelderX):
|
||||||
for x in range(FelderX):
|
for y in range(FelderY):
|
||||||
for y in range(FelderY):
|
fenster.blit(pyGameBilder[meinSpiel.spielfeld[x][y]],(x*Pixel,y*Pixel))
|
||||||
fenster.blit(
|
|
||||||
pyGameBilder[meinSpiel.spielfeld[x][y]],
|
|
||||||
(x * Pixel, y * Pixel)
|
|
||||||
)
|
|
||||||
# Lebensanzeige
|
|
||||||
for Herzposition in range(Leben):
|
|
||||||
fenster.blit(
|
|
||||||
Herzen,
|
|
||||||
(HerzX + Herzposition * 60, 0)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
# Spielfeld/figuren zeichnen
|
||||||
|
|
||||||
# Gegner folgt dem Spieler
|
|
||||||
Jetzt = pygame.time.get_ticks()
|
|
||||||
|
|
||||||
if Jetzt - LetzteBewegung > BewegungsPause:
|
|
||||||
|
|
||||||
if GegnerX < spielerX:
|
|
||||||
GegnerX += 1
|
|
||||||
elif GegnerX > spielerX:
|
|
||||||
GegnerX -= 1
|
|
||||||
elif GegnerY < spielerY:
|
|
||||||
GegnerY += 1
|
|
||||||
elif GegnerY > spielerY:
|
|
||||||
GegnerY -= 1
|
|
||||||
|
|
||||||
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
|
# Fenster aktualisieren
|
||||||
pygame.display.flip()
|
pygame.display.flip()
|
||||||
|
|
||||||
clock.tick(FPS)
|
clock.tick(FPS)
|
||||||
|
|
||||||
Reference in New Issue
Block a user