Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
projektewise24:projekt8:doku [2025/03/31 23:53] clara_paul [Code und Rohdaten] |
projektewise24:projekt8:doku [2025/04/01 09:55] (aktuell) jf155 |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Projektdokumentation ====== | + | ====== 4-Gewinnt-Roboter ====== |
Zeile 24: | Zeile 24: | ||
<figure Gesamtsystem2> | <figure Gesamtsystem2> | ||
- | {{:projektewise24:projekt8:komponentengesamtsystem2.jpg?500 |}} | + | {{:projektewise24:projekt8:komponentengesamtsystemm2.jpg?500 |}} |
<caption>Überblick über die Komponenten</caption> | <caption>Überblick über die Komponenten</caption> | ||
</figure> | </figure> | ||
+ | |||
+ | <figure Gesamtsystem3> | ||
+ | {{:projektewise24:projekt8:komponentengesamtsystem3.jpg?500 |}} | ||
+ | <caption>Überblick über die Komponenten</caption> | ||
+ | </figure> | ||
+ | |||
+ | ===== Schaltplan ===== | ||
<figure Schaltplan> | <figure Schaltplan> | ||
Zeile 166: | Zeile 173: | ||
=== Spiellogik === | === Spiellogik === | ||
+ | |||
+ | |||
+ | Wenn man ein 4-gewinnt Spiel programmiert ist die erste Aufgabe ein Gerüst für das Spiel zu schaffen mit mit Spielmechaniken. Unter Spielmechaniken verstehen wir die Initialisierung des Spielfelds, der Spielzug und die Überprüfung ob gewonnen wurde. Wie man sehen kann auf den den Fotos (drunter), sind diese Codes meist simpler und mit for-Schleifen. Diese For-Schleifen ermöglichen uns die Überprüfung vertikal sowie diagonal sehr simple aufzubauen. Ein großer Vorteil der für uns dadurch entsteht ist, dass wir kein Zeilen Angabe brauchen sondern nur die Spalte in die gespielt wird. Das entsteht dadurch, dass die for-Schleife von Zeile eins in unserer gewünschten Spalte hochklettern bis das Feld leer ist und dann den Spielstein digital setzt. Dieser Ablauf passiert in unserer Funktion "Zug" (erste bild von links). | ||
+ | |||
+ | {{:projektewise24:projekt8:bildschirmfoto_2025-03-31_um_23.14.32.png?200|}}{{:projektewise24:projekt8:bildschirmfoto_2025-03-31_um_23.13.43.png?200|}}{{:projektewise24:projekt8:bildschirmfoto_2025-03-31_um_23.18.17.png?200|}} | ||
+ | |||
+ | Nun zur Spiellogik, die Spiellogik des Vier-Gewinnt-Roboters bildet sein Herzstück. Sie bestimmt, wie der Roboter das Spielfeld analysiert, Züge berechnet und strategisch auf den Gegner reagiert. Die Grundlage dieser Logik ist ein Algorithmus, der das aktuelle Spielfeld auswertet und mögliche Spielzüge im Vorraum bewertet. Dabei wird sichergestellt, dass der Roboter stets über eine optimale Strategie verfügt und dennoch eine moderate Schwierigkeitsstufe bietet, um dem Spieler eine faire Herausforderung zu bieten.\\ | ||
+ | |||
+ | Zunächst erkennt unser KI gesteuerter Roboter die aktuelle Spielsituation, indem er alle freien und belegten (seiner + Spielers) Felder analysiert. Das passiert durch die Erstellung eines digitalem Spielfeldes, wie eben schon benannt in Bezug auf die Spielmechaniken.\\ | ||
+ | |||
+ | Anschließend werden verschiedene Zugmöglichkeiten simuliert in einem MiniMax-Algorithmus. Dieser Algorithmus arbeitet nach einem einfachen Prinzip, die KI versucht, ihren eigenen besten Zug zu maximieren, während die KI gleichzeitig annimmt, dass der Gegner ebenfalls optimal spielt und dessen beste Option minimiert. Durch diese Vorgehensweise kann die Spiellogik, nicht nur offensive, sondern auch defensive Spielzüge erkennen und entsprechende Entscheidungen treffen.\\ | ||
+ | Hier der Code des MiniMax-Algorithmus:\\ | ||
+ | |||
+ | {{:projektewise24:projekt8:bildschirmfoto_2025-03-31_um_22.42.06.png?200|}}\\ | ||
+ | |||
+ | Bezüglich des Ablaufes des Codes, kommen wir eher langsam voran. Der Lebenszyklus wurde erst vor kurzem angefangen und hat somit eher wenig vor zu zeigen, ist dennoch mit in unseren Codes (unten) enthalten.\\ | ||
===== Technische Daten===== | ===== Technische Daten===== | ||
Zeile 219: | Zeile 242: | ||
Ein weiteres geplantes Feature war die Implementierung einer KI, die das Spielfeld auswertet und Spielzüge auf einer moderaten Schwierigkeitsstufe trifft. Aus zeitlichen Gründen konnten wir das bis jetzt noch nicht umsetzen. Unsere Idee wäre die Nutzung eines Minimax-Algorithmus, um den Roboter zu einem anspruchsvolleren Gegner zu machen. | Ein weiteres geplantes Feature war die Implementierung einer KI, die das Spielfeld auswertet und Spielzüge auf einer moderaten Schwierigkeitsstufe trifft. Aus zeitlichen Gründen konnten wir das bis jetzt noch nicht umsetzen. Unsere Idee wäre die Nutzung eines Minimax-Algorithmus, um den Roboter zu einem anspruchsvolleren Gegner zu machen. | ||
==== Code und Rohdaten ==== | ==== Code und Rohdaten ==== | ||
- | |||
- | Wenn man ein 4-gewinnt Spiel programmiert ist die erste Aufgabe ein Gerüst für das Spiel zu schaffen mit mit Spielmechaniken. Unter Spielmechaniken verstehen wir die Initialisierung des Spielfelds, der Spielzug und die Überprüfung ob gewonnen wurde. Wie man sehen kann auf den den Fotos (drunter), sind diese Codes meist simpler und mit for-Schleifen. Diese For-Schleifen ermöglichen uns die Überprüfung vertikal sowie diagonal sehr simple aufzubauen. Ein großer Vorteil der für uns dadurch entsteht ist, dass wir kein Zeilen Angabe brauchen sondern nur die Spalte in die gespielt wird. Das entsteht dadurch, dass die for-Schleife von Zeile eins in unserer gewünschten Spalte hochklettern bis das Feld leer ist und dann den Spielstein digital setzt. Dieser Ablauf passiert in unserer Funktion "Zug" (erste bild von links). | ||
- | |||
- | {{:projektewise24:projekt8:bildschirmfoto_2025-03-31_um_23.14.32.png?200|}}{{:projektewise24:projekt8:bildschirmfoto_2025-03-31_um_23.13.43.png?200|}}{{:projektewise24:projekt8:bildschirmfoto_2025-03-31_um_23.18.17.png?200|}} | ||
- | |||
- | Nun zur Spiellogik, die Spiellogik des Vier-Gewinnt-Roboters bildet sein Herzstück. Sie bestimmt, wie der Roboter das Spielfeld analysiert, Züge berechnet und strategisch auf den Gegner reagiert. Die Grundlage dieser Logik ist ein Algorithmus, der das aktuelle Spielfeld auswertet und mögliche Spielzüge im Vorraum bewertet. Dabei wird sichergestellt, dass der Roboter stets über eine optimale Strategie verfügt und dennoch eine moderate Schwierigkeitsstufe bietet, um dem Spieler eine faire Herausforderung zu bieten.\\ | ||
- | |||
- | Zunächst erkennt unser KI gesteuerter Roboter die aktuelle Spielsituation, indem er alle freien und belegten (seiner + Spielers) Felder analysiert. Das passiert durch die Erstellung eines digitalem Spielfeldes, wie eben schon benannt in Bezug auf die Spielmechaniken.\\ | ||
- | |||
- | Anschließend werden verschiedene Zugmöglichkeiten simuliert in einem MiniMax-Algorithmus. Dieser Algorithmus arbeitet nach einem einfachen Prinzip, die KI versucht, ihren eigenen besten Zug zu maximieren, während die KI gleichzeitig annimmt, dass der Gegner ebenfalls optimal spielt und dessen beste Option minimiert. Durch diese Vorgehensweise kann die Spiellogik, nicht nur offensive, sondern auch defensive Spielzüge erkennen und entsprechende Entscheidungen treffen.\\ | ||
- | Hier der Code des MiniMax-Algorithmus:\\ | ||
- | |||
- | {{:projektewise24:projekt8:bildschirmfoto_2025-03-31_um_22.42.06.png?200|}}\\ | ||
- | |||
- | Bezüglich des Ablaufes des Codes, kommen wir eher langsam voran. Der Lebenszyklus wurde erst vor kurzem angefangen und hat somit eher wenig vor zu zeigen, ist dennoch mit in unseren Codes (unten) enthalten.\\ | ||
Diese zip-Datei enthält den aktuellen Stand des Codes mit Ausnahme der Sound+Stepper Codes, diese befinden sich in der zweiten Zip Datei. | Diese zip-Datei enthält den aktuellen Stand des Codes mit Ausnahme der Sound+Stepper Codes, diese befinden sich in der zweiten Zip Datei. | ||
- | {{:projektewise24:projekt8:code_4gewinnt_robotik.zip|}} | + | {{:projektewise24:projekt8:code_4gewinnt_robotik.zip|}}{{:projektewise24:projekt8:zweitezip_stepper_sound_4gewinnt_robotik.zip|}} |
[[https://github.com/PClara101/4Gewinn-t-er]] | [[https://github.com/PClara101/4Gewinn-t-er]] |