Klasse CSpieler

CSpieler - Der Leidtragende

Ist der Aufbau des Labyrinthes mit Hilfe der Klasse CMeister abgeschlossen, kann das Spiel beginnen: CSpieler übernimmt die Kontrolle.

Konstruktion / Destruktion

class CSpieler
{...
public:
CSpieler (string strName, CMeister * pMeister);
virtual ~CSpieler;
...};

Der Konstruktor initialisiert die dem Spieler eigenen Hilfsvariablen. Da CSpieler keine neuen Objekte erstellt, sind hier keine weiterten Prüfung auf angeforderten Speicherplatz notwendig.

Datenstrukturen

class CSpieler
{...
private:
CRaum * m_praumAkt;
CList<CGegenstand *> * m_plistGegenstand;
string * m_pstrName;
CMeister * m_pMeister;
...};

Diese Datenstrukturen repräsentieren den aktuellen Zustand des Spielers: Seine Position, sein Inventar, sein Name und die Verbindung zur aufrufenden CMeister-Klasse.

Private Hilfsfunktionen

class CSpieler
{...
private:
int TakeGegenstand (int iPos);
int DropGegenstand (int iPos);
int LeaveRaum (int iPos);
...};

Diese Funktionen stellen eine einfache Möglichkeit dar, Gegenstände aufzuheben oder abzulegen und in einen anderen Raum zu wechseln. Sie sind als Hilfsfunktionen pri&aumlmär als Arbeitserleichterung gedacht. Der Index iPos gibt jeweils die Position des zu bearbeitenden Objekts an. Es wird also beispielsweise mit pSpieler->LeaveRaum(5); in den fünften, angrenzenden Raum gewechselt.

Funktionen des Nachrichten Handlers

class CSpieler
{...
private:
// Listenausgaben
virtual int msgShowWege();
virtual int msgShowGegenstaende();
virtual int msgShowInventar();
// Kommandos
virtual int msgMove();
virtual int msgLook();
virtual int msgTakeGegenstand();
virtual int msgDropGegenstand();
...};

Wie in CMeister werden Benutzereingaben über eine Nachrichtenschleife verarbeitet, aus der virtuelle Menüfunktionen aufgerufen werden.

Listenausgaben:

Diese Hilfsfunktionen dienen wie in CMeister der Vereinfachung, und werden sowohl vom Benutzer als auch von den anderen Menüfunktionen aufgerufen.

Kommandos:

Sie stellen das eigentliche Spiel dar, in dem sie die Interaktion mit dem Labyrinth ermöglichen.

Öffentliche Zugriffsfunktionen

class CSpieler
{...
public:
virtual string GetName ();
virtual int Start (CRaum * pStart,
CList<CGegenstand *> * pListInventar);
...};

Die Startfunktion aktiviert die Menüschleife. Bevor sie jedoch in diese eintritt setzt sie die Spielerposition auf pStart und kopiert das übergebene Inventar plistInventar in die eigenen Membervariablen. Beendet der Benutzer das Spiel, so wird das aktualisierte Spielerinventar wieder über plistInventar an CMeister zurückgegeben. Dadurch ist es möglich, das Spiel kurzzeitig zu verlassen um einige Modifikationen am Labyrinth vorzunehmen und danach weiterzuspielen.
Die Funktion CSpieler::GetName() liefert den Namen des aktuellen Spielers zurück.