Pagina Principale | Lista dei namespace | Strutture dati | Lista dei file | Campi dei dati | Elementi globali

giocatore.cpp

Vai alla documentazione di questo file.
00001 /* Tennis Tournament Management System 2005 by Silvio Moioli
00002    and Davide Gottini (moio@tiscali.it, davide.gottini@virgilio.it). */
00003 #include "giocatore.h"
00004 #include "partita.h"
00005 #include "file.h"
00006 #include "liste.h"
00007 
00008 /* Per i commenti sulle funzioni pubbliche e i loro i parametri (che sono 
00009   stati eliminati per  evitare inutili duplicazioni e spreco di spazio)
00010   si rimanda all'header  della libreria. */
00011 
00012 Giocatore* giocDettagliGiocatore(const char* nomeFile, int id){
00013             Giocatore* risultato = new Giocatore;
00014     risultato->id = id;
00015     risultato->nome = fileLeggiCampo(nomeFile, 0, id);
00016     return risultato;
00017 }
00018 
00019 int giocStatoGiocatore(const char* nomeFile, int id){
00020     int partite = parContaPartite(nomeFile);
00021     int questoTurno = parTurnoCorrente(nomeFile);
00022         //Questo è il risultato di questa funzione.
00023     int stato = LIBERO;
00024 
00025     for (int i = 0; i < partite; i++){
00026         Partita* questa = parDettagliPartita(nomeFile, partite - i - 1);
00027         
00028         if (questoTurno == questa->turno){
00029             /*Stiamo leggendo una partita di questo turno. Dobbiamo solo
00030             controllare se il giocatore ha giocato o meno */
00031             if (id == questa->idG1 || id == questa->idG2){
00032                 stato = GIOCATO;
00033                 delete questa;
00034                 break;
00035             }
00036         }
00037 
00038         //Se arrivo qui, devo solo controllare che il giocatore non sia già
00039         //stato eliminato. Controllo se ha perso la partita corrente.
00040         if (((id == questa->idG1) && (questa->risG1 < questa->risG2)) ||
00041                 ((id == questa->idG2) && (questa->risG1 > questa->risG2))){
00042             stato = ELIMINATO;
00043             delete questa;
00044             break;
00045         }
00046         delete questa;
00047     }
00048     return stato;
00049 }
00050 
00051 Lista* giocGiocatoriLiberi(const char* nomeFileGiocatori,
00052     const char* nomeFilePartite){
00053     int numeroGiocatori = fileContaRecord(nomeFileGiocatori);
00054     Lista* risultato = listeCreaLista(NULL);
00055 
00056     if (!fileEsiste(nomeFilePartite)){
00057         for (int i = 0; i < numeroGiocatori; i++){
00058             listeAggiungiElemento(risultato,
00059                                   giocDettagliGiocatore(nomeFileGiocatori, i));
00060         }
00061     }
00062     else {
00063         for (int i = 0; i < numeroGiocatori; i++){
00064             if (giocStatoGiocatore(nomeFilePartite, i) == LIBERO){
00065                 Giocatore*g = giocDettagliGiocatore(nomeFileGiocatori, i);
00066                 listeAggiungiElemento(risultato, g);
00067             }
00068         }
00069     }
00070     return risultato;
00071 }
00072 
00073 char* giocNomeGiocatore(const char* nomeFile, int idGiocatore){
00074     return fileLeggiCampo(nomeFile, 0, idGiocatore);
00075 }
00076 
00077 void giocNuovoGiocatore(const char* nomeFile, char* nomeGiocatore){
00078     fileAggiungiCampo(nomeFile, nomeGiocatore);
00079     fileNuovoRecord(nomeFile);
00080 }
00081 
00082 int giocHaGiocato(const char* nomeFileGiocatori,
00083               const char* nomeFilePartite,
00084     int idGiocatore, int idPartita){
00085     Partita* p = parDettagliPartita(nomeFilePartite, idPartita);
00086     int risultato = NONGIOCA;
00087     if (idGiocatore == p->idG1){
00088         if (p->risG1 > p->risG2){
00089             risultato = HAVINTO;
00090         }
00091         else {
00092             risultato = HAPERSO;
00093         }
00094     }
00095     else {
00096         if (idGiocatore == p->idG2){
00097             if (p->risG2 > p->risG1){
00098                 risultato = HAVINTO;
00099             }
00100             else {
00101                 risultato = HAPERSO;
00102             }
00103         }
00104     }
00105     delete p;
00106     return risultato;
00107 }

Generato il Fri Jan 28 11:43:15 2005 per TennisTournament da doxygen 1.3.6