Klassendiagramm

Diagramm

Klassenbeschreibung

(Die Klassenbeschreibung ist nicht mehr ganz aktuell und Vollständig. Während der Implementierung wurden noch einige Änderungen vorgenommen, die allerdings nur im Diagramm aktualisiert wurden)

CAPachisiView

Die Haupt-View-Klasse unserer Model/View Architektur. CAPachisiView ist für die Darstellung des Spiels verantwortlich. Sie fängt die vom Benutzer ausgelösten Events ab und leitet diese Informationen an das Document weiter. Im einzelnen werden von der View folgende Ereignisse angestoßen:

  • Neues Spiel anlegen
  • Ein neues Spiel starten
  • Ein laufendes Spiel speichern
  • Ein zuvor gespeichertes Spiel laden.
  • Felder auf dem Spielbrett anklicken
  • Skip auslösen

Diese Events werden entweder über eine Menü- und/oder eine Toolbar ausgelöst. Die eigentliche Spielhandlung wird über Mouse-Handler realisiert

Memberfunktionen
  • void OnDraw() – Zeichnet die View
  • void OnLButtonDown() – Fängt Mouseklicks vom Benutzer ab und leitet die Coordinaten an die View weiter
  • void OnSpielstart() – Reagiert auf einen entsprechenden Button der Toolbar. Diese Methode öffnet einen neuen CSpielereingabeDialog. Dort können alle Spielparameter eingegeben werden. Anschließend werden im Dokument alle relevanten Daten gesetzt und ggf. neue Spielobjekte erzeugt.
  • void OnSkip() – Unterbricht den aktuellen Zug. Der Spieler kann vor oder nach dem Würfeln jederzeit auf seinen Zug verzichten. Wenn kein Grace gewürfelt wurde, ist der nächste Spieler an der Reihe.
Membervariablen
  • CFeldPosition* m_pFeldPosition

CFeldPosition

Die Klasse CFeldPosition löst in der View die Koordinaten eines Mausklicks in einer eindeutige ID auf.

Memberfunktionen:
  • uint HoleID(uint x, uint y) – Gibt die ID des Feldes zurück in dem die übergebenen Koordinaten liegen
  • CRect* HoleRechteck(uint ID) – Gibt ein CRect-Objekt zurück, das die übergebene ID hat.
Membervariablen:
  • sequence<CRect> – Speichert alle Felder im Spiel sortiert nach ihrer ID.

CTeam

Diese Klasse stellt den Bund zweier Spieler als Team dar. Sie enthält zwei CSpieler Objekte. Es ist z.B. bei einer Burg nötig die Teamzugehöritkeit zu kennen.

Memberfunktionen
  • CTeam(CSpielerErstellung* pSpieler1, CSpielerErstellung* pSpieler2) – Konstruktor der Klasse. Jeder Spieler wird über die Klasse CSpielerErstellung initialisiert.
  • BOOL IstImTeam( CSpieler* pSpieler) – Prüft ob der übergebene Spieler zum Team gehört
  • BOOL IstTeamFertig() – Prüft ob die Spieler des Teams mit dem Spiel fertig sind
  • CSpieler* HoleSpieler1() – Gibt einen Pointer auf den ersten Spieler zurück
  • CSpieler* HoleSpieler2() – Gibt einen Pointer auf den zweiten Spieler zurück
Membervariablen
  • CSpieler m_pSpieler[2] – Spieler des Teams

CSpielfigur

Repräsentiert eine Spielfigur eines Spielers. Sie kennt das Feld auf dem sie steht und auch ihren Spieler. Sie merkt sich ob sie schon einmal um das Spielbrett gegangen ist oder gerade erst ausgespielt wurde. CSpielfigur kümmert sich um die Ermittlung der Zielfelder.

