194 lines
6.2 KiB
Java
194 lines
6.2 KiB
Java
/*
|
||
* 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.*;
|
||
import javax.swing.*;
|
||
|
||
/**
|
||
*
|
||
* @author steve.maingana
|
||
*/
|
||
public class Jeu {
|
||
// Nom du jeu
|
||
private String nomJeu;
|
||
// Tableau de personnages
|
||
private ArrayList<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.size(); i++) {
|
||
envoi += this.persos.get(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;
|
||
}
|
||
|
||
public String getNomJeu() {
|
||
return nomJeu;
|
||
}
|
||
|
||
/**
|
||
* Défini le tableau de personnages
|
||
* @param persos Tableau de personnages
|
||
*/
|
||
public void setPersos(ArrayList<Personnage> persos) {
|
||
this.persos = persos;
|
||
}
|
||
|
||
public ArrayList getPersos() {
|
||
return this.persos;
|
||
}
|
||
|
||
/**
|
||
* Initialise le tableau de personnages
|
||
*/
|
||
private void chargerPersonnages() {
|
||
//création des énigmes;
|
||
Enigme[] enigmes1 = {
|
||
new Enigme("Qu’est 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")
|
||
};
|
||
|
||
ArrayList<Personnage> persos = new ArrayList<Personnage>();
|
||
persos.add(new Guerrier("Jayce", "Jayce.jpg", 5, 5, "Hache"));
|
||
persos.add(new Guerrier("Ambresa", "Ambresa.jpg", 8, 9, "Lance"));
|
||
persos.add(new Guerrier("Ekko", "Ekko.jpg", 5, 6, "Poignard"));
|
||
persos.add(new Sorcier("Mel", "Mel.jpg", 6, 7, "De laurier", enigmes1));
|
||
persos.add(new Sorcier("Viktor", "Viktor.jpg", 10, 5, "Hexcore", enigmes2));
|
||
persos.add(new Voleur("Jinx", "Jinx.jpg", 7, 6, "Marteau"));
|
||
|
||
this.setPersos(persos);
|
||
System.out.println("Personnages chargés !");
|
||
}
|
||
|
||
/**
|
||
* Obtenir la liste des personnages encore en vie
|
||
* @return Liste des personnages encore en vie
|
||
*/
|
||
public Vector getLesPersonnagesVivants() {
|
||
Vector<String> lesPersonnages = new Vector<>();
|
||
for (Personnage perso : this.persos) {
|
||
if (perso.getDureeVie() > 0) {
|
||
lesPersonnages.add(perso.getClass().getSimpleName()+":"+perso.getNom());
|
||
}
|
||
}
|
||
|
||
return lesPersonnages;
|
||
}
|
||
|
||
/**
|
||
* R<>partit les personnages en <20>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.get(i));
|
||
} else {
|
||
this.Equipe1.add(this.persos.get(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.size()) {
|
||
if (this.persos.get(i).getNom().equals(nom)) {
|
||
perso = this.persos.get(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));
|
||
}
|
||
} |