Ziel dieser Anleitung ist die Entwicklung eines kleinen Konzentrationsspiels,
bei dem eine Tonfolge generiert wird, welche es
sich zu merken gilt. Ein Benutzer kann dann diese Tonfolge,
welche auch visualisiert dargestellt wird, über Buttons eingeben.
Gibt er die richtige Folge ein, erscheint eine Erfolgsmeldung, bei
einem Fehler erscheint eine entsprechende Meldung. Der
Schwierigkeitsgrad ist frei wählbar und resultiert in unterschiedlicher
Länge der Tonfolgen.
Nachdem Sie die Microsoft Visual C# Express Edition installiert
haben, starten Sie das Programm über den erstellten Startmenüeintrag.
Wählen Sie als Tastaturlayout (oder wie immer das
genau heißt) C# Entwickler.
Schritt 1: Am Anfang war das Fenster…
Legen Sie ein neues Projekt über „File->New Project->Windows
Application“ an und geben Sie als „Solution Name“ „Meine erste
Projektmappe“ sowie als „Name“ „Konzentrationsspiel“ ein.

Auf der rechten Seite sehen Sie Ihre Projektmappe, welche das
Projekt „Ratespiel“ enthält und ein Eigenschaftenfenster, welches
die Eigenschaften des aktuell ausgewählten Objektes anzeigt.
Auf der linken Seite sehen Sie die Toolbox, welche alle nötigen
Steuerelemente enthält, die Sie in Ihr Ratespiel einbinden können.
In der Mitte des Bildschirms ist Ihre Form, also das Hauptfenster
Ihrer Anwendung, dargestellt.
Schritt 2: Der Arbeiter
Ziehen Sie nun einen Button aus der Toolbox auf Ihre Form. Wenn
Sie den Button markiert haben (der Button hat den Fokus), sehen
Sie dessen Eigenschaften unten rechts im Eigenschaftenfenster.
Ändern Sie die Eigenschaft „Text“, welche mit „button1“ vorbelegt
ist, indem Sie den Text „button1“ löschen; in diesem Fall soll kein
Text auf dem Button angezeigt werden. Ändern Sie zudem die
BackColor-Eigenschaft auf eine Farbe Ihrer Wahl. Den in diesem
Absatz beschriebenen Vorgang wiederholen Sie nun noch 3 Mal,
so dass Sie ingesamt 4 Buttons mit unterschiedlichen Farben (nicht
schwarz) sehen.
Ziehen Sie nun zwei weitere Buttons auf die Form. Ändern Sie den
Text auf „Neue Tonfolge“ bzw. „Spiele Tonfolge“ und passen Sie die
Größe der Buttons an, so dass der gesamte Text sichtbar wird.
Nachfolgend ziehen Sie eine Textbox neben den Button mit der
Aufschrift „Neue Tonfolge“ und tragen Sie als Text die Zahl „5“ ein.
Doppelklicken Sie nun auf den Button „Neue Tonfolge“ und fügen
Sie den folgenden Quelltext ein:

Klicken Sie auf die Abbildung um den Code zu erhalten!
Die oben stehenden Zeilen lesen den Inhalt der Textbox aus und
verwandeln diesen, wenn möglich, in eine Zahl. Anschließend
wird eine Reihe von Zufallszahlen generiert, die dann in eine Liste
gespeichert werden. Die hier benutzte Liste (buttonOrder) muss
noch erzeugt werden, was wir in einem nächsten Schritt tun.
Wenn Sie nun im Quelltext nach oben scrollen, sehen Sie den
Konstruktor Ihrer Form (public Form1()). Fügen Sie oberhalb
dieser Zeile den folgenden Quelltext ein:

Klicken Sie auf die Abbildung um den Code zu erhalten!
Mit obigen Zeilen haben Sie die benötigte Liste (buttonOrder),
eine weitere Liste (userOrder), den benötigten Zufallsgenerator
(randomizer) und 3 so genannte „Dictionaries“ erzeugt, deren
Verwendung später von Bedeutung sein wird.
Schauen Sie sich nun den Konstruktor an. Dieser enthält die
Zeile InitializeComponent();
Fügen Sie direkt unter dieser Zeile den folgenden Quelltext ein: 
Klicken Sie auf die Abbildung um den Code zu erhalten! 
Klicken Sie auf die Abbildung um den Code zu erhalten!
In den eingefügten Zeilen werden die Listen, der Zufallsgenerator
und die Dictionaries initialisiert.
Wechseln Sie nun wieder in die Designansicht, so dass Sie Ihre
Form sehen. Doppelklicken Sie auf den Button „Spiele Tonfolge“
und fügen Sie den folgenden Quelltext ein:
![for (int i = 0; i < buttonOrder.Count; i++)
{
buttonNumberButtonDict[buttonOrder[i]].Text = "Beep";
this.Refresh();
Console.Beep(buttonFrequencyDict[buttonNumberButtonDict[buttonOrder[i]]
], 500); buttonNumberButtonDict[buttonOrder[i]].Text = "";
this.Refresh();
}
userOrder.Clear();](/germany/msdn/aktionen/wirbauenwas/images/zweitesspiel/schritt02_04_code.jpg)
Klicken Sie auf die Abbildung um den Code zu erhalten!
Obiger Quelltext spielt die Tonfolge, welche generiert wurde,
wenn auf „Neue Tonfolge“ geklickt wurde und zeigt zudem das
Wort „Beep“ auf dem Button, welcher dem jeweiligen Ton
zugeordnet ist.
Abschließend doppelklicken Sie in der Designansicht auf jeden
der farblichen Buttons und fügen Sie jeweils die nachfolgenden
Zeilen ein:
![Console.Beep(buttonFrequencyDict[(Button)sender], 500);
validate(sender);](/germany/msdn/aktionen/wirbauenwas/images/zweitesspiel/schritt02_06_code.jpg)
Klicken Sie auf die Abbildung um den Code zu erhalten!
Die Methode validate() ist noch nicht implementiert, also holen wir
dies nach. Suchen Sie sich eine Stelle im Quelltext, an der Sie die
Methode einfügen möchten. Ihr Quelltext endet mit drei schließenden
geschweiften Klammern. Sie können die Methode zwischen
der ersten und zweiten geschweiften Klammer einfügen:
![private void validate(object sender)
{
userOrder.Add(buttonButtonNumberDict[(Button)sender]);
if (userOrder.Count == buttonOrder.Count)
{
bool correct = true;
for (int i = 0; i < userOrder.Count; i++)
{
if (userOrder[i] != buttonOrder[i])
{
correct = false;
break;
}
}
if(correct)
MessageBox.Show("Herzlichen Glückwunsch!");
else
MessageBox.Show("Leider verloren!");
userOrder.Clear();
}
}](/germany/msdn/aktionen/wirbauenwas/images/zweitesspiel/schritt02_07_code.jpg)
Klicken Sie auf die Abbildung um den Code zu erhalten!
Speichern Sie nun Ihr Projekt und starten Sie es. Das Ergebnis sieht
nun folgendermaßen aus:

Sie können das Spiel nun um verschiedene
Features erweitern. Sie können z.B. eine
automatische Erhöhung des Schwierigkeitsgrades
implementieren oder die Abspielzeit
der Töne für den Benutzer einstellbar
machen. Viel Spaß beim Programmieren!
|