Tictactoe: Unterschied zwischen den Versionen
(→e -) |
|||
(22 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
+ | __NOTOC__ | ||
Tic Tac Toe ist ein klasse Spiel, das sich eignet, verschiedene spieltheoretische Ansätze für Spieleprogrammierung bis hin zur KI zu entwickeln: | Tic Tac Toe ist ein klasse Spiel, das sich eignet, verschiedene spieltheoretische Ansätze für Spieleprogrammierung bis hin zur KI zu entwickeln: | ||
− | # Man kann Gedanken eines Einsteigers einfach codieren: <i>Wenn die Situation so und so ist, dann mach das und das ...</i> . Sozusagen <b>ein Baumdiagramm in eine Programmiersprache | + | # Man kann Gedanken eines Einsteigers einfach codieren: <i>Wenn die Situation so und so ist, dann mach das und das ...</i> . Sozusagen <b>ein Baumdiagramm in eine Programmiersprache übersetzen</b>. Machbar und auch gar nicht doof, weil mann einfache Dinge am Ende sehr gut hinkriegt. Aber wenn man von Anfang an <b>optimal</b> sein will, ist das schon a bisserl uferlos. Aber man kann sich ja als Bot wie ein menschlicher Einsteiger verhalten: <b>Erst mal probieren (also random-Strategie), dann, wenn's absehbar wird hart, programmiert handeln</b> und sich an das Schema des Programmierers halten.. |
# Durch <b>Abstraktion</b> kann man ähnliche Situationen zusammenfassen: "Wenn er <i>am Eck</i> anfängt, dann reagiere immer so und so". Dadurch werden auch die uferlosen Anfangssituationen bewältigbar. | # Durch <b>Abstraktion</b> kann man ähnliche Situationen zusammenfassen: "Wenn er <i>am Eck</i> anfängt, dann reagiere immer so und so". Dadurch werden auch die uferlosen Anfangssituationen bewältigbar. | ||
# Durch <b>Rekursion</b> kann man "vom Ende her denken" und immer das tun was zu "<i>einer Gewinnstellung</i>" führt. Gewinnstellungen sind wiederum die Stellungen, die dem Gegner nur "Verluststellungen" hinterlassen. Zu Ende gedacht, gibt es nur Gewinn- und Verluststellungen. Also ..., <b>einfach nur zu Ende denken!</b> (brute force) | # Durch <b>Rekursion</b> kann man "vom Ende her denken" und immer das tun was zu "<i>einer Gewinnstellung</i>" führt. Gewinnstellungen sind wiederum die Stellungen, die dem Gegner nur "Verluststellungen" hinterlassen. Zu Ende gedacht, gibt es nur Gewinn- und Verluststellungen. Also ..., <b>einfach nur zu Ende denken!</b> (brute force) | ||
Zeile 12: | Zeile 13: | ||
=Schritt 1: Nötige html und JavaScript-Kenntnisse= | =Schritt 1: Nötige html und JavaScript-Kenntnisse= | ||
+ | [[Datei: ttt1.png | thumb | left | 500px | Ein Testbett für ein Tic Tac Toe Spiel]] | ||
=== a - Ein einfaches Design in html erstellen === | === a - Ein einfaches Design in html erstellen === | ||
− | [http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe1.html http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe1.html] | + | >>> online Testen: [http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe1.html http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe1.html]<br> |
+ | >>> Erläuterungen zu: [[Tictactoe: a - Ein einfaches Design in html erstellen]] | ||
+ | |||
=== b - Webseiten-Elemente mit JavaScript manipulieren=== | === b - Webseiten-Elemente mit JavaScript manipulieren=== | ||
− | [http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe2.html http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe2.html] | + | |
+ | >>> online Testen: [http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe2.html http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe2.html]<br> | ||
+ | >>> Erläuterungen zu: [[Tictactoe: b - Webseiten-Elemente mit JavaScript manipulieren]] | ||
+ | |||
=== c - Erste Abstraktion: Mit parametrisierten Funktionen arbeiten=== | === c - Erste Abstraktion: Mit parametrisierten Funktionen arbeiten=== | ||
− | [http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe3.html http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe3.html] | + | >>> online Testen: [http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe3.html http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe3.html]<br> |
− | === d - Ein Spielsituationen-Designer - | + | >>> Erläuterungen zu: [[Tictactoe: c - Erste Abstraktion: Mit parametrisierten Funktionen arbeiten]] |
− | [http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe4.html http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe4.html] | + | |
+ | === d - Ein Spielsituationen-Designer - Erster Schritt zu einem Testbett=== | ||
+ | >>> online Testen: [http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe4.html http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe4.html]<br> | ||
+ | >>> Erläuterungen zu: [[Tictactoe: d - Ein Spielsituationen-Designer - Erster Schritt zu einem Testbett]] | ||
=== e - Spielsituationen im Speicher durch Arrays repäsentieren - Das fertige Testbett=== | === e - Spielsituationen im Speicher durch Arrays repäsentieren - Das fertige Testbett=== | ||
− | [http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe5.html http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe5.html] | + | >>> online Testen: [http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe5.html http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe5.html]<br> |
+ | >>> Erläuterungen zu: [[Tictactoe: e - Spielsituationen im Speicher durch Arrays repäsentieren - Das fertige Testbett]] |
Aktuelle Version vom 11. November 2023, 13:23 Uhr
Tic Tac Toe ist ein klasse Spiel, das sich eignet, verschiedene spieltheoretische Ansätze für Spieleprogrammierung bis hin zur KI zu entwickeln:
- Man kann Gedanken eines Einsteigers einfach codieren: Wenn die Situation so und so ist, dann mach das und das ... . Sozusagen ein Baumdiagramm in eine Programmiersprache übersetzen. Machbar und auch gar nicht doof, weil mann einfache Dinge am Ende sehr gut hinkriegt. Aber wenn man von Anfang an optimal sein will, ist das schon a bisserl uferlos. Aber man kann sich ja als Bot wie ein menschlicher Einsteiger verhalten: Erst mal probieren (also random-Strategie), dann, wenn's absehbar wird hart, programmiert handeln und sich an das Schema des Programmierers halten..
- Durch Abstraktion kann man ähnliche Situationen zusammenfassen: "Wenn er am Eck anfängt, dann reagiere immer so und so". Dadurch werden auch die uferlosen Anfangssituationen bewältigbar.
- Durch Rekursion kann man "vom Ende her denken" und immer das tun was zu "einer Gewinnstellung" führt. Gewinnstellungen sind wiederum die Stellungen, die dem Gegner nur "Verluststellungen" hinterlassen. Zu Ende gedacht, gibt es nur Gewinn- und Verluststellungen. Also ..., einfach nur zu Ende denken! (brute force)
- Rekursion arbeitet den kompletten Entscheidungsbaum top-down ab, das verursacht manchmal Speicherüberläufe. Sogenannte iterative Algorithmen arbeiten den Baum left-right ab. Dauert vielleicht, muss aber keine offenen Probleme auf "einem Stack" bereithalten.
- Ist das alles durch Speicher- oder Rechenleistung bewältigbar, könnte man sich das alles auch "merken", "vorbereiten" und in einer "Erfahrungsdatenbank" vorhalten und zur Spielzeit abfragen.
- Schließlich könnte ein Algorithmus auch durch Erfahrung lernen und "Erfahrung" aufheben. Ein Algorithmus, der macht, was sich in der Vergangenheit bewährt hat oder unterlässt, was schlecht war, ... das geht schon in Richtung KI. Er lernt. Wie "wirklich intelligent" er ist, hängt natürlich davon ab, wie gut er ähnliche Situationen erkennt! Sonst ist es nur ein "on-the-fly"-Erstellen der obigen Datenbanken.
Also los! Das Spiel soll eine Webseite werden, also gilt es html und JavaScript zu lernen:
Schritt 1: Nötige html und JavaScript-Kenntnisse
a - Ein einfaches Design in html erstellen
>>> online Testen: http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe1.html
>>> Erläuterungen zu: Tictactoe: a - Ein einfaches Design in html erstellen
b - Webseiten-Elemente mit JavaScript manipulieren
>>> online Testen: http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe2.html
>>> Erläuterungen zu: Tictactoe: b - Webseiten-Elemente mit JavaScript manipulieren
c - Erste Abstraktion: Mit parametrisierten Funktionen arbeiten
>>> online Testen: http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe3.html
>>> Erläuterungen zu: Tictactoe: c - Erste Abstraktion: Mit parametrisierten Funktionen arbeiten
d - Ein Spielsituationen-Designer - Erster Schritt zu einem Testbett
>>> online Testen: http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe4.html
>>> Erläuterungen zu: Tictactoe: d - Ein Spielsituationen-Designer - Erster Schritt zu einem Testbett
e - Spielsituationen im Speicher durch Arrays repäsentieren - Das fertige Testbett
>>> online Testen: http://www.lepirate-rosenheim.de/privat/tictactoe/tictactoe5.html
>>> Erläuterungen zu: Tictactoe: e - Spielsituationen im Speicher durch Arrays repäsentieren - Das fertige Testbett