15.02.2013 Aufrufe

b2aat6n

b2aat6n

b2aat6n

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!