Memberfunktionen
  • void GehHeim() – Setzt die Figur wieder auf das Startfeld, wenn sie geschlagen wurde
  • BOOL KannZiehen(int nAugenzahl) – Berechnet, ob die Spielfigur um Anzahl Augenzahl Felder weiter ziehen kann.
  • vector<CFeld*> HoleZielFelder(int nAugenzahl) – Gibt einen Vektor mit ein oder zwei Zielfeldern der Spielfigur zurück, die sie mit der übergebenen Augenzahl erreichen kann.
  • CSpieler* HoleBesitzer() – Liefert den Spieler zurück, zu dem die Spielfigur gehört.
  • CFeld* HoleAktuellesFeld() – Gibt das Feld zurück, auf dem die Spielfigur steht
  • void SetzeAktuellesFeld(CFeld* pAktuellesFeld) – Setzt das Feld, auf dem die Spielfigur steht.
  • BOOL HoleUmrundet() – Gibt TRUE zurück, wenn die Spielfigur das Feld bereits einmal umrundet hat, FALSE sonst.
  • void SetzeUmrundet(BOOL bUmrundet) – Setzt, dass die Spielfigur das Feld bereits einmal umrundet hat.
Membervariablen
  • CSpieler* m_pSpieler – Pointer auf den Besitzer der Spielfigur
  • CFeld* m_pAktFeld – Pointer auf das besetzte Feld
  • BOOL m_bUmrundet – Wird auf True gesetzt, wenn die Spielfigur aus der Zielgeraden heraus kommt

CSpieler

Stellt einen Menschlichen Spieler dar, zu ihm gehören vier Spielfiguren. Außerdem ein Start-, Ziel- und ZielBurgfeld. Er weiß zu welchem Team er gehört. Das ZielBurgfeld ist nötig, weil der Spieler auf diesem Feld zwei unterschiedliche Wege einschlagen kann, wenn er das Spielbrett bereits einmal umrundet hat.

Memberfunktionen
  • CSpieler::CSpieler(CSpielerErstellung* DesSpielersFelder) – spezieller Konstruktor, der die dem Spieler zugeordneten Felder und seine Farbe in Form eines CSpielerErstellung Objekts bekommt
  • BOOL IstFertig() – Prüft, ob der Spieler alle Spielfiguren im Zielfeld hat und somit mit dem Spiel fertig ist
  • CSpielfigur* HoleFigur( int nr ) – Gibt die Spielfigur mit der Nummer nr zurück
  • CFeld* HoleStartfeld() – Gibt einen Pointer auf das Startfeld zurück
  • CFeld* HoleZielfeld() – Gibt einen Pointer auf das Zielfeld zurück
  • CFeld* HoleZielburg() – Gibt einen Pointer auf die Zielburg zurück
  • CString HoleName() – Gibt den Namen des Spielers zurück
  • uint HoleFarbe – gibt die Farbe des Spielers zurück
  • CTeam* HoleTeam() – Gibt einen Pointer auf das Team des Spielers zurück
  • CSpieler* HoleNaechsterSpieler() – Gibt den Spieler zurück, der nach dem aktuellen Spieler am Zug ist
  • void SetzteSpielerNamen(CString sSpielernamen) – setzt den Spielernamen auf den übergebenen Wert
Membervariablen
  • CString m_sName – Name des Spielers
  • uint m_nFarbe – Farbe des Spielers
  • CSpieler* m_pNaechsterSpieler – Pointer auf den Spieler, der als nächstes am Zug ist
  • CTeam* m_pTeam – Team des Spielers
  • vector<CSpielfigur> m_pSpielfiguren – Spielfiguren des Spielers
  • CStartfeld* m_pStartfeld – Startfeld des Spielers
  • CZielfeld* m_pZielfeld – Zielfeld des Spielers
  • CZielburg* m_pZielburg – Burg am Eingang zur Zielgeraden des Spielers

CMuscheln

Sie stellen die 6 Kaurimuscheln dar, es kann gewürfelt werden und sie errechnet die zu gehende Augenzahl. Es ist auch möglich auf einen Grace Wurf zu prüfen.

Memberfunktionen
  • void Wuerfeln() – Würfelt die Muscheln neu
  • int HoleAugenzahl() – Gibt die entsprechende Augenzahl (Felder die man ziehen darf) zu den Muscheln zurück
  • int HoleMuschelAnzahl() – Gibt die Anzahl der nach Oben liegenden Muscheln zurück
  • BOOL IstGrace() – Gibt an ob die aktuelle Muschelzahl ein Grace darstellt
