{{ :ef_informatik:connect4-css.jpg?nolink&300}} # Web App Game Ziel dieses Blocks ist, die Grundlagen der Web-App-Programmierung zu kennen. Dazu programmieren wir Schritt für Schritt ein einfaches Spiel (//Vier gewinnt//), das im Browser (inklusive Mobiltelefon) gegeneinander gespielt werden kann. ## Weshalb eine Web-App? Das Verteilen und Verkaufen von Programmen war über Jahrzehnte aufwändig, fehleranfällig und teuer. Eine Web-App hingegen kann jede:r im hintersten Winkel der Erde programmieren und auf einem Server für 4 Milliarden Internetnutzer ((https://de.statista.com/themen/42/internet/)) bereitstellen. Eine Web-App ist sehr niederschwellig, da die Benutzer nichts installieren müssen. Eine gute Web-App läuft auf allen Plattformen und Betriebssystemen (Desktop, iOS, Android...). Eine Web-App erlaubt es, neue Funktionen zuerst mit einer kleinen Anzahl von Benutzern auszuprobieren, was das iterative Verbessern einer Anwendung ermöglicht. ## Quartalsplan Wir gehen Schritt für Schritt vor: - //UI//: User Interface mit HTML und CSS entwerfen (1 Woche). - //Server-less Game//: Logik mit Javascript in Browser implementieren (2 Wochen). - //Server-based Game mit Flask//: - HTML mit Templates vereinfachen (1 Woche). - Server-Schnittstelle mit JSON entwerfen (1 Woche). - Gameplay auf den Server verschieben (1 Woche). - Deployment # Web-Basics: HTML & CSS HTML und CSS sind die Sprachen des Web. Mit ihnen werden (fast) alle Webseiten auf eine Weise beschrieben, dass jeder Browser weiss, wie sie angezeigt werden sollen. Viele werden beidem schon begegnet sein - wem sie noch etwas fremd sind, findet hier eine gute [[https://informatik.mygymer.ch/ef2021/007.html-css/01.html-grundlagen.html|Einführung]]. Als Referenz-Werk für alle Elemente und Attribute empfehle ich [[https://wiki.selfhtml.org/|SelfHtml]]. ## Aufgabe 1a {{ :ef_informatik:connect4-basic.jpg?300}} * Erstelle ein [[https://github.com/|github]] Repository für das Projekt. * Erstelle eine neue Datei, z.B. ''connect_four.html'' mit dem HTML Inhalt für das Spiel Vier-Gewinnt. * Hinweise: * Ich empfehle, für den Raster zwei Ebenen von ''
'' Elementen zu verwenden und auf ein '''' zu verzichten. * Da die einzelnen Felder gedrückt werden können, bietet sich ein ''