Bonjour à tous.
Je dois programmer un jeu (dans le cadre de mon BAC) et j'ai décidé de faire une revisite de Flappy Bird.
Toute la partie graphique est faite, je bloque actuellement sur la sauvegarde des scores.
Voilà comment fonctionne mon idée :
J'ai un fichier texte dans lequel j'enregistre les scores.
Une fois le jeu terminé, le programme va aller ouvrir ce fichier, lire les valeurs qui sont dedans, et les placer dans un tableau.
Je ne garde que les trois meilleurs scores.
Le programme va comparer le score effectué par le joueur aux autres scores enregistrés.
Si le score effectué est supérieur à ceux enregistrés, alors le score effectué prendra la première place dans le tableau, supprimant ainsi la dernière.
Dans l'idéal, j'aurais voulu juste modifier mon fichier texte, mais ça a l'air trop compliqué. J'ai donc décidé de supprimer le fichier texte qui contient les scores, et d'en créer un autre dans lequel je sauvegarderai les valeurs de mon tableau, donc les nouveaux meilleurs scores. Sauf que, ça ne marche pas. J'ai trouvé une technique me permettant de supprimer le fichier, j'en ai fait une fonction que j'appelle si le score devient le nouveau meilleur score, mais cette fonctionne refuse de supprimer le dossier. Lorsque je mets en commentaire la fonction me permettant de lire les valeurs du fichier, la suppression fonctionne.
J'ai vérifié que le fichier soit bien fermé, et c'est le cas, j'ai essayé plusieurs manips mais en vain.
Voilà mon code :
Quelqu'un saurait-il m'indiquer d'où peut venir le problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public class scores extends GraphicsProgram { private int tab[] = {0,0,0}; File fichier = new File("scores.txt"); public void init(){ lire(); } public void lire(){ try { BufferedReader fichier = new BufferedReader(new FileReader("scores.txt")); String ligne; for(int i = 0; i < 4; i++) { ligne = fichier.readLine(); tab[i] = Integer.parseInt(ligne); println("tab i ="+tab[i]); } fichier.close(); } catch(Exception e) {} int m = 1000; if( m > tab[2]){ int f = tab[2]; tab[2] = m; if(m > tab[1]){ int g = tab[1]; tab[1] = m; tab[2] = f; if ( m > tab[0]){ int h = tab[0]; tab[0] = m; tab[1] = h; tab[2] = g; println("tab 0 =" +tab[0]); println("tab 1 =" +tab[1]); println("tab 2 =" +tab[2]); suppression(); } } } } public void suppression(){ File f= null; boolean bool = false; try{ bool = f.delete(); System.out.println("Fichier supprimé: "+bool); f.createNewFile(); System.out.println("createNewFile() méthode appelée"); f.delete(); System.out.println("Fichier supprimé: "+bool); } catch(Exception e) { e.printStackTrace(); } remplacer(); } public void remplacer(){ try { PrintWriter scores = new PrintWriter(new FileWriter("scores.txt", false)); for ( int i = 0; i < tab.length; i++ ){ scores.println(""+tab[i]); } scores.close(); } catch(Exception e) {} } }
Merci d'avance pour votre aide.
Partager