JeuDeRole/JDR/src/metier/Jeu.java

194 lines
6.2 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* 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("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")
};
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));
}
}