Membervariablen
  • BOOL m_bMuscheln[6] – repräsentiert die 6 einzelnen Muscheln
  • BOOL m_bGrace – Wird von Wuerfeln() auf True gesetzt wenn laut den Spielregeln ein Grace aufgetreten ist

CSpielbrett

Ist für den Aufbau des Spielbrettes zuständig und kennt alle Spielfelder. Es verbindet die Felder miteinandern (Verkettung) und ordnet sie den Spielern zu. Das Spielbretts löst auch die IDs zu den CFeld-Objekten und umgekehrt auf.

Memberfunktionen
  • BOOL IstMuschel(unit ID) – Ist True, wenn der übergebenen ID die Muscheln zugeordnet sind.
  • uint HoleFeldID(CFeld* AufzuloesendesFeld) – Gibt die dem übergebenen Feld zugeordnete ID zurück.
  • CFeld* HoleFeld(uint AufzuloesendesID) – Gibt das dem übergebenen ID zugeordnete Feld zurück.
  • CFeldstatus* HoleZuZeichnendeFelder() – durchsucht die Liste aller Felder und gibt belegte oder markierte in Form eines CFeldstatus Objektes zurück
Membervariablen
  • Container(ID, CFeld*) – Enthält die Zuordung von IDs zu Feldobjekten (welche Art von Container wird sich bei der Implementierung ergeben)

CFeld

CZustand

CFeldStatus

Adapterklasse um in der View die besonderen Felder zeichnen zu können. Besondere Felder sind markiert oder von einer oder mehreren Figuren besetzt.

Memberfunktionen:
  • CFeldstatus::CFeldStatus(uint nGelb,uint nSchwarz, uint nRot, uint nGruen, BOOL bMarkiert) – Konstruktor von CFeldStatus. Braucht für jede Farbe die Anzahl der Figuren, die dieses Feld besetzten und ein Flag, ob das Feld markiert ist.
  • BOOL IstMarkiert() – Gibt an ob das Feld besonders hervorgehoben werden soll
  • uint HoleFeldID() – Gibt einem die ID des Feldes zurück
  • uint HoleAnzahlGelb – Gibt die Anzahl der gelben Figuren auf dem Feld zurück
  • uint HoleAnzahlSchwarz – Gibt die Anzahl der schwarzen Figuren auf dem Feld zurück
  • uint HoleAnzahlRot – Gibt die Anzahl der roten Figuren auf dem Feld zurück
  • uint HoleAnzahlGruen – Gibt die Anzahl der grünen Figuren auf dem Feld zurück
  • void SetzteFeldID(uint nID) – Setzt die ID
Membervariablen:
  • uint m_nID – ID des besonderen Feldes.
  • uint m_nGelb – Anzahl der gelben Steine auf dem Feld
  • uint m_nSchwarz – Anzahl der schwarzen Steine auf dem Feld
  • uint m_nRot – Anzahl der roten Steine auf dem Feld
  • uint m_nGruen – Anzahl der gruenen Steine auf dem Feld
  • uint m_nGelb – Anzahl der gelben Steine auf dem Feld
  • uint m_nRot – Anzahl der roten Steine auf dem Feld
  • uint m_nGruen – Anzahl der gruenen Steine auf dem Feld
  • BOOL m_bMarkiert – speichert, ob dieses Feld besonders hervorgehoben werden soll

CSpielereingabeDialog

Diese, von CDialog abgeleitete Klasse ermöglicht die Eingabe aller relevanten Spielparameter. Von CAPachisiView angestoßen, öffnet sich ein Fenster, in das die Spieler ihre Namen eintragen und ihre Farben auswählen können. Mit der Wahl der Farbe ergibt sich auch die Teamzugehörigkeit. Spieler1 (gelb) und Spieler2 (schwarz) bilden Team 1, Spieler3 (rot) und Spieler4 (grün) sind in Team 2. Neben einem “Abbrechen”-Button, der die aktuellen Eingaben verwirft, ist zunächst ein Button “Würfeln” aktiv. Wird dieser Button angeklickt, wird die Startreihenfolge der Spieler automatisch ermittelt. Der Spieler mit der höchsten Augenzahl wird markiert. Abschließend wird der “Würfeln”-Button durch einen “Ok”-Button ersetzt.

