30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

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.

172 9. Klassen <strong>in</strong> <strong>C++</strong><br />

ses Beispiel soll <strong>in</strong> der Folge das allseits bekannte Spiel Memory se<strong>in</strong>. Für<br />

Leser, die dieses Spiel nicht kennen, ist es e<strong>in</strong>fach erklärt:<br />

• Es gibt e<strong>in</strong> rechteckiges Gesamtspielfeld mit c Spalten und r Reihen, womit<br />

sich e<strong>in</strong>e schachbrettartige Aufteilung <strong>in</strong> c ∗ r E<strong>in</strong>zelfelder ergibt.<br />

• Auf jedem E<strong>in</strong>zelfeld liegt e<strong>in</strong>e Karte, die auf ihrer Vorderseite e<strong>in</strong> gewisses<br />

Symbol zeigt. Die Rückseiten aller Karten s<strong>in</strong>d gleich und machen e<strong>in</strong>e<br />

Unterscheidung der Karten unmöglich, wenn sie mit der Rückseite nach<br />

oben zu liegen kommen.<br />

• Die Symbole aller Karten zusammen, die auf dem Gesamtspielfeld zu liegen<br />

kommen, s<strong>in</strong>d so aufgeteilt, dass es jeweils genau zwei Karten mit<br />

demselben Symbol gibt.<br />

• Die Verteilung der Karten auf das Gesamtspielfeld ist zufällig, es können<br />

also die jeweils zwei zusammengehörigen Symbolkarten auf beliebigsten<br />

E<strong>in</strong>zelfeldern zu liegen kommen.<br />

• E<strong>in</strong> Spiel besteht nun aus folgenden Schritten:<br />

1. Genau so viele Karten wie es E<strong>in</strong>zelfelder gibt, werden zufällig mit der<br />

Rückseite nach oben auf das Gesamtspielfeld verteilt.<br />

2. Danach werden alle Karten am Gesamtspielfeld für e<strong>in</strong>en kurzen Zeitraum<br />

umgedreht, sodass die Symbole auf ihren Vorderseiten zu sehen<br />

s<strong>in</strong>d. Die Spieler<strong>in</strong> bzw. der Spieler hat <strong>in</strong> diesem kurzen Zeitraum<br />

Gelegenheit, sich die Symbole auf den e<strong>in</strong>zelnen Feldern e<strong>in</strong>zuprägen.<br />

3. Nach dieser kurzen E<strong>in</strong>prägephase werden alle Karten erneut umgedreht,<br />

sodass sie wieder ihre nicht unterscheidbaren Rückseiten zeigen.<br />

4. Die Spieler<strong>in</strong> bzw. der Spieler muss nun immer paarweise Karten aufdecken<br />

(=umdrehen), die das gleiche Symbol zeigen sollten.<br />

5. Zeigt e<strong>in</strong> aufgedecktes Paar auf beiden Karten das gleiche Symbol, so<br />

bleibt es aufgedeckt liegen.<br />

6. Zeigt e<strong>in</strong> aufgedecktes Paar zwei verschiedene Symbole, so werden beide<br />

Karten wieder umgedreht.<br />

• Ziel ist es, <strong>in</strong> so wenigen Schritten wie möglich, alle zusammengehörigen<br />

Paare gefunden zu haben und damit alle Karten umgedreht zu haben.<br />

Ich möchte nun an dieser Stelle ke<strong>in</strong>e ausführliche und e<strong>in</strong>gehende Analyse der<br />

gesamten Problemstellung machen, da dies hier eher stören als nützen würde.<br />

Jedoch sei darauf h<strong>in</strong>gewiesen, dass diese Analyse sehr wohl gemacht wurde<br />

und auch bei der Entwicklung gemacht werden muss, um auf e<strong>in</strong> vernünftiges<br />

Ergebnis zu kommen. Diese Gesamtanalyse folgt zur Wiederholung des<br />

Gelernten <strong>in</strong> Kapitel 10. Im Augenblick werden e<strong>in</strong>fach die e<strong>in</strong>zelnen Teile<br />

häppchenweise vorgestellt, die sich aus der Analyse ergeben haben. Ich<br />

möchte auch alle Leser bitten, die <strong>in</strong> der Folge vorgestellten Häppchen als<br />

noch nicht perfekt im S<strong>in</strong>ne von C ++ h<strong>in</strong>zunehmen. Der Grund dafür ist der,<br />

dass wirklich alle C ++ Mechanismen bekannt se<strong>in</strong> müssen, um alles so sauber<br />

wie möglich zu schreiben.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!