Olla
This commit is contained in:
@@ -7,5 +7,18 @@ Man hat einen Ritter der in der Mitte des Spielfelds startet und sich mit seinem
|
|||||||
#09.09.2026
|
#09.09.2026
|
||||||
Heute habe ich relativ viel geschafft. Ich habe es hinbekommen der Spieler zu bewegen und habe außerdem noch mehrere Grafiken eingebaut wie zum Beispiel ein Herz für die Lebensanzeige und einen Kobold als Gegener. Jetzt probiere ich den Kobold zum Spieler gehen zu lassen. Jedoch läuft der Kobold noch aus dem Spielfeld heraus. Dies probiere ich nächste Woche zu verbessern.
|
Heute habe ich relativ viel geschafft. Ich habe es hinbekommen der Spieler zu bewegen und habe außerdem noch mehrere Grafiken eingebaut wie zum Beispiel ein Herz für die Lebensanzeige und einen Kobold als Gegener. Jetzt probiere ich den Kobold zum Spieler gehen zu lassen. Jedoch läuft der Kobold noch aus dem Spielfeld heraus. Dies probiere ich nächste Woche zu verbessern.
|
||||||
|
|
||||||
|
#22.09.2026
|
||||||
|
Mein Plan für heute ist es, dass mein Spieler nicht sofort alle Leben verliert sobald er vom Gegner getroffen wird.
|
||||||
|
|
||||||
|
#29.09.2026
|
||||||
|
Heute möchte ich einfügen, dass sobald der Spieler getroffen wird das Leben in der oberen rechten Ecke auch wirklich verschwindet. Die Lösung dafür war eigentlich zeimlich simpel. Ich musste einfach nur in der Range Schleife die 3 durch die Variable Leben ändern.
|
||||||
|
|
||||||
|
#30.09.2026
|
||||||
|
Heute ist es mein Ziel, eine Hitbox für den Gegner zu machen damit ich es schaffe, dass man diesen töten kann mit einer Attacke vom Spieler. Dafür glaube ich, werde ich mit einem rectangle ein dreieck um den gegner machen und dieses etwas größer machen als der spieler selbst damit man den gegner schon vorher treffen kann und nicht erst wenn er direkt in einem steht. Ich bae dies gut umgesetzt bekommen. Der Spieler kann nu den Gegner töten und ich habe sogar es noch geschafft einzufügen, dass neue Gegner spawnen diese schneller werden und der Spieler das Speilfeld nicht verlassen kann.
|
||||||
|
|
||||||
|
#06.10.2026
|
||||||
|
Heute möchte ich es schaffen,dass man nach einer bestimmten Anzahl an getöteten Gegnern mehrere spawnen also zum Beispiel nach 10 getöteten Gegnern spawnen anstatt 1 nun 2 Gegner. Ich habe zwar probiert diese Idee umzusetzen, jedoch ist diese zu komplex, weshalb ertsmal davon absehe und probiere in der nächsten Stunde eine GameOver Screen zu machen.
|
||||||
|
|
||||||
|
#07.10.2026
|
||||||
|
Heute möchte ich einen GameOver Screen einfügen und vielleicht wenn ich es schaffe auch noch einen Starbildschrim.
|
||||||
# Bildquellen:
|
# Bildquellen:
|
||||||
+1
-1
@@ -17,7 +17,7 @@ class MeinSpiel:
|
|||||||
def anfangsKonfiguration(self):
|
def anfangsKonfiguration(self):
|
||||||
self.spielfeld[5][5] = 0
|
self.spielfeld[5][5] = 0
|
||||||
|
|
||||||
|
|
||||||
def tasteGedrueckt(self, taste):
|
def tasteGedrueckt(self, taste):
|
||||||
if pygame.K_w == taste:
|
if pygame.K_w == taste:
|
||||||
print(taste)
|
print(taste)
|
||||||
|
|
||||||
+83
-24
@@ -2,6 +2,8 @@ from meinspiel import MeinSpiel
|
|||||||
import pygame
|
import pygame
|
||||||
from pygame.locals import *
|
from pygame.locals import *
|
||||||
import random
|
import random
|
||||||
|
import time
|
||||||
|
import sys
|
||||||
|
|
||||||
pygame.init()
|
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")
|
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")
|
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
|
spielerX = 6
|
||||||
spielerY = 6
|
spielerY = 6
|
||||||
HerzX = -1
|
HerzX = -1
|
||||||
Leben = 3
|
Leben = 3
|
||||||
|
letzter_treffer = 0
|
||||||
|
treffbar = False
|
||||||
|
GegnerLebt = True
|
||||||
|
GegnerGetötet = 0
|
||||||
|
Spawnanzahl = 1
|
||||||
|
Gegneranzahl = 1
|
||||||
|
Spielend = True
|
||||||
|
|
||||||
GegnerX = (random.uniform(0,13))
|
Getroffen = False
|
||||||
GegnerY = (random.uniform(0,13))
|
GegnerX = random.randint(0,13)
|
||||||
Gegnerbewegung = 0.1
|
GegnerY = random.randint(0,13)
|
||||||
|
|
||||||
|
LetzteBewegung = 0
|
||||||
|
BewegungsPause = 500 # Millisekunden
|
||||||
|
|
||||||
print(GegnerY)
|
|
||||||
print(GegnerX)
|
|
||||||
|
|
||||||
# Variablen/KONSTANTEN
|
# Variablen/KONSTANTEN
|
||||||
Breite, Hoehe = 840, 840
|
Breite, Hoehe = 840, 840
|
||||||
@@ -29,6 +42,7 @@ FPS = 60
|
|||||||
|
|
||||||
SCHWARZ = (0, 0, 0)
|
SCHWARZ = (0, 0, 0)
|
||||||
WEISS = (255, 255, 255)
|
WEISS = (255, 255, 255)
|
||||||
|
Rot = ()
|
||||||
|
|
||||||
pyGameBilder = []
|
pyGameBilder = []
|
||||||
|
|
||||||
@@ -42,7 +56,6 @@ for fname in meinSpiel.bilder:
|
|||||||
# Anfangskonfiguration
|
# Anfangskonfiguration
|
||||||
meinSpiel.anfangsKonfiguration()
|
meinSpiel.anfangsKonfiguration()
|
||||||
|
|
||||||
print(GegnerX)
|
|
||||||
# Fenster
|
# Fenster
|
||||||
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")
|
||||||
@@ -66,6 +79,17 @@ while True:
|
|||||||
pygame.quit()
|
pygame.quit()
|
||||||
exit()
|
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
|
# Bewegung
|
||||||
if event.key == K_w:
|
if event.key == K_w:
|
||||||
spielerY -= 1
|
spielerY -= 1
|
||||||
@@ -84,7 +108,7 @@ while True:
|
|||||||
# Attacke
|
# Attacke
|
||||||
|
|
||||||
# Spielfeld zeichnen
|
# Spielfeld zeichnen
|
||||||
|
if Spielend:
|
||||||
for x in range(FelderX):
|
for x in range(FelderX):
|
||||||
for y in range(FelderY):
|
for y in range(FelderY):
|
||||||
fenster.blit(
|
fenster.blit(
|
||||||
@@ -92,35 +116,46 @@ while True:
|
|||||||
(x * Pixel, y * Pixel)
|
(x * Pixel, y * Pixel)
|
||||||
)
|
)
|
||||||
# Lebensanzeige
|
# Lebensanzeige
|
||||||
for Herzposition in range(3):
|
for Herzposition in range(Leben):
|
||||||
fenster.blit(
|
fenster.blit(
|
||||||
Herzen,
|
Herzen,
|
||||||
(HerzX + Herzposition * 60, 0)
|
(HerzX + Herzposition * 60, 0)
|
||||||
)
|
)
|
||||||
if GegnerX and GegnerY == spielerY and spielerX:
|
|
||||||
print("Getroffen")
|
|
||||||
|
|
||||||
#Gegner Logik
|
|
||||||
GegnerX += Gegnerbewegung
|
|
||||||
GegnerY += Gegnerbewegung
|
|
||||||
|
|
||||||
if GegnerY < 0 or GegnerY > 13:
|
# Gegner folgt dem Spieler
|
||||||
Gegnerbewegung *= -1
|
Jetzt = pygame.time.get_ticks()
|
||||||
|
|
||||||
if GegnerX < 0 or GegnerX > 13:
|
if Jetzt - LetzteBewegung > BewegungsPause:
|
||||||
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
|
# Spielfigur und Gegner zeichnen
|
||||||
|
if Leben == 0:
|
||||||
|
Spielend = False
|
||||||
|
fenster.fill(SCHWARZ)
|
||||||
|
fenster.blit(text, (250, 250))
|
||||||
|
|
||||||
|
if Spielend:
|
||||||
fenster.blit(
|
fenster.blit(
|
||||||
Spielerfigur,
|
Spielerfigur,
|
||||||
(spielerX * Pixel, spielerY * Pixel)
|
(spielerX * Pixel, spielerY * Pixel)
|
||||||
)
|
)
|
||||||
|
if GegnerLebt and Spielend:
|
||||||
|
for i in range(Gegneranzahl):
|
||||||
fenster.blit(
|
fenster.blit(
|
||||||
Gegner,
|
Gegner,
|
||||||
(GegnerX * Pixel, GegnerY * Pixel)
|
(GegnerX * Pixel, GegnerY * Pixel)
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Berührung prüfen
|
# Berührung prüfen
|
||||||
@@ -130,22 +165,46 @@ while True:
|
|||||||
40,
|
40,
|
||||||
40
|
40
|
||||||
)
|
)
|
||||||
|
if GegnerLebt and Spielend:
|
||||||
gegner_rect = pygame.Rect(
|
gegner_rect = pygame.Rect(
|
||||||
GegnerX * Pixel + 10,
|
GegnerX * Pixel + 10,
|
||||||
GegnerY * Pixel + 10,
|
GegnerY * Pixel + 10,
|
||||||
40,
|
40,
|
||||||
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 spieler_rect.colliderect(gegner_rect):
|
||||||
|
if Jetzt - letzter_treffer > 1000:
|
||||||
Leben -= 1
|
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
|
# Fenster aktualisieren
|
||||||
pygame.display.flip()
|
pygame.display.flip()
|
||||||
|
|
||||||
clock.tick(FPS)
|
clock.tick(FPS)
|
||||||
|
|
||||||
Reference in New Issue
Block a user