This repository was archived by the owner on Oct 28, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathHomeLevelChoice.java
More file actions
163 lines (152 loc) · 6.08 KB
/
HomeLevelChoice.java
File metadata and controls
163 lines (152 loc) · 6.08 KB
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
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.util.logging.Level;
public class HomeLevelChoice{ // Cette classe de Frame pour contenir la liste des niveaux par défaut
private JButton lvl1 = new JButton("Niveau 1"); // Ces boutons seront les boutons pour les différents niveaux
private JButton lvl2 = new JButton("Niveau 2");
private JButton lvl3 = new JButton("Niveau 3");
private JButton lvl4 = new JButton("Niveau 4");
private JButton lvl5 = new JButton("Niveau 5");
private final JButton Precedent = new JButton("Precedent");
private static final JFrame frame = new JFrame("Pet Rescue Java");
private final JPanel Levels = new JPanel();
private int valLevel = readValueProgrssion();
public HomeLevelChoice(){
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Image icon = Toolkit.getDefaultToolkit().getImage("Textures/IconGame.png");
frame.setIconImage(icon); // On set l'icone de la fenêtre
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize(); // On récupère la dimension de l'écran de l'user pour trouver le milieu
frame.setSize(450, 450);
int x = (int) ((dimension.getWidth() - frame.getWidth()) / 2);
int y = (int) ((dimension.getHeight() - frame.getHeight()) / 2);
frame.setLocation(x, y); // On place la fenêtre au milieu de l'écran de l'utilisateur
frame.setVisible(true);
ChecksButtons();
AddButtons();
frame.add(Levels);
Precedent.addActionListener(e -> {//Le listener du bouton qui permet de fermer cette fenêtre et réouvrir l'accueil quand on clique dessus
Home home = new Home();
home.createAndShowGUI();
frame.dispose();
});
}
private void AddButtons() { // Afin d'ajouter les boutons au Jpanel, on fait une function juste pour simplifier le constructeur
Levels.add(lvl1);
Levels.add(lvl2);
Levels.add(lvl3);
Levels.add(lvl4);
Levels.add(lvl5);
Levels.add(Precedent);
lvl1.addActionListener(e -> { //A chaque fois qu'un niveau est lancé pour la premiere fois celui d'arpes est débloqué
if(readValueProgrssion()<1){
writeFile(1);
}
ChecksButtons();
launchLevel("Niveau1");
});
lvl2.addActionListener(e -> {
if(readValueProgrssion()<2){
writeFile(2);
}
ChecksButtons();
launchLevel("Niveau2");
});
lvl3.addActionListener(e -> {
if(readValueProgrssion()<3){
writeFile(3);
}
ChecksButtons();
launchLevel("Niveau3");
});
lvl4.addActionListener(e -> {
if(readValueProgrssion()<4){
writeFile(4);
}
ChecksButtons();
launchLevel("Niveau4");
});
lvl5.addActionListener(e -> {
ChecksButtons();
launchLevel("Niveau5");
});
}
private void ChecksButtons() { //Ici on va réccupérer les niveaux que le joueur a déjà lancé et derrière désactiver ceux qu'il n'a pas débloqué
if (valLevel == 0) {
lvl2.setEnabled(false);
lvl3.setEnabled(false);
lvl4.setEnabled(false);
lvl5.setEnabled(false);
}
if(valLevel ==1){
lvl2.setEnabled(true);
}
if(valLevel == 2){
lvl2.setEnabled(true);
lvl3.setEnabled(true);
}
if(valLevel == 3){
lvl2.setEnabled(true);
lvl3.setEnabled(true);
lvl4.setEnabled(true);
}
if( valLevel == 4){
lvl2.setEnabled(true);
lvl3.setEnabled(true);
lvl4.setEnabled(true);
lvl5.setEnabled(true);
}
}
private int readValueProgrssion() { // On récupère le fichier de progression ici pour savoir où en est le joueur
ObjectInputStream ois;
try {
final FileInputStream fichier = new FileInputStream("jeu/progression");
ois = new ObjectInputStream(fichier);
return (int) ois.readObject();
}
catch (Exception e){ // Si le fichier n'existe pas alors il est crée
System.out.println("Erreur lors de la lecture du fichier progression, creation d'un nouveau fichier progression...");
writeFile(0);
//launchLevel("Niveau1");
}
return 0;
}
private void launchLevel(String s) { // On va ici lire le niveau dont le nom est s dans le répertoire jeu
ObjectInputStream ois;
String w = "jeu/"+s;
try {
final FileInputStream LevelFile = new FileInputStream(w);
ois = new ObjectInputStream(LevelFile);
Home.lvlName = w;
final GameBox main;
main = new GameBoxLevel((CaseGame[][]) ois.readObject());
main.setVisible(true);
frame.repaint();
frame.dispose(); // On ferme la frame actuelle apres avoir ouvert le niveau
} catch (Exception e) {
System.out.println("Erreur lors du chargement du fichier");
}
}
public void writeFile(int n){
ObjectOutputStream oos = null;
try {
final FileOutputStream fichier = new FileOutputStream("jeu/progression"); // On save ici le nouveau Integer dans le fichier pour savoir l'avancement
oos = new ObjectOutputStream(fichier);
oos.writeObject(n);
oos.flush();
}
catch (final java.io.IOException e) {
e.printStackTrace();
} finally {
try {
if (oos != null) {
oos.flush();
oos.close();
}
} catch (final IOException ex) {
ex.printStackTrace();
}
}
valLevel = n;
}
}