-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPunteggi.java
230 lines (165 loc) · 7.66 KB
/
Punteggi.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
/*
* Classe che permette di scrivere e leggere sul file Risultati
*/
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.NoSuchElementException;
import java.util.Scanner;
import javax.swing.JOptionPane;
/**
* Classe che permette l'interazione col file Risultati
* @author Ferrari Vincenzo e Iadarola Barbara.
*/
public class Punteggi {
/**
* Costruttore della classe punteggi
* @param dirFile : il percorso del file Risultati.txt
*/
public Punteggi (String dirFile) {
percorsoRis = dirFile;
}
/**
* Metodo che permette l'inserimento di un punteggio nella top ten dei risultati
* @param nGiocatore : nome del giocatore
* @param cGiocatore : cognome del giocatore
* @param pGiocatore : punteggio del giocatore
* @throws java.io.IOException
* @throws java.io.FileNotFoundException
* @throws java.util.NoSuchElementException
* @throws java.lang.NumberFormatException
*/
public void addRis(String nGiocatore, String cGiocatore, int pGiocatore) throws IOException, FileNotFoundException, NoSuchElementException, NumberFormatException {
try {
// istanzio lo scanner
fileReader = new FileReader(percorsoRis);
fileScanner = new Scanner(fileReader);
// creo il vettore dei Giocatori
// ossia la lista di supporto per controllare se è possibile inserire l'ultimo punteggio
// nella top ten
ArrayList<Giocatore> listaGiocatori = new ArrayList<Giocatore>();
// inserisco i risultati attuali del file nella lista da confrontare
for (int i=0; i < RIGHE_TOP_TEN; i++) {
String nome = fileScanner.next();
String cognome = fileScanner.next();
int risultato = Integer.parseInt(fileScanner.next());
listaGiocatori.add(new Giocatore(nome, cognome, risultato));
}
int j = 0;
sentinella = false;
// scorro la lista e controllo se il punteggio dell'ultima partita può essere collocato
// nella top ten
while ((j < listaGiocatori.size()) && (!sentinella)) {
// se vedo che rientra nella topten
if (listaGiocatori.get(j).getPunteggio() < pGiocatore) {
// lo inserisco al posto giusto
listaGiocatori.add(j, new Giocatore (nGiocatore, cGiocatore, pGiocatore));
// ed esco dal ciclo
sentinella = true;
}
j++;
}
// istanzio il writer
fileWriter = new PrintWriter(percorsoRis);
// scrivo i dati sul file, solo i primi 9
for (int i=0; i < RIGHE_TOP_NINE; i++) {
fileWriter.println(listaGiocatori.get(i).getNome()+" "+listaGiocatori.get(i).getCognome()+" "+listaGiocatori.get(i).getPunteggio());
}
// scrivo l'ultimo senza andare a capo
fileWriter.print(listaGiocatori.get(RIGHE_TOP_TEN).getNome()+" "+listaGiocatori.get(RIGHE_TOP_TEN).getCognome()+" "+listaGiocatori.get(RIGHE_TOP_TEN).getPunteggio());
}
finally {
// chiudo il fileReader, il fileWriter e il fileScanner se sono ancora aperti
if (fileReader != null)
fileReader.close();
if (fileWriter != null)
fileWriter.close();
if (fileScanner != null)
fileScanner.close();
}
}
/**
* Metodo che ritorna i risultati contenuti nel file Risultati.txt
* @return : ritorna una matrice di Stringhe contenente i risultati
* @throws java.io.IOException
* @throws java.io.FileNotFoundException
* @throws java.util.NoSuchElementException
*/
public String[][] getRis() throws IOException, FileNotFoundException, NoSuchElementException {
try {
// istanzio lo scanner
fileReader = new FileReader(percorsoRis);
fileScanner = new Scanner(fileReader);
// creo la matrice 10*3 che conterrà i vari giocatori del file
arrRisultati = new String[RIGHE_TOP_TEN][COLONNE_TOP_TEN];
// inserisco i vari giocatori nella matrice
for (int i=0; i < RIGHE_TOP_TEN; i++)
for (int j=0; j < COLONNE_TOP_TEN; j++)
arrRisultati[i][j] = fileScanner.next();
// ritorno la matrice
return arrRisultati;
}
finally {
// chiudo il fileReader e il fileScanner se sono ancora aperti
if (fileReader != null)
fileReader.close();
if (fileScanner != null)
fileScanner.close();
}
}
/**
* Metodo che reimposta il file Risultati.txt con i valori iniziali
*/
public void delRis() {
try {
// istanzio il fileWriter
fileWriter = new PrintWriter(percorsoRis);
// riscrivo sul file la tabella iniziale dei giocatori
for (int i=0; i < RIGHE_TOP_NINE; i++) {
String nome = data[i][0];
String cognome = data[i][1];
String punteggio = data[i][2];
fileWriter.println(nome+" "+cognome+" "+punteggio);
}
// scrivo l'ultima riga senza andare a capo
String nome = data[RIGHE_TOP_NINE][0];
String cognome = data[RIGHE_TOP_NINE][1];
String punteggio = data[RIGHE_TOP_NINE][2];
fileWriter.println(nome+" "+cognome+" "+punteggio);
}
// se non trovo nessun file
catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(null, "File dei risultati non trovato. Prova a crearlo manualmente nella cartella del gioco.", "Errore", JOptionPane.ERROR_MESSAGE);
}
finally {
// chiudo il fileWriter se è ancora aperto
if (fileWriter != null)
fileWriter.close();
}
}
private String percorsoRis; // l'indirizzo del file dei risultati
private FileReader fileReader;
private Scanner fileScanner;
private PrintWriter fileWriter;
private String[][] arrRisultati; // matrice contenente la top ten
private boolean sentinella; // sentinella per uscire dal ciclo di controllo (vedi sopra)
// valori della matrice
public static final int RIGHE_TOP_TEN = 10;
public static final int RIGHE_TOP_NINE = 9;
public static final int COLONNE_TOP_TEN = 3;
public static final // matrice iniziale del file Risultati.txt
String[][] data = {
{"Mario", "Rossi", "1000"},
{"Giovanni", "Bianchi", "900"},
{"Luigi", "Neri", "800"},
{"Claudio", "Rossi", "700"},
{"Vincenzo", "Rossi", "600"},
{"Marco", "Bianchi", "500"},
{"Luca", "Bianchi", "400"},
{"Giorgio", "Rossi", "300"},
{"Fausto", "Neri", "200"},
{"Julian", "Neri", "100"}
};
}