Spielfiguren korrekt laden
This commit is contained in:
@@ -6,6 +6,12 @@ Ein Brettspiel (bei dem später eventuell mehrere Spieler zusammen bzw. abwechse
|
|||||||
|
|
||||||
## Protokoll
|
## Protokoll
|
||||||
|
|
||||||
|
### 16.09.2026 (zuhause)
|
||||||
|
|
||||||
|
Das `bilder`-Array enthält jetzt nur noch die Spielfiguren. Um die Spielfiguren vom Hintergrund zu trennen und die Bewegung zu ermöglichen, habe ich ein eigenes 2D-Array `spielfiguren` erstellt ("0" ist die rote Figur, "1" ist die gelbe Figur, "2" ist die grüne Figur und "3" ist die blaue Figur). Dadurch, dass `self.spielfiguren[x].append([])` am Ende auch ein Array enthält, können sich mehrere Figuren auf demselben Feld befinden. Anschließend habe ich recherchiert, wie man in einer for-Schleife mit einer zweiten Zählvariable (mit der enumerate-Funktion) innerhalb eines Feldes schauen kann, wie viele Figuren dort schon stehen und die Figuren ggf. um die Anzahl der dort bereits vorhandenen Figuren mit 30 (Pixeln) multipliziert nach rechts verschieben kann, damit sie sich auf dem Feld nicht mehr überlappen. Am Ende habe ich noch versucht, mit der tasteGedrueckt-Funktion eine Figur zu bewegen, aber diese führt aktuell noch bei mehrfacher Ausführung zu einem `ValueError: list.index(x): x not in list`.
|
||||||
|
|
||||||
|
Da Schwierigkeiten beim Verständnis der genauen Funktionsweise der Arrays aufkamen, habe ich dabei zur Behebung schwerwiegender Fehler KI befragt (https://claude.ai/share/95047be5-0e42-45bb-aa1f-3dbd0c2ad623). Die jetzige Struktur erleichtert das schnellere Weiterarbeiten in der nächsten Stunde.
|
||||||
|
|
||||||
### 16.09.2026
|
### 16.09.2026
|
||||||
|
|
||||||
Ich habe die Spielfigur-Grafiken erstellt und versucht, die Spielfiguren über den Hintergrundpixeln anzuzeigen. Dabei gibt es aber noch ein paar Probleme, die in der nächsten Stunde behoben werden müssen.
|
Ich habe die Spielfigur-Grafiken erstellt und versucht, die Spielfiguren über den Hintergrundpixeln anzuzeigen. Dabei gibt es aber noch ein paar Probleme, die in der nächsten Stunde behoben werden müssen.
|
||||||
|
|||||||
@@ -22,17 +22,14 @@ meinSpiel = MeinSpiel(FelderX, FelderY)
|
|||||||
for fname in meinSpiel.hintergrundbilder:
|
for fname in meinSpiel.hintergrundbilder:
|
||||||
try:
|
try:
|
||||||
hintergrundBilder.append(pygame.image.load(fname))
|
hintergrundBilder.append(pygame.image.load(fname))
|
||||||
except:
|
except (FileNotFoundError, pygame.error):
|
||||||
hintergrundBilder.append(pygame.image.load("Bilder/Grass.jpg"))
|
hintergrundBilder.append(pygame.image.load("Bilder/Grass.jpg"))
|
||||||
for fname in meinSpiel.bilder:
|
for fname in meinSpiel.bilder:
|
||||||
try:
|
try:
|
||||||
pyGameBilder.append(pygame.image.load(fname))
|
pyGameBilder.append(pygame.image.load(fname))
|
||||||
except:
|
except (FileNotFoundError, pygame.error):
|
||||||
pyGameBilder.append(pygame.image.load("Bilder/Grass.jpg"))
|
pyGameBilder.append(pygame.image.load("Bilder/Grass.jpg"))
|
||||||
|
|
||||||
# for fname in meinSpiel.hintergrundbilder:
|
|
||||||
# hintergrundBilder.append(pygame.image.load(fname))
|
|
||||||
|
|
||||||
background_img_wood = pygame.image.load(
|
background_img_wood = pygame.image.load(
|
||||||
"Bilder/wood-table-texture-background-cropped.jpg")
|
"Bilder/wood-table-texture-background-cropped.jpg")
|
||||||
|
|
||||||
@@ -52,8 +49,8 @@ while True:
|
|||||||
if event.type == QUIT or (event.type == KEYDOWN
|
if event.type == QUIT or (event.type == KEYDOWN
|
||||||
and event.key == K_ESCAPE):
|
and event.key == K_ESCAPE):
|
||||||
pygame.quit()
|
pygame.quit()
|
||||||
print(f"{int((pygame.mouse.get_pos()[0])/120)},
|
# print(f"{int((pygame.mouse.get_pos()[0])/120)}, "
|
||||||
{int((pygame.mouse.get_pos()[1])/120)}")
|
# f"{int((pygame.mouse.get_pos()[1])/120)}")
|
||||||
# Spiellogik
|
# Spiellogik
|
||||||
if event.type == KEYDOWN:
|
if event.type == KEYDOWN:
|
||||||
meinSpiel.tasteGedrueckt(event.key)
|
meinSpiel.tasteGedrueckt(event.key)
|
||||||
@@ -63,10 +60,17 @@ while True:
|
|||||||
for x in range(FelderX):
|
for x in range(FelderX):
|
||||||
for y in range(FelderY):
|
for y in range(FelderY):
|
||||||
screen.blit(hintergrundBilder[meinSpiel.spielfeld[x][y]],(x*Pixel, y*Pixel))
|
screen.blit(hintergrundBilder[meinSpiel.spielfeld[x][y]],(x*Pixel, y*Pixel))
|
||||||
screen.blit(pygame.image.load("Bilder/Spielfiguren/spielfigur-rot.png"),(5*Pixel, 1*Pixel))
|
|
||||||
|
for x in range(FelderX):
|
||||||
|
for y in range(FelderY):
|
||||||
|
for i, figur in enumerate(meinSpiel.spielfiguren[x][y]): # enumerate macht das gleiche wie range(len(meinSpiel.spielfiguren[x][y])), nur mit 2 Zählvariablen
|
||||||
|
# "i" beginnt bei jedem Feld wieder bei 0 - keine feste if-Abfrage jeder einzelnen Figur, um die Verschiebungsvariablen zu setzen, nötig
|
||||||
|
xVerschiebung = i * 30 # Verschiebung um 30 Pixel nach rechts, jede Figur im selben Feld etwas weiter
|
||||||
|
yVerschiebung = 0
|
||||||
|
screen.blit(pyGameBilder[figur], (x*Pixel + xVerschiebung, y*Pixel + yVerschiebung))
|
||||||
|
print(f"[{i}] Zeichne Figur {figur} auf Feld {x}, {y} mit Verschiebung {xVerschiebung}")
|
||||||
|
|
||||||
# Spielfeld/figuren zeichnen
|
# Spielfeld/figuren zeichnen
|
||||||
# print(pyGameBilder)
|
|
||||||
# Fenster aktualisieren
|
# Fenster aktualisieren
|
||||||
pygame.display.flip()
|
pygame.display.flip()
|
||||||
clock.tick(FPS)
|
clock.tick(FPS)
|
||||||
|
|||||||
+35
-13
@@ -3,31 +3,53 @@ import pygame
|
|||||||
|
|
||||||
|
|
||||||
class MeinSpiel:
|
class MeinSpiel:
|
||||||
bilder = ["Bilder/Grass.jpg", "Bilder/Hase.jpg",
|
bilder = ["Bilder/Spielfiguren/spielfigur-rot.png",
|
||||||
"Bilder/wood-table-texture-background.jpg",
|
"Bilder/Spielfiguren/spielfigur-gelb.png",
|
||||||
"Bilder/spielfeld-verbindung-schnur-klein.png",
|
"Bilder/Spielfiguren/spielfigur-gruen.png",
|
||||||
"Bilder/Spielfiguren/spielfigur-rot.png"]
|
"Bilder/Spielfiguren/spielfigur-blau.png"]
|
||||||
hintergrundbilder = []
|
hintergrundbilder = []
|
||||||
spielfeld = []
|
spielfeld = []
|
||||||
|
spielfiguren = []
|
||||||
|
|
||||||
def __init__(self, felderX, felderY):
|
def __init__(self, felderX, felderY):
|
||||||
for x in range(felderX):
|
for x in range(felderX):
|
||||||
self.spielfeld.append([])
|
self.spielfeld.append([])
|
||||||
|
self.spielfiguren.append([])
|
||||||
for y in range(felderY):
|
for y in range(felderY):
|
||||||
# try:
|
self.hintergrundbilder.append(
|
||||||
# self.spielfeld[x].append(f"Bilder/Hintergrundpixel/background_{x}-{y}.jpg")
|
f"Bilder/Hintergrundpixel/background_{x}-{y}.jpg")
|
||||||
# except TypeError:
|
|
||||||
self.hintergrundbilder.append(f"Bilder/Hintergrundpixel/background_{x}-{y}.jpg")
|
|
||||||
self.spielfeld[x].append((7*x+y))
|
self.spielfeld[x].append((7*x+y))
|
||||||
|
self.spielfiguren[x].append([])
|
||||||
# print(self.hintergrundbilder)
|
|
||||||
# pass
|
|
||||||
|
|
||||||
def anfangsKonfiguration(self):
|
def anfangsKonfiguration(self):
|
||||||
self.spielfeld[5][6] = 4
|
self.spielfiguren[0][1].append(0)
|
||||||
|
self.spielfiguren[0][1].append(1)
|
||||||
|
self.spielfiguren[0][1].append(2)
|
||||||
|
self.spielfiguren[0][1].append(3)
|
||||||
|
|
||||||
def tasteGedrueckt(self, taste):
|
def tasteGedrueckt(self, taste):
|
||||||
print("taste gedrückt")
|
if taste == pygame.K_SPACE:
|
||||||
|
for x in range(len(self.spielfiguren)):
|
||||||
|
for y in range(len(self.spielfiguren[x])):
|
||||||
|
# if len(self.spielfiguren[x][y]) > 0:
|
||||||
|
# figur = self.spielfiguren[x][y].pop()
|
||||||
|
# print(f"Bewege Figur {figur} von Feld {x}, {y}")
|
||||||
|
# if x < len(self.spielfiguren) - 1:
|
||||||
|
# self.spielfiguren[x + 1][y].append(figur)
|
||||||
|
# print(f"Bewege Figur {figur} auf Feld {x + 1}, {y}")
|
||||||
|
# else:
|
||||||
|
# self.spielfiguren[0][y].append(figur)
|
||||||
|
# print(f"Bewege Figur {figur} auf Feld 0, {y}")
|
||||||
|
|
||||||
|
if len(self.spielfiguren[x][y]) > 0:
|
||||||
|
# print(str(x) + " | " + str(len(self.spielfiguren) - 1) + " | " + str(self.spielfiguren))
|
||||||
|
self.spielfiguren[x][y].pop(
|
||||||
|
self.spielfiguren[x][y].index(1)) # rote Spielfigur entfernen
|
||||||
|
if x < len(self.spielfiguren) - 1:
|
||||||
|
self.spielfiguren[x + 1][y].append(1)
|
||||||
|
else:
|
||||||
|
self.spielfiguren[x - 1][y].append(1)
|
||||||
|
|
||||||
|
|
||||||
# def renderText(self, text: str, x: int, y: int, color: tuple):
|
# def renderText(self, text: str, x: int, y: int, color: tuple):
|
||||||
# font = pygame.font.SysFont("David CLM", 74)
|
# font = pygame.font.SysFont("David CLM", 74)
|
||||||
|
|||||||
Reference in New Issue
Block a user