Inhaltsverzeichnis

Projekt: Hangman

Slides:

Ziele:

Auftrag:

  1. 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 …
  2. … 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.
  3. Verwende das Template (siehe unten) und …
  4. … Programmiere damit das Spiel Hangman. Schaue, dass alle Vorgaben unten erfüllt sind.
  5. Teste dein Spiel ausgiebig: Falsche Eingaben machen, Spiel gewinnen, verlieren, …
  6. 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 …
  7. Arbeit abgeben:
    1. Nachricht an Lehrperson in Teams-Chat
    2. inkl. Link zu GitHub-Repo
    3. inkl. abgehakter und unterschriebener Checkliste

Zeit: Zwei EFIF-Nachmittage (6 Lektionen), Rest HA

Vorgaben:

Template

Template (ohne Top-Level Statements)

NODISP:

Template (mit Top-Level Statements)

Checklist

Checklist Hangman

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:

HangMan:

  1. Definiere dazu eine Funktion, die die Anzahl Versuche entgegen nimmt und die zugehörige Grafik in die Konsole schreibt:
    1. 0 - nur Galgen
    2. 1 - Kopf
    3. 2 - Kopf, Oberkörper
    4. 3 - Kopf, Oberkörper, ein Bein
    5. 4 - Kopf, Oberkörper, beide Beine
    6. 5 - Kopf, Oberkörper, beide Beine, ein Arm
    7. 6 - HangMan
  2. Verbessere und fine-tune nun dein Spiel so, dass es gut funktioniert und hübsch aussieht.

NODISP

ALTE VERSION