This commit is contained in:
2025-02-10 08:55:54 +01:00
parent e22c2a304a
commit c52812f8f6
32 changed files with 1114 additions and 0 deletions

172
JDR/src/metier/Jeu.java Normal file
View File

@@ -0,0 +1,172 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
package metier;
import java.util.ArrayList;
import javax.swing.JOptionPane;
/**
*
* @author steve.maingana
*/
public class Jeu {
// Nom du jeu
private String nomJeu;
// Tableau de personnages
private Personnage[] persos;
// Equipes de jeu
private ArrayList<Personnage> Equipe1;
private ArrayList<Personnage> Equipe2;
/**
* Création du jeu
* @param nomJeu Nom du jeu
*/
public Jeu(String nomJeu) {
this.setNomJeu(nomJeu);
this.chargerPersonnages();
this.definirEquipes();
}
/**
* Représentation de la classe Jeu sous la forme d'une chaîne de caractères
* @return Chaîne de caractères
*/
public String toString() {
String envoi = "";
envoi += "Jeu{" + "nomJeu=" + this.nomJeu + ",\n persos=";
for (int i = 0; i < this.persos.length; i++) {
envoi += this.persos[i].toString();
envoi += ",\n";
}
envoi += "}";
return envoi;
}
/**
* Défini le nom du jeu
* @param nomJeu Nom du jeu
*/
public void setNomJeu(String nomJeu) {
this.nomJeu = nomJeu;
}
/**
* Défini le tableau de personnages
* @param persos Tableau de personnages
*/
public void setPersos(Personnage[] persos) {
this.persos = persos;
}
/**
* Initialise le tableau de personnages
*/
private void chargerPersonnages() {
//création des énigmes;
Enigme[] enigmes1 = {
new Enigme("Quest ce qui est plus grand que la Tour Eiffel, mais infiniment moins lourd ?","ombre"),
new Enigme("Girafe = 3, Éléphant = 3, Hippopotame = 5, Lion = … ?","2"),
new Enigme("Qu'est-ce qui commence la nuit et termine le matin ?","n"),
new Enigme("Qu'est-ce qui fait le tour de la maison sans bouger ?","mur")
};
Enigme[] enigmes2 = {
new Enigme("Considérez la suite de chiffre suivante : 0 1 1 2 3 5 8 Quel chiffre suit le 8 ?","13"),
new Enigme("Prenez une pizza et placez-la devant vous. En combien de morceaux maximum pouvez-vous la couper en effectuant seulement six coups de couteau ?","16"),
new Enigme("C'est le jour de la paie. La poule reçoit 7 euros. L'abeille reçoit 21 euros. L'araignée reçoit 28 euros. Combien reçoit le chien ?","14"),
new Enigme("Un escargot est au fond d'un puits de 10 mètres. Chaque matin il monte de 3 mètres et chaque nuit il descend de 2 mètres. Combien de jours lui faudra-t-il pour sortir de ce puits ?","7")
};
Personnage[] persos = {
new Guerrier("Jayce", "Jayce.jpg", 5, 5, "Hache"),
new Guerrier("Ambresa", "Ambresa.jpg", 8, 9, "Lance"),
new Guerrier("Ekko", "Ekko.jpg", 5, 6, "Poignard"),
new Sorcier("Mel", "Mel.jpg", 6, 7, "De laurier", enigmes1),
new Sorcier("Viktor", "Viktor.jpg", 10, 5, "Hexcore", enigmes2),
new Voleur("Jinx", "Jinx.jpg", 7, 6, "Marteau")
};
this.setPersos(persos);
System.out.println("Personnages chargés !");
}
/**
* Répartit les personnages en équipes de 3
*/
private void definirEquipes() {
for (int i = 0; i < 6; i++) {
int rollEquipe = (int) (Math.random()*2)+1;
if (rollEquipe == 1) {
if (this.Equipe1.size() == 3) {
this.Equipe2.add(this.persos[i]);
} else {
this.Equipe1.add(this.persos[i]);
}
}
}
}
/**
* Recherche un personnage dans le tableau
* @param nom Nom du personnage
* @return S'il existe, il retourne le personnage sinon rien
*/
public Personnage rechercherPerso(String nom) {
Personnage perso = null;
boolean trouve = false;
int i = 0;
while (!trouve && i < this.persos.length) {
if (this.persos[i].getNom().equals(nom)) {
perso = this.persos[i];
trouve = true;
} else {
i++;
}
}
return perso;
}
public void deroulement() {
boolean actif = true;
int tour = 1;
ArrayList<Personnage> DuelE1 = null;
ArrayList<Personnage> DuelE2 = null;
do {
JOptionPane.showMessageDialog(null, "Tour "+tour, "3v3", JOptionPane.INFORMATION_MESSAGE);
do {
Personnage hasard = this.Equipe1.get(genererNbAleatoire(0, 2));
if (!DuelE1.contains(hasard)) {
DuelE1.add(hasard);
}
} while (DuelE1.size() < 3);
do {
Personnage hasard = this.Equipe2.get(genererNbAleatoire(0, 2));
if (!DuelE2.contains(hasard)) {
DuelE2.add(hasard);
}
} while (DuelE1.size() < 3);
} while(actif);
}
/**
* Génère un nombre aléatoire dans une intervalle
* @param min Intervalle de début
* @param max Intervalle de fin
* @return Nombre aléatoire
*/
public static int genererNbAleatoire(int min, int max) {
return min + (int)(Math.random() * ((max - min) + 1));
}
}