Projekt: Hangman
Slides:
Ziele:
- Programmiere das bekannte Hangman-Game als Konsolenapp.
- Grösseres Programm schreiben (ca. $300$ Zeilen Code)
- Lerne, wie man anhand des Programmierparadigmas Model vs. View Code sinnvoll strukturiert.
- Scope von Variablen verstehen.
- Unterschied Werttypen vs. Referenztypen verstehen.
- Robusten Code schreiben, der für alle Eventualitäten gewappnet ist.
Auftrag:
- Erstelle ein neues GitHub-Repo „HangMan“ und teile es mit den Lehrpersonen. Wähle beim erstellen private und Visual Studio für das GitIgnore-File. Klone das Repo auf deinen Computer und …
- … erstelle darin ein neues C#-Konsolenprogramm mit Namen „HangMan“. Wichtig: Wähle beim Erstellen des Projekte „Erweitert: Keine Anweisungen der obersten Ebene verwenden“ (Engl.: etwas mit „Top-Level Statements“) aus.
- Verwende das Template (siehe unten) und …
- … Programmiere damit das Spiel Hangman. Schaue, dass alle Vorgaben unten erfüllt sind.
- Teste dein Spiel ausgiebig: Falsche Eingaben machen, Spiel gewinnen, verlieren, …
- Wenn du denkst dass du fertig bist: Gehe die Checkliste unten durch. Falls ein Punkt nicht erfüllt ist, verbessere diesen und hake diesen ab. Sobald alle Punkte erfüllt und abgehakt sind …
- … Arbeit abgeben:
- Nachricht an Lehrperson in Teams-Chat
- inkl. Link zu GitHub-Repo
- inkl. abgehakter und unterschriebener Checkliste
Zeit: Zwei EFIF-Nachmittage (6 Lektionen), Rest HA
Vorgaben:
- Template verwenden und an dieses halten.
- Code muss robust sein: Egal was Benutzer eingibt: Code muss damit klarkommen.
- Von Player1 eingegebenes Wort (das, welches Player2 erraten muss) muss folgende Bedingung erfüllen:
- Mind. 3 Buchstsaben
- Nur ASCII-Grossbuchstaben: 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
- also keine Umlaute (Ä,Ö,Ü) usw. (É,…), keine Leerschläge
- Bei unzulässiger Eingabe wird solange aufgefordert, neues einzugeben bis ok
- Nur GROSSBUCHSTABEN. Player1 & 2 können Kleinbuchstaben eingeben, werden dann aber in Grossbuchstaben umgewandelt.
- Erraten der Buchstaben (Player2):
- Wird bereits erratener Buchstabe erraten, zählt dies nicht als Fehlversuch. Player2 wird darauf hingewiesen und aufgefordert, andren Buchstaben einzugeben.
- Auch unzulässige Eingaben (Zahl, Umlaut, Sonderzeichen, …) zählen nicht als Fehlversuche.
Template
Checklist
Checklist Hangman
- Mein Code beinhaltet keine globalen Variablen. Ich habe also keine Variablen ausserhalb der Main-Methode deklariert (dort wo steht 'No variable declarations in this area!!').
- Model vs. View I: In meiner gesamten Main-Methode gibt es keinen einzigen Console-Befehl (
Console.WriteLine()
,Console.ReadLine()
,Console.ReadKey()
, ... diese gehören nur in die View-Funktionen). - Model vs. View II: Auch in der anderen Funktion, die zum Model gehört -
EvaluateTheSituation()
- gibt es keinen einzigen Console-Befehl. - In meinem Code gibt es keine unnötigen Abhängigkeiten: Alle Grössen, die mehrfach verwendet werden, werden genau 1x deklariert. Zum Beispiel wird das Array mit den erlaubten Buchstaben nur in
Main()
deklariert und dann den anderen Funktionen, falls benötigt, als Argument übergeben. - Funktionen sollen minimalen Zugriff auf Variablen haben: Funktionen sollen nur diejenigen Variablen übergeben werden, die sie auch tatsächlich benötigen. Zum Beispiel sollte der Funktion
ReadOneChar(...)
die Anzahl Fehlversuche oder verbleibende Leben nicht übergeben werden (falls man eine solche hat), da diese irrelevant für die Funktion ist. - Alle Variablen haben sinnvolle Variablennamen, unter denen man sich etwas vorstellen kann. Tipp: Kann eine Variable mit F2 einfach umbenennen.
Grafische Darstellung
Die Anzahl Versuche soll durch den hänging Man graphisch dargestellt werden. Achtung: Falls dir das zu makaber ist, kannst du auch eine fröhlichere Zeichnung anfertigen. Mögliche Alternativen:
- Schneemann
- Rackete
- Blume
HangMan:
- Definiere dazu eine Funktion, die die Anzahl Versuche entgegen nimmt und die zugehörige Grafik in die Konsole schreibt:
- 0 - nur Galgen
- 1 - Kopf
- 2 - Kopf, Oberkörper
- 3 - Kopf, Oberkörper, ein Bein
- 4 - Kopf, Oberkörper, beide Beine
- 5 - Kopf, Oberkörper, beide Beine, ein Arm
- 6 - HangMan
- Verbessere und fine-tune nun dein Spiel so, dass es gut funktioniert und hübsch aussieht.