In dieser Übung erstellen wir ein erstes, einfaches Konsolenspiel mit C# (C-Sharp). Das Spiel wird textuell gesteuert d.h Ein/-Ausgaben werden auf einer Konsole zu lesen/schreiben sein.
Der Geist versteckt sich zufällig hinter einer von 3 Türen. Du entscheidest, welche Türe du öffnen
möchtest. Tippe dazu 1, 2 oder 3 und drücke die ENTER-Taste.
Unser Programm soll nun prüfen, ob der Geist sich hinter der Tür befindet und eine
entsprechende Meldung ausgeben; also entweder ‘Geist gefunden’ und damit das Spiel verloren
oder ‘Kein Geist’ und der Spieler darf zur nächsten Station mit wieder 3 Türen und einem zufällig
versteckten Geist weitergehen. Das Programm soll also auch mitzählen, wie oft der Spieler durch
eine Tür geht, ohne dabei auf den Geist zu stoßen.
Ein möglicher Spielablauf könnte dann im Konsolen-Fenster so aussehen:
Geisterspiel
Hinter einer Tür verbirgt sich ein Geist.
Welche Tür wählst du? 1, 2 oder 3?
1
Kein Geist gefunden!
Hinter einer Tür verbirgt sich ein Geist.
Welche Tür wählst du? 1, 2 oder 3?
1
Game over! Hier ist ein Geist!
Deine Punkte: 1
Zunächst öffnen wir Visual Studio IDE (Download auf https://visualstudio.microsoft.com) ODER verwenden die Inoffizielle Online Version welche für Konsolenanwendungen wunderbar funktioniert. (https://dotnetfiddle.net)
AUS/-EINGABE IN DER KONSOLE
Text ausgeben können wir in C# mit der Funktion Console.WriteLine(...);
Text einlesen (den Spieler auffordern etwas einzugeben) mit der Funktion Console.ReadLine();
Eingabe in einer String-Variable speichern String eingabe = Console.ReadLine();
String bedeutet das die Variable mit dem Namen “eingabe” eine beliebige Zeichenkette enthalten kann.
Da es in C# klare Definitionen gibt welche Variable welchen Wert annehmen kann müssen wir einen Wert konvertieren um ihn zu ändern. Als Beispiel liefer Console.Readline();
einen String
zurück (die Eingabe vom Spieler) aber wir wollen die Zahl welche eingegeben wurde in einen int
umwandeln das geht wie folgt:
Convert.ToInt32(Console.ReadLine());
Weitere Variablen und Rechenoperationen
Weiters benötigen wir den Datentyp “Integer” in C# kurz mit int
erkennbar. Solch eine Variable anlegen können wir einfach mit int zahl = 2122;
Wollen wir rechnen können wir eine neue Variable erstellen oder eine bereits vorhandene überschreiben.
Neu: int addition = zahl1 + zahl2;
“zahl1” überschreiben: zahl1 = zahl1 + zahl2;
Das gleiche gilt für Multiplizieren, Subtrahieren und Dividieren mit * - oder /
ZUFALLSZAHLEN
Um eine Zufallszahl zwischen 1 und 3 erzeugen zu können, muss man zunächst die Random-Klasse erstellen.
Random zufall = new Random();
Danach kann man mit
zufall.Next(1,4);
Eine Zufallszahl zwischen 1 und 3 generieren. (4 da die Zahl ausgeschlossen ist und wir bis 3 Werte erhalten möchten)
WAHRHEITSWERTE (BOOLEAN)
In variablen könne wir aber auch true oder false speichern mit bool variablenName = false;
BEDINGUNGEN
Um eine Bedingung zu prüfen gibt es den Befehl if, gefolgt von der Bedingung, die geprüft werden soll.
Ein Beispiel für eine if Anweisung:
int tuer = 0;
if(tuer == 1)
{
Console.WriteLine("gefunden");
}
else
{
Console.WriteLine("leider nicht gefunden");
}
SCHLEIFEN
Um Dinge zu beschreiben die sich immer auf die gleiche Art wiederholen sollen, solange eine
Bedingung erfüllt ist, gibt es sogenannte Schleifen, z.B die while-Schleife. Sie beginnt mit dem
Befehl while gefolgt - wie bei der if-Anweisung - mit einer Bedingung und angefangen wird ebenfalls wieder mit einer geschwungenen Klammer.
Beispiel:
int punkte = 0;
while(punkte < 5)
{
Console.WriteLine("gehe weiter");
punkte = punkte + 1;
}
using System;
public class Program
{
public static void Main()
{
Console.WriteLine("Geisterspiel");
int punkte = 0;
bool gameover = false;
Random random = new Random();
while (gameover == false)
{
Console.WriteLine("Hinter einer Tür verbirgt sich ein Geist.\nWelche Tür wählst du? 1, 2 oder 3?");
int tuer = Convert.ToInt32(Console.ReadLine());
int geisterTuer = random.Next(1, 4);
if (tuer == geisterTuer)
{
Console.WriteLine("Game over! Hier ist ein Geist!");
Console.WriteLine("Deine Punkte: {0}", punkte);
gameover = true;
}
else
{
Console.WriteLine("Kein Geist gefunden!");
punkte = punkte + 1;
}
}
}
}