00001
00002
00003 #include "giocatore.h"
00004 #include "partita.h"
00005 #include "file.h"
00006 #include "liste.h"
00007
00008
00009
00010
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
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
00030
00031 if (id == questa->idG1 || id == questa->idG2){
00032 stato = GIOCATO;
00033 delete questa;
00034 break;
00035 }
00036 }
00037
00038
00039
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 }