Benutzer-Werkzeuge

Webseiten-Werkzeuge


ws2021:kaesekaestchen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ws2021:kaesekaestchen [2021/04/13 15:10]
finn-w-g-18 [Dokumentation]
ws2021:kaesekaestchen [2021/04/13 15:35] (aktuell)
kyrill.ho [Ziele]
Zeile 6: Zeile 6:
 Ameli Siedersleben \\ Finn Gonnermann \\ Kyrill ​ Hoffmann\\ Laurin Dahm Ameli Siedersleben \\ Finn Gonnermann \\ Kyrill ​ Hoffmann\\ Laurin Dahm
  
-==== Projektbeschreibung ====+===== Projektbeschreibung ​=====
 Wir bauen ein Käsekästchenspiel! Und lassen einen Computer dieses Spiel lernen. ​ \\  Wir bauen ein Käsekästchenspiel! Und lassen einen Computer dieses Spiel lernen. ​ \\ 
 Käsekästchen wird normalerweise in langweiligen Unterrichtsstunden mit dem Banknachbar auf einem Blatt kariertem Papier gespielt. Dies wollen wir verändern in dem wir es digitalisieren und einem Computer mithilfe von Machine Learning beibringen. Käsekästchen wird normalerweise in langweiligen Unterrichtsstunden mit dem Banknachbar auf einem Blatt kariertem Papier gespielt. Dies wollen wir verändern in dem wir es digitalisieren und einem Computer mithilfe von Machine Learning beibringen.
Zeile 16: Zeile 16:
 __ ** Weitere Ziele ** __ __ ** Weitere Ziele ** __
 \\ \\
-Das Erlenen ​der Spielstrategie durch den Computer mithilfe von Machine Learning. So könnten im Idealfall Mensch und Computer gegeneinander Käsekästchen spielen.+Das Erlernen ​der Spielstrategie durch den Computer mithilfe von Machine Learning. So könnten im Idealfall Mensch und Computer gegeneinander Käsekästchen spielen.
  
  
Zeile 43: Zeile 43:
 Pygame wird initialisiert und es öffnet sich ein Fenster für die Grafikoberfläche. Das Eigentliche Spiel läuft dann im Game-Loop ab. Hier werden mit den Event-Funktionen von Pygame die Eingaben der Spieler Erfasst. Bei einem Mausklick wird überprüft ob sich an der Position Cursors eine Linie befindet. Wenn diese Linie bisher noch nicht gesetzt ist wird ihr Zustande geändert und es werden Funktionen des Game-Objekts aufgerufen. Pygame wird initialisiert und es öffnet sich ein Fenster für die Grafikoberfläche. Das Eigentliche Spiel läuft dann im Game-Loop ab. Hier werden mit den Event-Funktionen von Pygame die Eingaben der Spieler Erfasst. Bei einem Mausklick wird überprüft ob sich an der Position Cursors eine Linie befindet. Wenn diese Linie bisher noch nicht gesetzt ist wird ihr Zustande geändert und es werden Funktionen des Game-Objekts aufgerufen.
 Anschließend wird überprüft ob sich der Zustand es Spielfelds verändert hat, ggf. der Neue Punktestand angezeigt und es wir kontrolliert ob das Spiel abgeschlossen wurde, also keine Züge mehr möglich sind. Anschließend wird überprüft ob sich der Zustand es Spielfelds verändert hat, ggf. der Neue Punktestand angezeigt und es wir kontrolliert ob das Spiel abgeschlossen wurde, also keine Züge mehr möglich sind.
-Am Ende des Game-Loops wird mit den Pygame-Grafik-Funktionen das Spielfeld angezeigt.+Am Ende des Game-Loops wird mit den Pygame-Grafik-Funktionen das Spielfeld angezeigt.\\ 
 + 
 +{{:​ws2021:​kaesekaestchen.mp4?​500|So sieht das ganze dann aus.}}
  
 === Was sind Neuronale Netze? === === Was sind Neuronale Netze? ===
Zeile 73: Zeile 75:
 Multithreading ist ein Programmierkonzept das die quasi gleichzeitige Ausführung mehrerer Programmabschnitte ermöglicht. Einzelne Teilprozesse werden sogenannten Threads zugeordnet, die in einer kontrollierten Reihenfolge ausgeführt werden. So können mehrere Prozesse scheinbar parallel ablaufen, obwohl ein Kern der CPU zur gleichen Zeit nur einen einzelnen abarbeiten kann. Multithreading ist ein Programmierkonzept das die quasi gleichzeitige Ausführung mehrerer Programmabschnitte ermöglicht. Einzelne Teilprozesse werden sogenannten Threads zugeordnet, die in einer kontrollierten Reihenfolge ausgeführt werden. So können mehrere Prozesse scheinbar parallel ablaufen, obwohl ein Kern der CPU zur gleichen Zeit nur einen einzelnen abarbeiten kann.
 In Python kann diese Nebenläufigkeit mithilfe des „threading“-Moduls umgesetzt werden. In Python kann diese Nebenläufigkeit mithilfe des „threading“-Moduls umgesetzt werden.
 +
 +=== Der Computer als Gegner - Warum eine KI ? ===
 +
 +
 +Wir haben uns als Gruppe schnell für eine Künstliche Intelligenz als Lösungsansatz entschieden.
 +Unsere Gruppe hat sich vor allem durch ein gemeinsames Interesse an KI`s gebildet. ​
 +Als wir uns Auf das Projekt Käsekästchen geeinigt haben, hatten wir die Möglichkeit anstelle einer KI einen herkömmlichen Algorithmus zu schreiben.
 + Wir haben durch Recherche im Internet herausgefunden,​ dass sich das Spiel Mathematisch Lösen lässt. Demnach wäre ein Algorithmus,​ welcher das Spielfeld analysiert, die Gewinnchancen für jeden möglichen Zug errechnet und den besten ausführt, programmierbar. Sodass die Züge je nachdem ob der Algorithmus oder der Spieler beginnt, zu einem Sieg oder zumindest einem Unentschieden für den Computer führen würde.
 +Wir haben uns Allerdings dazu entschieden eine Künstliche Intelligenz zu programmieren,​ und den Mathematischen Algorithmus als Ausweichplan zu nehmen, da wir uns gerne mit dem Thema und der Programmierung einer KI auseinandersetzen wollten. Darüber hinaus erschien es uns eine größere Herausforderung eine KI zu Programmieren als einen „einfachen“ Algorithmus zu schreiben.
 +
  
  
 +=== Finale Datei ===
  
 +{{:​ws2021:​kaseki_finalfinal.zip|Hier}} findet ihr unsere Finale Datei, die eine KI erzeugen kann. Und in {{:​ws2021:​kase_load_ki_test.zip|dieser ZIP}} findet ihr ein Programm zum erneuten spielen gegen eine bereits abgespeicherte KI.
 ===== Protokoll ===== ===== Protokoll =====
-Das gesamte Protokoll findet ihr [[Protokoll| hier]].+Das gesamte Protokoll findet ihr [[Protokoll| hier]] ​8-).
  
  
ws2021/kaesekaestchen.1618319438.txt.gz · Zuletzt geändert: 2021/04/13 15:10 von finn-w-g-18