Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
ksk_ef:web:apps:client [2024-08-11 07:44] – hof | ksk_ef:web:apps:client [2024-08-11 08:14] (aktuell) – hof | ||
---|---|---|---|
Zeile 3: | Zeile 3: | ||
[[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, | + | |
+ | * 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! | ||
+ | |||
+ | ### 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> | <nodisp 2> | ||
++++Hinweise| | ++++Hinweise| | ||
- | * [[ef_informatik: | + | * [[ef_informatik: |
* [[https:// | * [[https:// | ||
++++ | ++++ | ||
</ | </ |