b2aat6n
b2aat6n
b2aat6n
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
K<br />
lar, können wir machen. Wie<br />
wäre es beispielsweise mit dem<br />
Spiel 4 gewinnt? Bei dieser Aufgabe<br />
geht es vor allem um eine<br />
geeignete Architektur und die Implementierung<br />
der Logik und nicht so sehr um eine<br />
schicke Benutzeroberfläche.<br />
4 gewinnt wird mit einem aufrecht stehenden<br />
Spielfeld von sieben Spalten gespielt. In<br />
jede Spalte können von oben maximal sechs<br />
Spielsteine geworfen werden. Ein Spielstein<br />
fällt nach unten, bis er entweder auf den Boden<br />
trifft, wenn es der erste Stein in der Spalte<br />
ist, oder auf den schon in der Spalte liegenden<br />
Steinen zu liegen kommt. Die beiden<br />
Spieler legen ihre gelben beziehungsweise<br />
roten Spielsteine abwechselnd in das<br />
Spielfeld. Gewonnen hat der Spieler, der zuerst<br />
vier Steine direkt übereinander, nebeneinander<br />
oder diagonal im Spielfeld platzieren<br />
konnte.<br />
Implementieren Sie ein Spiel …<br />
Ein Spiel, das zwei Spieler gegeneinander<br />
spielen. Die Implementierung soll die Spielregeln<br />
überwachen. So soll angezeigt werden,<br />
welcher Spieler am Zug ist (Rot oder Gelb).<br />
Ferner soll angezeigt werden, ob ein Spieler<br />
gewonnen hat. Diese Auswertung erfolgt<br />
nach jedem Zug, sodass nach jedem Zug angezeigt<br />
wird, entweder welcher Spieler an<br />
der Reihe ist oder wer gewonnen hat. Hat ein<br />
Spieler gewonnen, ist das Spiel zu Ende und<br />
kann neu gestartet werden.<br />
Damit es unter den Spielern keinen Streit<br />
gibt, werden die Steine, die zum Gewinn führten,<br />
ermittelt. Bei einer grafischen Benutzeroberfläche<br />
könnten die vier Steine dazu farblich<br />
markiert oder eingerahmt werden. Bei<br />
einer Konsolenoberfläche können die Koordinaten<br />
der Steine ausgegeben werden.<br />
Die Bedienung der Anwendung erfolgt so,<br />
dass der Spieler, der am Zug ist, die Spalte angibt,<br />
in die er einen Stein werfen will. Dazu<br />
sind die Spalten von eins bis sieben nummeriert.<br />
Bei einer grafischen Benutzeroberfläche<br />
können die Spalten je durch einen Button<br />
gewählt werden. Wird das Spiel als Konsolenanwendung<br />
implementiert, genügt die<br />
Eingabe der jeweiligen Spaltennummer per<br />
Tastatur.<br />
AUFGABE<br />
„Stefan, vielleicht sollten wir erst einmal mit etwas Einfacherem<br />
anfangen. Vielleicht wäre ein kleines Spiel zum Warmwerden genau<br />
das Richtige. Fällt dir dazu eine Aufgabe ein?“<br />
Die Abbildungen 1 und 2 zeigen, wie eine<br />
Oberfläche aussehen könnte. Ist die Spalte,<br />
in die der Spieler seinen Stein legen möchte,<br />
bereits ganz mit Steinen gefüllt, erfolgt eine<br />
Fehlermeldung, und der Spieler muss erneut<br />
einen Spielstein platzieren.<br />
Programmieraufgabe<br />
Die Programmieraufgabe lautet, ein Spiel<br />
4 gewinnt zu implementieren. Dabei liegt der<br />
Schwerpunkt auf dem Entwurf einer angemessenen<br />
Architektur, der Implementierung<br />
der Spiellogik und zugehörigen automatisierten<br />
Tests.<br />
Die Benutzerschnittstelle des Spiels steht<br />
eher im Hintergrund. Ob animierte WPF-<br />
Oberfläche, WinForms, ASP.NET oder Konsolenanwendung,<br />
das ist nicht wichtig. Im Vordergrund<br />
soll eine Lösung stehen, die leicht<br />
in eine beliebige Oberflächentechnologie integriert<br />
werden kann. Evolvierbarkeit und<br />
Korrektheit sollen hier also stärker bewertet<br />
werden als eine superschicke Oberfläche.<br />
Im nächsten Heft zeigen wir eine exemplarische<br />
Musterlösung.„Die“ Lösung kann es in<br />
einem solchen Fall bekanntlich eh nicht geben.<br />
Damit möchte ich Sie, lieber Leser, noch<br />
mal ermutigen, sich der Aufgabe anzunehmen.<br />
Investieren Sie etwas Zeit, und erarbeiten<br />
Sie eine eigene Lösung. Die können Sie<br />
dann später mit der hier vorgestellten vergleichen.<br />
Viel Spaß!<br />
[Abb. 1 und 2]<br />
Eine mögliche<br />
Oberfläche<br />
(links) und die<br />
Anzeige der<br />
siegreichen vier<br />
Steine (rechts).<br />
Aber auf die<br />
Oberfläche<br />
kommt es bei<br />
dieser Übung<br />
nicht an.<br />
Wer übt, gewinnt<br />
In jeder dotnetpro finden Sie<br />
eine Übungsaufgabe von<br />
Stefan Lieser, die in maximal<br />
drei Stunden zu lösen sein<br />
sollte. Wer die Zeit investiert,<br />
gewinnt in jedem Fall – wenn<br />
auch keine materiellen Dinge,<br />
so doch Erfahrung und Wissen.<br />
Es gilt:<br />
❚ Falsche Lösungen gibt es<br />
nicht. Es gibt möglicherweise<br />
elegantere, kürzere<br />
oder schnellere Lösungen,<br />
aber keine falschen.<br />
❚ Wichtig ist, dass Sie reflektieren,<br />
was Sie gemacht<br />
haben. Das können Sie,<br />
indem Sie Ihre Lösung mit<br />
der vergleichen, die Sie eine<br />
Ausgabe später in der dotnetpro<br />
finden.<br />
Übung macht den Meister.<br />
Also − los geht’s. Aber Sie<br />
wollten doch nicht etwa<br />
sofort Visual Studio starten …<br />
www.dotnetpro.de dotnetpro.dojos.2011 5