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:// | ||
| ++++ | ++++ | ||
| </ | </ | ||