Files
Projet-Dev/linea/LineaAppli.java

171 lines
5.1 KiB
Java

package linea;
import java.util.List;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.UIManager;
public class LineaAppli {
private static String choisirPseudo(DatabaseConnection db, String message, int messageType) {
List<String> pseudos = db.getPseudos();
if (pseudos.isEmpty()) {
JOptionPane.showMessageDialog(null, "Aucun compte disponible.");
return null;
}
return (String) JOptionPane.showInputDialog(
null,
message,
"Comptes",
messageType,
null,
pseudos.toArray(String[]::new),
pseudos.get(0)
);
}
private static int choisirNiveau() {
// Générer les niveaux dynamiquement jusqu'à 100
String[] niveaux = new String[100];
for (int i = 1; i <= 100; i++) {
niveaux[i - 1] = genererLabelNiveau(i);
}
JList<String> list = new JList<>(niveaux);
list.setSelectedIndex(0);
list.setVisibleRowCount(15);
JScrollPane scrollPane = new JScrollPane(list);
scrollPane.setPreferredSize(new java.awt.Dimension(350, 350));
int result = JOptionPane.showConfirmDialog(
null,
scrollPane,
"🎮 Sélection du Niveau - Linea",
JOptionPane.OK_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE
);
if (result == JOptionPane.OK_OPTION) {
return list.getSelectedIndex() + 1;
}
return 1;
}
private static String genererLabelNiveau(int niveau) {
if (niveau <= 2) {
return "⭐ Niveau " + niveau + " - Facile" + (niveau == 2 ? "+" : "");
} else if (niveau <= 4) {
return "⭐⭐ Niveau " + niveau + " - Moyen" + (niveau == 4 ? "+" : "");
} else if (niveau <= 6) {
return "⭐⭐⭐ Niveau " + niveau + " - Difficile" + (niveau == 6 ? "+" : "");
} else if (niveau <= 8) {
return "⭐⭐⭐⭐ Niveau " + niveau + " - Très Difficile" + (niveau == 8 ? "+" : "");
} else if (niveau <= 10) {
return "⭐⭐⭐⭐⭐ Niveau " + niveau + " - Expert" + (niveau == 10 ? "+" : "");
} else if (niveau <= 12) {
return "🔥 Niveau " + niveau + " - Cauchemar" + (niveau == 12 ? "+" : "");
} else if (niveau <= 14) {
return "🔥 Niveau " + niveau + " - Chaos" + (niveau == 14 ? "+" : "");
} else if (niveau <= 16) {
return "💀 Niveau " + niveau + " - Infernal" + (niveau == 16 ? "+" : "");
} else if (niveau <= 18) {
return "💀 Niveau " + niveau + " - Apocalypse" + (niveau == 18 ? "+" : "");
} else if (niveau <= 20) {
return "⚡ Niveau " + niveau + " - Extrême" + (niveau == 20 ? "+" : "");
} else if (niveau <= 30) {
return "⚡ Niveau " + niveau + " - Infini";
} else if (niveau <= 50) {
return "∞ Niveau " + niveau + " - Au-delà";
} else {
return "🌌 Niveau " + niveau + " - Cosmos";
}
}
private static Integer menuComptes(DatabaseConnection db) {
while (true) {
Object[] options = {"Sélectionner", "Créer", "Supprimer", "Retour"};
int choix = JOptionPane.showOptionDialog(
null,
"Gestion des comptes :",
"Comptes",
JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
options,
options[0]
);
if (choix == JOptionPane.CLOSED_OPTION || choix == 3) return null;
switch (choix) {
case 0 -> {
String pseudo = choisirPseudo(db, "Sélectionnez un compte :", JOptionPane.QUESTION_MESSAGE);
if (pseudo != null) return db.getIdParPseudo(pseudo);
}
case 1 -> {
String pseudo = JOptionPane.showInputDialog(null, "Nouveau pseudo :");
if (pseudo == null || pseudo.trim().isEmpty()) continue;
pseudo = pseudo.trim();
int id = db.getIdParPseudo(pseudo);
return id > 0 ? id : db.creerCompte(pseudo);
}
case 2 -> {
String pseudo = choisirPseudo(db, "Sélectionnez le compte à supprimer :", JOptionPane.WARNING_MESSAGE);
if (pseudo == null) continue;
int confirm = JOptionPane.showConfirmDialog(
null,
"Supprimer le compte \"" + pseudo + "\" et toute sa progression ?",
"Confirmation",
JOptionPane.YES_NO_OPTION
);
if (confirm == JOptionPane.YES_OPTION) {
int id = db.getIdParPseudo(pseudo);
if (id > 0) db.supprimerCompte(id);
}
}
}
}
}
//-------------------------------------------------------------------------
// Classe de base de l'application, rien à modifier ici
//-------------------------------------------------------------------------
public static void main(String[] arg) {
UIManager.put("OptionPane.cancelButtonText", "Retour");
DatabaseConnection db = new DatabaseConnection();
db.connect();
db.createTables();
while (true) {
Object[] options = {"Comptes", "Sans compte", "Quitter"};
int choix = JOptionPane.showOptionDialog(null,
"Choisissez une action :",
"Menu", JOptionPane.DEFAULT_OPTION,
JOptionPane.QUESTION_MESSAGE, null, options, options[0]);
if (choix == JOptionPane.CLOSED_OPTION || choix == 2) {
return;
}
switch (choix) {
case 1 -> {
int niveau = choisirNiveau();
new Jeu(db, -1, niveau).demarrer();
return;
}
case 0 -> {
Integer idCompte = menuComptes(db);
if (idCompte != null) {
int niveau = choisirNiveau();
new Jeu(db, idCompte, niveau).demarrer();
return;
}
}
}
}
}
}