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.

284 10. Memory – e<strong>in</strong> kle<strong>in</strong>es Beispiel<br />

74 write ( ( v i s i b l e s i d e == FRONT SIDE) ?<br />

75 front symbol : back symbol ) ;<br />

76 }<br />

77<br />

78 /∗ Returns the f r o n t symbol of the card<br />

79 ∗ @return The f r o n t symbol<br />

80 ∗/<br />

81 virtual const char ∗ getFrontSymbol ( )<br />

82 {<br />

83 return ( front symbol ) ;<br />

84 }<br />

85<br />

86 /∗ Returns the back symbol of the card<br />

87 ∗ @return The back symbol<br />

88 ∗/<br />

89 virtual const char ∗ getBackSymbol ( )<br />

90 {<br />

91 return ( front symbol ) ;<br />

92 }<br />

93 } ;<br />

94<br />

95 #endif // memory game card v5 h<br />

10.2.15 MemoryGameboard<br />

Die Klasse MemoryGameboard ist für alles verantwortlich, was mit der Anzeige<br />

des Spielbretts und der darauf liegenden Karten zu tun hat. Aus diesem<br />

Grund ist sie auch die Drehscheibe für alles, was mit dem Auflegen und<br />

Umdrehen von Karten zu tun hat. Um der Spielsteuerung zu ermöglichen,<br />

herauszuf<strong>in</strong>den, wie viele Karten bereits umgedreht wurden, hat diese Klasse<br />

auch die entsprechenden Abfragemethoden zu implementieren. Diese Methoden<br />

dürfen vor allem nicht naiv implementiert werden, denn je nach Größe des<br />

Spielfelds kann e<strong>in</strong> oftmaliges Abfragen jeder e<strong>in</strong>zelnen Karte zu erheblichen<br />

Performanceproblemen führen.<br />

Das Memory Spielbrett ist nicht dafür verantwortlich, die Karten, die<br />

auf ihm liegen, zu generieren. Es ist nur dafür verantwortlich, Karten, die<br />

aufgelegt werden, auch entsprechend zu speichern.<br />

Auch bei der Darstellung des Spielfelds ist noch e<strong>in</strong>e Kle<strong>in</strong>igkeit zu beachten:<br />

Es ist nicht genug, e<strong>in</strong>fach nur die auf dem Feld liegenden Karten bei<br />

der verantwortlichen Instanz von SimpleOutputHandl<strong>in</strong>g anzumelden. Um<br />

s<strong>in</strong>nvoll spielen zu können, müssen auch die Reihen und Spalten des Spielfelds<br />

mit entsprechenden Köpfen versehen werden, die die Koord<strong>in</strong>aten anzeigen.<br />

Um nun ke<strong>in</strong>e Seiteneffekte und künstliche Abhängigkeiten <strong>in</strong> das Programm<br />

e<strong>in</strong>zubauen, ist der e<strong>in</strong>zig s<strong>in</strong>nvolle Weg, auch diese Köpfe über entsprechende<br />

darstellbare Objekte zu realisieren, die von Displayable abgeleitet s<strong>in</strong>d.<br />

Diese s<strong>in</strong>d im überblicksartigen Klassendiagramm noch nicht enthalten,<br />

werden aber nun als notwendige Hilfsklassen e<strong>in</strong>geführt (siehe Abschnitt<br />

10.2.16 und Abschnitt 10.2.17).<br />

E<strong>in</strong> kle<strong>in</strong>er Exkurs: Manche Leser werden es schon bemerkt haben, dass<br />

ich hier e<strong>in</strong>e Kle<strong>in</strong>igkeit demonstrieren möchte. Der Schritt, e<strong>in</strong>fach so e<strong>in</strong>e

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!