diff --git a/starten.py b/starten.py index abefea5..83a014b 100644 --- a/starten.py +++ b/starten.py @@ -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) - \ No newline at end of file