Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Nächste Überarbeitung | Vorherige Überarbeitung | ||
ksk_ef:web:apps:client [2024-08-11 07:41] – angelegt hof | ksk_ef:web:apps:client [2024-08-11 08:14] (aktuell) – hof | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | # Client-Side TicTacToe | + | ## Client-Side TicTacToe |
[[wpde> | [[wpde> | ||
- | {{: | + | {{: |
- | ## Auftrag Struktur & Formatierung | + | ### Auftrag |
Erstelle HTML & CSS, um ein TicTacToe-Spiel darzustellen: | Erstelle HTML & CSS, um ein TicTacToe-Spiel darzustellen: | ||
Zeile 14: | Zeile 14: | ||
* Eine andere Möglichkeit wäre, die Matrix zu verschachteln mit einem Container, der drei Zeilen-Elemente mit je drei Feldern enthält. | * Eine andere Möglichkeit wäre, die Matrix zu verschachteln mit einem Container, der drei Zeilen-Elemente mit je drei Feldern enthält. | ||
* Formatiere anschliessend mit CSS! | * Formatiere anschliessend mit CSS! | ||
- | * Layout des Spielfelds auf 3x3 Felder. | + | |
- | * Ansprechende Formatierung (Hintergrundfarbe, | + | |
- | * Kannst du sogar die Spiel-Logik programmieren? | + | * Horizontale Zentrierung des Spielfelds ([[https:// |
+ | | ||
+ | * Nice-to have: | ||
+ | * Responsive (Spielfeld passt sich der Grösse des Browserfensters an) | ||
+ | * Mobile funktioniert gut ([[https:// | ||
* Halt, nicht einfach im Internet abschreiben! | * Halt, nicht einfach im Internet abschreiben! | ||
- | * Hinweise benötigt? | ||
- | * [[ef_informatik: | ||
- | * [[https:// | ||
+ | ### Auftrag B: Spiel-Logik | ||
+ | |||
+ | Das Ziel dieses Auftrags ist, dass zu zweit im Browser TicTacToe gespielt werden kann. Dazu nutzen wir [[..:js]]. | ||
+ | |||
+ | Jeder `button` benötigt einen Click-Handler, | ||
+ | |||
+ | Der Click-Handler: | ||
+ | * überprüft, | ||
+ | * setzt das Feld auf `X` oder `O` | ||
+ | * einerseits muss der Inhalt des Buttons gesetzt werden, damit der Wert im HTML angezeigt wird. | ||
+ | * andererseits setzen wir ein Attribut `data-state`, | ||
+ | * ... überprüft ob das Spiel zu Ende ist | ||
+ | * entweder, weil ein Spieler gewonnen hat, | ||
+ | * oder weil keine freien Felder übrig sind | ||
+ | * ... schaltet die Farbe des Spielers um. | ||
+ | |||
+ | Um die Darstellung des Spiels zu ändern, setzen wir den Text des Buttons. Um die Spiellogik zu betreiben, speichern wir den Zustand zudem in einem Attribut `data-state`: | ||
+ | <code javascript tictactoe.js> | ||
+ | let color = ' | ||
+ | button.innerText = color; | ||
+ | button.setAttribute(' | ||
+ | </ | ||
+ | |||
+ | In [[..: | ||
+ | |||
+ | <code css tictactoe.css> | ||
+ | button[data-state=" | ||
+ | background-color: | ||
+ | } | ||
+ | button[data-state=" | ||
+ | background-color: | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Für Benachrichtigungen (z.B. über das Ende des Spiels) kann man die Funktion `alert(message)` nützen, die ein Browser-Popup anzeigt. Schöner ist es, einen Bereich im HTML zu definieren, der Meldungen anzeigt. | ||
+ | |||
+ | <nodisp 2> | ||
+ | ++++Hinweise| | ||
+ | * [[ef_informatik: | ||
+ | * [[https:// | ||
+ | ++++ | ||
+ | </ |