Files
2026-10-28 11:01:35 +01:00

96 lines
8.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# E-To-Aron-Hasenspiel
## Meine Spielidee
Ein Brettspiel (bei dem später eventuell mehrere Spieler zusammen bzw. abwechselnd spielen können) mit Spielfiguren und Spielfeldern: Durch Würfeln kann eine Figur eine bestimmte Anzahl an Feldern vorrücken. Man klickt einen Knopf zum Würfeln, woraufhin schnell hintereinander mehrere Seiten des Würfels (es gibt jeweils ein Bild von jeder der sechs Würfelseiten) zufällig angezeigt werden und der Würfel schließlich auf einer Seite stehen bleibt. Die Spielfigur, die gerade am Zug ist, rückt dann die gewürfelte Anzahl an Feldern vor. Auf Spezialfeldern passieren besondere Ereignisse (z. B. Minispiele, bei denen man so schnell wie möglich einen Punkt finden & anklicken muss oder, dass man beim nächsten Zug mit zwei Würfeln würfeln kann).
## Protokoll
## 28.10.2026
Ich habe ein weiteres Problem mit der Bewegung der Spielfiguren behoben und versucht, eine Würfelanimation (beim Würfeln sollen zuerst verschiedene zufällige Würfelbilder angezeigt werden, bevor das richtige angezeigt wird) einzubauen. Diese ist allerdings noch nicht fertig.
## 26.10.2026 (zuhause)
Ich habe das Problem mit der Bewegung der Figuren gelöst, indem ich die Bewegungslogik so umgebaut habe, dass nicht mehr bei jedem Zug basierend auf der aktuellen x- und y-Position die nächsten Schritte durch if-Abfragen vorgegeben werden. Stattdessen wird jetzt in der `anfangsKonfiguration()` eine Pfad-Variable für die Figuren angelegt und die genauen Koordinaten der Felder, über die die Figuren laufen sollen, in richtiger Reihenfolge mit `range()`-Funktionen in das Array der Pfad-Variable eingefügt (über STRG+Linksklick auf die range-Funktion habe ich herausgefunden, dass man auch einen Stop-Wert für das Zählen eingeben kann und die Zählrichtung mit -1 für ungerade Zeilen umkehren kann). Durch die `min()`-Funktion in der `tasteGedrueckt()`–Funktion bleiben die Figuren außerdem am Ende des Spielfelds stehen und laufen nicht mehr weiter.
**TODO für den Untericht:** Spielfelddesign, Spezialfelder + Erkennung (so, dass ein besonderes Ereignis ausgelöst werden kann)
## 07.10.2026
Es besteht weiterhin ein Problem mit steckenbleibenden Figuren, sobald diese in die zweite Zeile wandern. Allerdings habe ich es jetzt geschafft, das Design ein bisschen zu überarbeiten und man kann jetzt auf einen "Würfeln"-Button drücken, statt jedes Mal die Leertaste zum Würfeln zu drücken.
## 06.10.2026
*(heute Doppelunterricht in Vertretungsstunde bei Frau Wilmsen)*
Es gab ein Problem mit der bewegungsrichtung-Variable, das dafür gesorgt hat, dass teilweise die falschen Figuren in die falsche Richtung bewegt wurden, da diese eine Variable für alle Figuren galt. Um das Problem zu beheben, habe ich die bewegungsrichtung-Variable vom Typ "string" zum Typ "dictionary" geändert, sodass Wertzuweisungen wie z. B. `{0: 'rechts', 1: 'rechts', 2: 'rechts', 3: 'rechts'}` entstehen, also jede Figur eine eigene Bewegungsrichtung, unabhängig von den anderen, haben kann. Jedoch führt dies nun am Ende des Spielfelds (rechts) wieder zu einem `IndexError: list index out of range`, den ich noch nicht beheben konnte
## 30.09.2026
Die Figuren auf dem Spielfeld gehen die gewünschte Anzahl an Zufallsschritten und die Würfelbilder werden auch schon angezeigt (aber noch nicht wieder ausgeblendet nach einer bestimmten Zeit). Jedoch kommt es in der zweiten Zeile an einem Punkt zu einem Fehler, der dazu führt, dass die Figuren sich nicht mehr weiter bewegen (bzw. auch schon beim Wechsel aus der ersten in die zweite Zeile "zu weit laufen"). Ich habe außerdem die erste Zeile des Hintergrunds mit nummerierten Feldern und Pfeilen, die die Bewegungsrichtung verständlicher machen sollen, ausgestaltet.
## 29.09.2026
Ich habe versucht, dass die Figuren die Zufallsschritte gehen. Jedoch hat das bisher nicht funktioniert, da die Figuren beim Drücken der Leertaste trotzdem immer nur einen Schritt gehen. Ich habe mittlerweile herausgefunden, dass dies an der `self.figur_entfernt`-Variable liegt, welche in der meinspiel.py in Z. 45 dafür sorgt, dass die Bewegung nur ein einziges Mal ausgeführt wird und die darüberliegende for-Schleife quasi ignoriert wird.
### 23.09.2026
Die Figuren bewegen sich jetzt problemlos über das gesamte Spielfeld (wechseln jeweils am Zeilenende eine Zeile nach unten). Aktuell ist der Zufallsgenerator in der meinspiel.py nur halb fertig und muss noch fertiggestellt werden.
Das Spielfeld muss noch grafisch ausgestaltet werden (die `wood-table-texture-background-cropped.xcf`-Datei (GIMP-Projekt) wurde dafür schon erstellt).
### 22.09.2026
Ich habe weiter mit dem Entfernen und Platzeieren von Figuren in dem mehrdimensionalen Array experimentiert. Die Print-Befehle, die ich jetzt in der meinspiel.py hinzugefügt habe, helfen sehr beim Verständnis der Funktionsweise des Programms bzw. in welchem Feld genau welche Figur gefunden wird und was dann gemacht wird.
### 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
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.
### 09.09.2026
Ich habe die Spielidee final formuliert. Die Berechnung der passenden Hintergrundfelder funktioniert nun (im Ordner `Bilder/Hintergrundpixel` befinden sich jeweils passende Bildausschnitt für den Hintergrund mit Koordinaten). Die Standardpixelgröße ist jetzt nicht mehr 60, sondern 120, da ich nicht so kleine Pixel/Felder für mein Spiel brauche.
**TODO für die nächste Stunde:** restliche Hintergrundpixel erstellen und mit schlussendlichem Spielbrettdesign beschäftigen.
### 08.09.2026
Ich habe versucht, meinen gewünschten Hintergrund einzufügen, welcher sich nicht (so wie das Standardgras) immer wieder wiederholen soll. Dies hat nicht funktioniert, da jede Änderung an der __init__ Funktion zu Fehlern führt.
### 02.09.2026
Weitere Bilder hinzugefügt (für Hintergrund und Spielfeldgestaltung) und versucht, die Objekte und Text anzeigen zu lassen. Die Textanzeige funktioniert noch nicht (in Kommentaren erklärt).
### 01.09.2026
Würfel-Bilder heruntergeladen (`wuerfel-gesamt.png`) und Würfelbilder 1-4 zugeschnitten.
*Anleitung, um den Hintergrund zu entfernen: https://www.heise.de/tipps-tricks/GIMP-Hintergrund-transparent-machen-so-klappt-s-4304075.html*
---
## Bildquellen
[Grass Image by macrovector on Freepik](https://www.freepik.com/free-vector/seamless-green-grass-pattern_13187581.htm#query=grass%20texture&position=0&from_view=keyword&track=ais&uuid=c689b011-652b-4ad1-a90a-bf3c50762622)
[Rabbit Symbol by torskaya on Freepik](https://www.freepik.com/icon/rabbit_2687160#fromView=search&page=1&position=19&uuid=3c377ca9-cb56-4be7-aebe-0bcac1702034)
[holz-dunkel.jpg](https://cdnb.artstation.com/p/assets/images/images/004/682/457/large/simon-sanchez-madera-tilex1.jpg?1485480359)
[wuerfel-vorlage.png](https://www.pngwing.com/de/free-png-nptzl)
[spielfeld-verbindung-schnur.png](https://www.pngmart.com/image/492751/png/492750)
[wood-table-texture-background.jpg](https://png.pngtree.com/background/20250105/original/pngtree-vintage-wood-table-texture-background-picture-image_13410936.jpg)
[spielfiguren-original.jpg](https://media.istockphoto.com/id/1197681149/de/vektor/ludo-brett-spiel-person-m%C3%A4nnliche-steine-figur-spielen.jpg?s=612x612&w=0&k=20&c=D7t6cM2rkEtojbYSmej5AHPxZPPhsTDZpUcNgKAEvGc=)
[pfeil.png](https://toppng.com/uploads/preview/pfeil-11550709339vnxs3yqwrb.png)
[Schriftart: NunitoSans-VariableFont.ttf](https://fonts.google.com/specimen/Nunito+Sans)