Memberfunktionen
  • CString HoleSpieler1() – Gibt den Namen des ersten Spielers zurück.
  • CString HoleSpieler2() – Liefert den Namen des zweiten Spielers.
  • CString HoleSpieler3() – Gibt den Namen des dritten Spielers zurück.
  • CString HoleSpieler4() – Liefert den Namen des vierten Spielers.
  • uint HoleBeginner() – Gibt die Nummer des Spielers zurück, der das Spiel beginnt.
Membervariablen
  • uint m_nBeginner – Name des Spielers, der die Spielrunde eröffnen darf.
  • CString m_sNameSpieler1 – Name des ersten Spielers
  • CString m_sNameSpieler2 – Name des zweiten Spielers
  • CString m_sNameSpieler3 – Name des dritten Spielers
  • CString m_sNameSpieler4 – Name des vierten Spielers

CAPachisiDoc

Die Haupt Dokumenten Klasse unserer Model/View Architektur. Sie ist hauptsächlich für die Kommunikation mit der View zuständig und stellt Methoden zur Abfrage des aktuellen Spielgeschehens zur Verfügung.

Memberfunktionen
  • BOOL DarfWuerfeln() – Gibt an ob die Muscheln zur Zeit benutzt werden können und gibt die Möglichkeit diese dann anders zu Zeichnen. Dazu wird DarfWuerfeln() vom aktuellen Zustand aufgerufen.
  • BOOL IstGewonnen() – Zeigt an, ob das Spiel von einer Partei gewonnen wurde d.h. alle Figuren eines Teams sind in ihrem entsprechenden Zielfeld angekommen
  • BOOL IstSpielstartAktiv() – Gibt an, ob ein neues Spiel begonnen werden kann, also neue Spieler erstellt werden können
  • CString* HoleSpielernamen() – Gibt ein Array von vier CStrings zurück, die die Namen der Spieler in der Reihenfolge gelb, schwarz, rot, grün enhält.
  • void ErstelleSpieler(CString sGelb, CString sSchwarz, CString sRot, CString sGruen) – Erstellt vier Spieler mit den übergebenen Namen und startet ein neues Spiel. Dies ist nur möglich, wenn IstSpielstartAktiv() wahr ist.
  • uint HoleAktuellenSpieler() – Gibt den Aktuellen Spieler zurück, der gerade an der Reihe ist (0 - Gelb, 1 - Schwarz, 2 - Rot, 3 - Rot, 4 -Grün).
  • vector<CFeldStatus*> HoleZuZeichnendeFelder() – Gibt einen Vektor von Kommunikationsklassen zurück die Felder nennt, welche besonders angezeigt oder auf denen Spielfiguren gezeichnet werden sollen.
  • int HoleMuschelAnzahl() – Teilt einem die Anzahl der nach oben zeigenden Muscheln mit um diese eventuell grafisch darzustellen.
  • int HoleAugenzahl() – Holt die aktuell gewürfelte Augenzahl der Muscheln, das heißt die Anzahl der Felder die ein Spieler gehen darf.
  • BOOL IstGrace() – Gibt zurück ob der Spieler zur Zeit ein Grace hat, also entweder am Anfang des Zuges eine Figur in das Spiel bringen darf oder am Ende noch einen Zug hat.
  • void FeldGeklickt(uint nID) – Teilt der Spiellogik mit, daß auf das Feld mit der ID nID geklickt wurde.
  • void SkipAusgeloest() – Sagt dem Dokument, daß der Spieler ein Skip ausgeloest hat bzw. auf einen entsprechenden Button gedrückt hat.
  • uint holeTeamGewonnen(void) – Gibt die Nummer des Teams zurück, das gewonnen hat
  • CString* holeNachricht(void) – Gibt eine Statusmeldung zurück (z.B. “Würfeln nicht möglich”)

