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 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 = () pyGameBilder = [] # Mein Spiel erstellen meinSpiel = MeinSpiel(FelderX, FelderY) # Bilder laden for fname in meinSpiel.bilder: pyGameBilder.append(pygame.image.load(fname)) # Anfangskonfiguration meinSpiel.anfangsKonfiguration() # Fenster fenster = pygame.display.set_mode((Breite, Hoehe)) pygame.display.set_caption("Medival Goblin Dungeon") clock = pygame.time.Clock() # Hauptschleife while True: # Ereignisse überprüfen for event in pygame.event.get(): # Beenden if event.type == QUIT: 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 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() 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 pygame.display.flip() clock.tick(FPS)