Olla
This commit is contained in:
+102
-43
@@ -2,6 +2,8 @@ from meinspiel import MeinSpiel
|
||||
import pygame
|
||||
from pygame.locals import *
|
||||
import random
|
||||
import time
|
||||
import sys
|
||||
|
||||
pygame.init()
|
||||
|
||||
@@ -9,17 +11,28 @@ Spielerfigur = pygame.image.load("H:\git\E-To-Linus-Hasenspiel\Bilder/Ritter1.pn
|
||||
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
|
||||
|
||||
GegnerX = (random.uniform(0,13))
|
||||
GegnerY = (random.uniform(0,13))
|
||||
Gegnerbewegung = 0.1
|
||||
Getroffen = False
|
||||
GegnerX = random.randint(0,13)
|
||||
GegnerY = random.randint(0,13)
|
||||
|
||||
LetzteBewegung = 0
|
||||
BewegungsPause = 500 # Millisekunden
|
||||
|
||||
print(GegnerY)
|
||||
print(GegnerX)
|
||||
|
||||
# Variablen/KONSTANTEN
|
||||
Breite, Hoehe = 840, 840
|
||||
@@ -29,6 +42,7 @@ FPS = 60
|
||||
|
||||
SCHWARZ = (0, 0, 0)
|
||||
WEISS = (255, 255, 255)
|
||||
Rot = ()
|
||||
|
||||
pyGameBilder = []
|
||||
|
||||
@@ -42,7 +56,6 @@ for fname in meinSpiel.bilder:
|
||||
# Anfangskonfiguration
|
||||
meinSpiel.anfangsKonfiguration()
|
||||
|
||||
print(GegnerX)
|
||||
# Fenster
|
||||
fenster = pygame.display.set_mode((Breite, Hoehe))
|
||||
pygame.display.set_caption("Medival Goblin Dungeon")
|
||||
@@ -66,6 +79,17 @@ while True:
|
||||
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
|
||||
@@ -84,43 +108,54 @@ while True:
|
||||
# Attacke
|
||||
|
||||
# Spielfeld zeichnen
|
||||
|
||||
for x in range(FelderX):
|
||||
for y in range(FelderY):
|
||||
fenster.blit(
|
||||
pyGameBilder[meinSpiel.spielfeld[x][y]],
|
||||
(x * Pixel, y * Pixel)
|
||||
)
|
||||
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(3):
|
||||
for Herzposition in range(Leben):
|
||||
fenster.blit(
|
||||
Herzen,
|
||||
(HerzX + Herzposition * 60, 0)
|
||||
)
|
||||
if GegnerX and GegnerY == spielerY and spielerX:
|
||||
print("Getroffen")
|
||||
|
||||
#Gegner Logik
|
||||
GegnerX += Gegnerbewegung
|
||||
GegnerY += Gegnerbewegung
|
||||
|
||||
# Gegner folgt dem Spieler
|
||||
Jetzt = pygame.time.get_ticks()
|
||||
|
||||
if GegnerY < 0 or GegnerY > 13:
|
||||
Gegnerbewegung *= -1
|
||||
if Jetzt - LetzteBewegung > BewegungsPause:
|
||||
|
||||
if GegnerX < 0 or GegnerX > 13:
|
||||
Gegnerbewegung *= -1
|
||||
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
|
||||
|
||||
|
||||
fenster.blit(
|
||||
Spielerfigur,
|
||||
(spielerX * Pixel, spielerY * Pixel)
|
||||
if Leben == 0:
|
||||
Spielend = False
|
||||
fenster.fill(SCHWARZ)
|
||||
fenster.blit(text, (250, 250))
|
||||
|
||||
if Spielend:
|
||||
fenster.blit(
|
||||
Spielerfigur,
|
||||
(spielerX * Pixel, spielerY * Pixel)
|
||||
)
|
||||
fenster.blit(
|
||||
Gegner,
|
||||
(GegnerX * Pixel, GegnerY * Pixel)
|
||||
if GegnerLebt and Spielend:
|
||||
for i in range(Gegneranzahl):
|
||||
fenster.blit(
|
||||
Gegner,
|
||||
(GegnerX * Pixel, GegnerY * Pixel)
|
||||
|
||||
)
|
||||
|
||||
# Berührung prüfen
|
||||
@@ -130,22 +165,46 @@ while True:
|
||||
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
|
||||
)
|
||||
|
||||
gegner_rect = pygame.Rect(
|
||||
GegnerX * Pixel + 10,
|
||||
GegnerY * Pixel + 10,
|
||||
40,
|
||||
40
|
||||
)
|
||||
#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
|
||||
print("Leben",Leben)
|
||||
|
||||
|
||||
|
||||
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user