Membervariablen
  • CZustand* m_pAktuellerZustand – Pointer auf den aktuellen Zustand.
  • CSpielInfo m_cSpielInfo – Objekt mit gekapselten Informationen über den aktuellen Stand des Spiels. Zustände haben auch Zugriff auf dieses Objekt.
  • CSpielbrett m_cSpielbrett – Das CSpielbrett Objekt, welches für die Auflösung der Feld IDs zu den Feldern zuständig ist.
  • vector<CZustand*> m_pZustaende – Vector von allen vorhandenen Zuständen

CSpielInfo

Klasse zur Informationsspeicherung und Entlastung des Dokuments. Sie spielt eine zentrale Rolle und bietet Informationen zum aktuellen Spielstatus.

Memberfunktionen:
  • CSpielinfo(CSpielerErstellung* pSpielerGelb, CSpielerErstellung* pSpielerSchwarz, CSpielerErstellung* pSpielerRot, CSpielerErstellung* pSpielerGruen, uint nBeginner) – Konstruktor der Klasse. Die wichtigen Parameter der Spieler werden durch die Klasse CSpielerErstellung repräsentiert.
  • CMuscheln* HoleMuscheln() – Gibt einen Pointer auf die Muscheln zurück um damit zu würfeln oder die aktuelle Augenzahl abzufragen.
  • void SetzeAusgewaehltesQuellfeld(CFeld* pAusgewaehltesQuellfeld) – Setzt das aktuell als Quellfeld ausgewählte Feld
  • CFeld* HoleAusgewaehltesQuellfeld() – Gibt das aktuell als Quellfeld ausgewählte Feld zurück
  • CSpieler* HoleAktuellenSpieler() – Gibt den Spieler der gerade an der Reihe ist zurück
  • void WechsleZuNaechstemSpieler() – Wechselt den aktuellen Spieler zum nächsten in der Reihe
  • BOOL IstFigurGeschlagen() – Gibt zurück ob der Spieler in seiner Runde eine Figur geschlagen hat und somit nocheinmal würfeln darf
  • CTeam* HoleTeam1() – Gibt einen Pointer auf das erste Team (Gelb/Schwarz) zurück
  • CTeam* HoleTeam2() – Gibt einen Pointer auf das zweite Team (Rot/Grün) zurück
  • void SetzeNachricht(CString sNachricht) – Setzt eine Nachricht die dem Spieler angezeigt werden soll
  • CString HoleNachricht() – Gibt die letzte Nachricht zurück die dem Spieler angezeigt werden soll
Membervariablen:
  • BOOL bFigurGeschlagen – Gibt an ob der Spieler in seiner Runde eine Figur geschlagen hat und somit nocheinmal würfeln darf
  • CString m_sNachricht – Die Nachricht, die dem Spieler angezeigt werden soll, sie wird vor beginn einer Aktion (klick) zurückgesetzt
  • CMuscheln m_cMuscheln – Die Muscheln unseres Spiels, mit ihnen wird gewürfelt und die letzte Augenzahl wird darin gespeichert
  • CFeld* m_pAusgewaehltesQuellfeld – Das ausgewählte Quellfeld, von dem Figuren gezogen werden sollen
  • CTeam* m_pTeam1 – Pointer auf das erste Team
  • CTeam* m_pTeam2 – Pointer auf das zweite Team
  • CSpieler* m_pAktuellerSpieler – Ein Pointer auf den Spieler der gerade an der Reihe ist

CSpielerErstellung

Diese Klasse beinhaltet alle wichtigen Informationen, um einen Spieler zu erstellen. Sie hat fünf öffentliche Attribute.

Membervariablen
  • CString sName – Name des Spielers
  • uint nFarbe – Farbe seiner Spielfiguren
  • CStartfeld* pStartfeld – Zeiger auf das Startfeld dieses Spielers
  • CZielfeld* pZielfeld – Zeiger auf das Zielfeld des Spielers
  • CZielBurg* pZielburg – Zeigt auf die Brug des Spielers

 
Logged in as: dedeibel
  wiki/klassendiagramm.txt · Last modified: 2005/09/01 19:28 by 217.188.232.181 (dedeibel)
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Debian