00001
00002
00003 #include "file.h"
00004 #include "partita.h"
00005
00006
00007
00008
00009
00010 int parTurnoCorrente(const char* nomeFile){
00011 if (fileEsiste(nomeFile)){
00012
00013 int records = fileContaRecord(nomeFile);
00014 char* turno = fileLeggiCampo(nomeFile, 0, records - 1);
00015 int risultato = atoi(turno);
00016 delete[] turno;
00017
00018 if (fileUltimoCarattere(nomeFile) == '*'){
00019 risultato++;
00020 }
00021 return risultato;
00022 }
00023 return 1;
00024 }
00025
00026 int parContaPartite(const char* nomeFile){
00027 if (fileEsiste(nomeFile)){
00028
00029 int fine = fileContaRecord(nomeFile);
00030 char* turno = fileLeggiCampo(nomeFile, 0, fine - 1);
00031
00032
00033 bool turnoVuoto = (strcmp(turno, "*") == 0);
00034 delete[] turno;
00035 if (turnoVuoto){
00036
00037
00038 return fine -1;
00039 }
00040 return fine;
00041 }
00042 return 0;
00043 }
00044
00045 int parContaPartiteTurno(const char* nomeFile, int turno){
00046 if (fileEsiste(nomeFile)){
00047 int record = fileContaRecord(nomeFile);
00048 int partiteGiocate = 0;
00049 for (int i = 0;i < record;i++){
00050 char*s = fileLeggiCampo(nomeFile, 0, record - i - 1);
00051 if (strcmp(s, "*") != 0){
00052 int turnoAttuale = atoi(s);
00053 delete[] s;
00054
00055 if (turnoAttuale == turno){
00056 partiteGiocate++;
00057 }
00058 if (turnoAttuale < turno){
00059 break;
00060 }
00061 }
00062 }
00063 return partiteGiocate;
00064 }
00065 return 0;
00066 }
00067
00068 Partita* parDettagliPartita(const char* nomeFile, int id){
00069
00070
00071
00072 Partita* letta = new Partita;
00073 char* tmp = fileLeggiCampo(nomeFile, 0, id);
00074 letta->turno = atoi(tmp);
00075 delete [] tmp;
00076 tmp = fileLeggiCampo(nomeFile, 1, id);
00077 letta->idG1 = atoi(tmp);
00078 delete [] tmp;
00079 tmp = fileLeggiCampo(nomeFile, 2, id);
00080 letta->idG2 = atoi(tmp);
00081 delete [] tmp;
00082 tmp = fileLeggiCampo(nomeFile, 3, id);
00083 letta->risG1 = atoi(tmp);
00084 delete [] tmp;
00085 tmp = fileLeggiCampo(nomeFile, 4, id);
00086 letta->risG2 = atoi(tmp);
00087 delete [] tmp;
00088
00089 return letta;
00090 }
00091
00092 Lista* parListaPartiteGiocate(const char* nomeFile, int turno){
00093 Lista* risultato = listeCreaLista(NULL);
00094 int record = fileContaRecord(nomeFile);
00095
00096 for (int i = 0;i < record;i++){
00097 char*s = fileLeggiCampo(nomeFile, 0, record - i - 1);
00098 if (strcmp(s, "*") != 0){
00099 int turnoAttuale = atoi(s);
00100 delete[] s;
00101
00102 if (turnoAttuale == turno){
00103 Partita* nuovoElemento =
00104 parDettagliPartita(nomeFile, record - i - 1);
00105 listeAggiungiElemento(risultato, nuovoElemento);
00106 }
00107 if (turnoAttuale < turno){
00108 break;
00109 }
00110 }
00111 }
00112 return risultato;
00113 }
00114
00115 void parNuovaPartita(const char* nomeFileGiocatori,
00116 const char* nomeFilePartite, int idG1, int idG2,
00117 int risG1, int risG2){
00118 char *temp = new char[16];
00119 snprintf(temp, 16, "%d", parTurnoCorrente(nomeFilePartite));
00120 if (fileEsiste(nomeFilePartite) &&
00121 fileUltimoCarattere(nomeFilePartite) == '*'){
00122 fileAggiungiCampoUltimoChar(nomeFilePartite, temp);
00123 }
00124 else {
00125 fileAggiungiCampo(nomeFilePartite, temp);
00126 }
00127
00128 snprintf(temp, 16, "%d", idG1);
00129 fileAggiungiCampo(nomeFilePartite, temp);
00130 snprintf(temp, 16, "%d", idG2);
00131 fileAggiungiCampo(nomeFilePartite, temp);
00132 snprintf(temp, 16, "%d", risG1);
00133 fileAggiungiCampo(nomeFilePartite, temp);
00134 snprintf(temp, 16, "%d", risG2);
00135 fileAggiungiCampo(nomeFilePartite, temp);
00136 delete[] temp;
00137 fileNuovoRecord(nomeFilePartite);
00138 }
00139
00140 void parNuovoTurno(const char *nomeFile){
00141 fileAggiungiCampo(nomeFile, "*");
00142 }