00001 // 00002 // File: Game.h 00003 // Created by: <Detro /> aka Ivan De Marino 00004 // <detro@mandolinux.org, demarino@studenti.unina.it, demarino@na.astro.it> 00005 // Created on: Sun Oct 24 18:47:49 2004 00006 // 00007 00008 #ifndef _GAME_H_ 00009 #define _GAME_H_ 00010 00011 #include <cc++/thread.h> 00012 #include "Player.h" 00013 00014 #ifdef CCXX_NAMESPACES 00015 using namespace std; 00016 using namespace ost; 00017 #endif 00018 00019 /** 00020 * @interface Game Game.h 00021 * Game per MGS. 00022 * Questa <b>Classe Astratta</b> e' un'<b>Interfaccia</b> che 00023 * bisogna <i>implementare</i> per creare un nuovo Game su MGS.<br> 00024 * E' sufficientemente astratta da poter implementare non solo 00025 * Giochi (come vederemo con la classe <code>ChatRoom</code>), ma 00026 * ogni tipo di Attivita' che si basi sul semplice scambio 00027 * di messaggi alfanumerici (es. Scacchi, Dama, Giochi di Carte,...). <br> 00028 * E' un @c Thread, quindi un flusso di controllo a se stante. */ 00029 class Game : public Thread { 00030 public: 00031 /** Inizializzazione del @c Game */ 00032 virtual void init(void) = 0; 00033 /** Attivazione del @c Game */ 00034 virtual void run(void) = 0; 00035 /** Gestione della Chiusura del @c Game */ 00036 virtual void final(void) = 0; 00037 00038 /** 00039 * Aggiungi un <code>Player</code> al <code>Game</code>. 00040 * 00041 * @param Player* Puntatore al Player da aggiungere al Gioco */ 00042 virtual void addPlayer (Player *) = 0; 00043 00044 /** 00045 * Rimuovi un <code>Player</code> dal <code>Game</code>. 00046 * @param string& Stringa contenente il Nick/Nome del Player da Rimuovere 00047 * @return @c true se il Player viene trovato e rimosso, 00048 * @c false altrimenti */ 00049 virtual bool delPlayer (const string &) = 0; 00050 00051 /** 00052 * Ritorna il numero di Player presenti 00053 * @return Ritorna il numero di Player presenti nel Game */ 00054 virtual int getNumPlayers (void) const = 0; 00055 00056 /** 00057 * Stampa la lista di Player presenti 00058 * @param iostream* Input-Output-Stream su cui dirigere l'output */ 00059 virtual void printPlayersList(iostream *) = 0; 00060 00061 /** 00062 * Ritorna il nome del Game 00063 * @return Ritorna il Nome del Game */ 00064 virtual string getName(void) const = 0; 00065 }; 00066 00067 #endif //_GAME_H_