diff --git a/JDR/src/img/Ambresa.jpg b/JDR/src/img/Ambresa.jpg
new file mode 100644
index 0000000..f7af619
Binary files /dev/null and b/JDR/src/img/Ambresa.jpg differ
diff --git a/JDR/src/img/Barbare04.jpg b/JDR/src/img/Barbare04.jpg
new file mode 100644
index 0000000..6b1c7f5
Binary files /dev/null and b/JDR/src/img/Barbare04.jpg differ
diff --git a/JDR/src/img/Caitlyn.jpg b/JDR/src/img/Caitlyn.jpg
new file mode 100644
index 0000000..dd96c6b
Binary files /dev/null and b/JDR/src/img/Caitlyn.jpg differ
diff --git a/JDR/src/img/Combat.jpg b/JDR/src/img/Combat.jpg
new file mode 100644
index 0000000..24c29bb
Binary files /dev/null and b/JDR/src/img/Combat.jpg differ
diff --git a/JDR/src/img/CombatPerdu.jpg b/JDR/src/img/CombatPerdu.jpg
new file mode 100644
index 0000000..55244b3
Binary files /dev/null and b/JDR/src/img/CombatPerdu.jpg differ
diff --git a/JDR/src/img/Ekko.jpg b/JDR/src/img/Ekko.jpg
new file mode 100644
index 0000000..713fa00
Binary files /dev/null and b/JDR/src/img/Ekko.jpg differ
diff --git a/JDR/src/img/Guerrier05.jpg b/JDR/src/img/Guerrier05.jpg
new file mode 100644
index 0000000..628ae2d
Binary files /dev/null and b/JDR/src/img/Guerrier05.jpg differ
diff --git a/JDR/src/img/Guerrier08.jpg b/JDR/src/img/Guerrier08.jpg
new file mode 100644
index 0000000..57b7dd7
Binary files /dev/null and b/JDR/src/img/Guerrier08.jpg differ
diff --git a/JDR/src/img/Guerrier10.jpg b/JDR/src/img/Guerrier10.jpg
new file mode 100644
index 0000000..98c475a
Binary files /dev/null and b/JDR/src/img/Guerrier10.jpg differ
diff --git a/JDR/src/img/Guerrier12.jpg b/JDR/src/img/Guerrier12.jpg
new file mode 100644
index 0000000..884c5ab
Binary files /dev/null and b/JDR/src/img/Guerrier12.jpg differ
diff --git a/JDR/src/img/Jayce.jpg b/JDR/src/img/Jayce.jpg
new file mode 100644
index 0000000..0b6b30e
Binary files /dev/null and b/JDR/src/img/Jayce.jpg differ
diff --git a/JDR/src/img/Jinx.jpg b/JDR/src/img/Jinx.jpg
new file mode 100644
index 0000000..9f927ae
Binary files /dev/null and b/JDR/src/img/Jinx.jpg differ
diff --git a/JDR/src/img/Mel.jpg b/JDR/src/img/Mel.jpg
new file mode 100644
index 0000000..64e2be3
Binary files /dev/null and b/JDR/src/img/Mel.jpg differ
diff --git a/JDR/src/img/Simone.JPG b/JDR/src/img/Simone.JPG
new file mode 100644
index 0000000..4f47ff5
Binary files /dev/null and b/JDR/src/img/Simone.JPG differ
diff --git a/JDR/src/img/Sorcier02.JPG b/JDR/src/img/Sorcier02.JPG
new file mode 100644
index 0000000..86afc05
Binary files /dev/null and b/JDR/src/img/Sorcier02.JPG differ
diff --git a/JDR/src/img/Sorciere1.jpg b/JDR/src/img/Sorciere1.jpg
new file mode 100644
index 0000000..57cac9d
Binary files /dev/null and b/JDR/src/img/Sorciere1.jpg differ
diff --git a/JDR/src/img/Viktor.jpg b/JDR/src/img/Viktor.jpg
new file mode 100644
index 0000000..18f5ea7
Binary files /dev/null and b/JDR/src/img/Viktor.jpg differ
diff --git a/JDR/src/img/adj_1.jpg b/JDR/src/img/adj_1.jpg
new file mode 100644
index 0000000..a6e3d8b
Binary files /dev/null and b/JDR/src/img/adj_1.jpg differ
diff --git a/JDR/src/img/des.jpg b/JDR/src/img/des.jpg
new file mode 100644
index 0000000..4ab6874
Binary files /dev/null and b/JDR/src/img/des.jpg differ
diff --git a/JDR/src/img/famille_1.jpg b/JDR/src/img/famille_1.jpg
new file mode 100644
index 0000000..0ce6eb6
Binary files /dev/null and b/JDR/src/img/famille_1.jpg differ
diff --git a/JDR/src/img/magie.jpg b/JDR/src/img/magie.jpg
new file mode 100644
index 0000000..ca36156
Binary files /dev/null and b/JDR/src/img/magie.jpg differ
diff --git a/JDR/src/img/panoramix.gif b/JDR/src/img/panoramix.gif
new file mode 100644
index 0000000..ed4f989
Binary files /dev/null and b/JDR/src/img/panoramix.gif differ
diff --git a/JDR/src/img/pierreFeuilleCiseaux.jpg b/JDR/src/img/pierreFeuilleCiseaux.jpg
new file mode 100644
index 0000000..4bb2ecf
Binary files /dev/null and b/JDR/src/img/pierreFeuilleCiseaux.jpg differ
diff --git a/JDR/src/interfaces/jFFJDR.form b/JDR/src/interfaces/jFFJDR.form
new file mode 100644
index 0000000..1403f75
--- /dev/null
+++ b/JDR/src/interfaces/jFFJDR.form
@@ -0,0 +1,66 @@
+
+
+
diff --git a/JDR/src/interfaces/jFFJDR.java b/JDR/src/interfaces/jFFJDR.java
new file mode 100644
index 0000000..9dc477d
--- /dev/null
+++ b/JDR/src/interfaces/jFFJDR.java
@@ -0,0 +1,102 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/GUIForms/JFrame.java to edit this template
+ */
+package interfaces;
+
+/**
+ *
+ * @author steve.maingana
+ */
+public class jFFJDR extends javax.swing.JFrame {
+
+ /**
+ * Creates new form jFFJDR
+ */
+ public jFFJDR() {
+ initComponents();
+ }
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
+ */
+ @SuppressWarnings("unchecked")
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ jPChoix = new javax.swing.JPanel();
+ jPInfos = new javax.swing.JPanel();
+
+ setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
+
+ javax.swing.GroupLayout jPChoixLayout = new javax.swing.GroupLayout(jPChoix);
+ jPChoix.setLayout(jPChoixLayout);
+ jPChoixLayout.setHorizontalGroup(
+ jPChoixLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGap(0, 400, Short.MAX_VALUE)
+ );
+ jPChoixLayout.setVerticalGroup(
+ jPChoixLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGap(0, 200, Short.MAX_VALUE)
+ );
+
+ getContentPane().add(jPChoix, java.awt.BorderLayout.CENTER);
+
+ javax.swing.GroupLayout jPInfosLayout = new javax.swing.GroupLayout(jPInfos);
+ jPInfos.setLayout(jPInfosLayout);
+ jPInfosLayout.setHorizontalGroup(
+ jPInfosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGap(0, 420, Short.MAX_VALUE)
+ );
+ jPInfosLayout.setVerticalGroup(
+ jPInfosLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGap(0, 310, Short.MAX_VALUE)
+ );
+
+ getContentPane().add(jPInfos, java.awt.BorderLayout.EAST);
+
+ pack();
+ }// //GEN-END:initComponents
+
+ /**
+ * @param args the command line arguments
+ */
+ public static void main(String args[]) {
+ /* Set the Nimbus look and feel */
+ //
+ /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
+ * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
+ */
+ try {
+ for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
+ if ("Nimbus".equals(info.getName())) {
+ javax.swing.UIManager.setLookAndFeel(info.getClassName());
+ break;
+ }
+ }
+ } catch (ClassNotFoundException ex) {
+ java.util.logging.Logger.getLogger(jFFJDR.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+ } catch (InstantiationException ex) {
+ java.util.logging.Logger.getLogger(jFFJDR.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+ } catch (IllegalAccessException ex) {
+ java.util.logging.Logger.getLogger(jFFJDR.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+ } catch (javax.swing.UnsupportedLookAndFeelException ex) {
+ java.util.logging.Logger.getLogger(jFFJDR.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
+ }
+ //
+
+ /* Create and display the form */
+ java.awt.EventQueue.invokeLater(new Runnable() {
+ public void run() {
+ new jFFJDR().setVisible(true);
+ }
+ });
+ }
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JPanel jPChoix;
+ private javax.swing.JPanel jPInfos;
+ // End of variables declaration//GEN-END:variables
+}
diff --git a/JDR/src/jeuderole/JeuDeRolePolymorphisme.java b/JDR/src/jeuderole/JeuDeRolePolymorphisme.java
new file mode 100644
index 0000000..8fe62cb
--- /dev/null
+++ b/JDR/src/jeuderole/JeuDeRolePolymorphisme.java
@@ -0,0 +1,47 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Main.java to edit this template
+ */
+package jeuderole;
+
+import metier.*;
+
+/**
+ * Test Classe Jeu
+ * @author famille Thevenot
+ */
+public class JeuDeRolePolymorphisme {
+
+ /**
+ * @param args the command line arguments
+ */
+ public static void main(String[] args) {
+ Personnage Jinx = new Voleur("Jinx", "Jinx.jpg", 2, 4, "Poignard");
+ Personnage Ekko = new Guerrier("Ekko", "Ekko.jpg", 6, 4, "Hache");
+
+
+ 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")
+ };
+
+ Personnage Mel = new Sorcier("Mel", "Mel.jpg", 10, 5, "De laurier", enigmes1);
+ Personnage[] persos = {
+ Jinx, Ekko, Mel
+ };
+
+ System.out.println(Jinx.getNom()+"\nHP: "+Jinx.getDureeVie()+"\nEP: "+Jinx.getEnergie());
+ Jinx.varierDureeVie(5);
+ Jinx.varierEnergie(-10);
+ System.out.println(Jinx.getNom()+"\nHP: "+Jinx.getDureeVie()+"\nEP: "+Jinx.getEnergie());
+ Jinx.varierDureeVie(-5);
+ Jinx.varierEnergie(10);
+ System.out.println(Jinx.getNom()+"\nHP: "+Jinx.getDureeVie()+"\nEP: "+Jinx.getEnergie());
+
+ Mel.rencontrer(Jinx);
+ Jinx.rencontrer(Mel);
+ }
+
+}
diff --git a/JDR/src/metier/Enigme.java b/JDR/src/metier/Enigme.java
new file mode 100644
index 0000000..5e59a12
--- /dev/null
+++ b/JDR/src/metier/Enigme.java
@@ -0,0 +1,27 @@
+/*
+ * 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;
+
+/**
+ *
+ * @author steve.maingana
+ */
+public class Enigme {
+ private String question;
+ private String reponse;
+
+ public Enigme(String question, String reponse) {
+ this.question = question;
+ this.reponse = reponse;
+ };
+
+ public String getQuestion() {
+ return question;
+ }
+
+ public String getReponse() {
+ return reponse;
+ }
+}
diff --git a/JDR/src/metier/Guerrier.java b/JDR/src/metier/Guerrier.java
new file mode 100644
index 0000000..b4c8772
--- /dev/null
+++ b/JDR/src/metier/Guerrier.java
@@ -0,0 +1,137 @@
+package metier;
+import java.util.Objects;
+import javax.swing.Icon;
+import javax.swing.JOptionPane;
+
+/**
+ * Classe Guerrier, hérite de la classe Personnage
+ * @author Dominique_2
+ * @version 20170115
+ */
+public class Guerrier extends Personnage{
+ // Variable membre
+ private String arme;
+
+ /**
+ * Valorisation des variables membres
+ * @param nom nom du guerrier
+ * @param img nom de l'image représentant le guerrier
+ * @param energie valeur énergétique du guerrier
+ * @param dureeVie durée de vie du guerrier
+ * @param arme armu du guerrier
+ */
+ public Guerrier(String nom, String img, int energie, int dureeVie, String arme) {
+ super(nom, img, energie, dureeVie);
+ this.arme = arme;
+ }
+ /**
+ * Permet d'obtenir les valeurs des attributs de l'objet courant
+ * @return liste des attributs avec leurs valeurs
+ */
+ @Override
+ public String toString() {
+ return super.toString() + "\tArme=" + arme;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = super.hashCode() + (13 * hash + Objects.hashCode(this.arme));
+ return hash;
+ }
+ /**
+ * Comparaison de l'objet courant avec l'objet passé en paramètre
+ * @param obj objet à comparer avec l'objet courant
+ * @return true : les 2 objets sont identiques, false sinon
+ */
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final Guerrier other = (Guerrier) obj;
+ if (!Objects.equals(this.arme, other.arme)) {
+ return false;
+ }
+ if(!super.equals(obj)){
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Get the value of arme
+ *
+ * @return the value of arme
+ */
+ public String getArme() {
+ return arme;
+ }
+
+ /**
+ * Set the value of arme
+ *
+ * @param arme new value of arme
+ */
+ public void setArme(String arme) {
+ this.arme = arme;
+ }
+
+ /**
+ * Initie la rencontre avec un autre personnage
+ * @param unPerso un Personnage
+ * @return Message de rencontre
+ */
+ public String rencontrer(Personnage unPerso) {
+ String titre = this.getNom() + " rencontre " + unPerso.getNom() + " : Jeu de dés";
+ String message = "Es-tu prêt à me combattre "+ unPerso.getNom() +" ?";
+ Icon ImgDe = new javax.swing.ImageIcon(getClass().getResource("/img/des.jpg"));
+ JOptionPane.showMessageDialog(null, message, titre, JOptionPane.INFORMATION_MESSAGE, ImgDe);
+
+ int Attaquant = Jeu.genererNbAleatoire(1, 100);
+ int Defenseur = Jeu.genererNbAleatoire(1, 100);
+ message = this.getNom()+": "+Attaquant+" - "+ unPerso.getNom() +": "+ Defenseur +"\n\n";
+ Icon ImgVainqueur;
+ if (Attaquant > Defenseur) {
+ message += this.getNom() +" l'emporte !\n\n";
+ ImgVainqueur = new javax.swing.ImageIcon(getClass().getResource("/img/"+ this.getNom() +".jpg"));
+ unPerso.setEnergie(unPerso.getEnergie()-2);
+ unPerso.setDureeVie(unPerso.getDureeVie()-1);
+ } else if (Defenseur > Attaquant) {
+ message += unPerso.getNom() +" l'emporte !\n\n";
+ ImgVainqueur = new javax.swing.ImageIcon(getClass().getResource("/img/"+ unPerso.getNom() +".jpg"));
+ this.setEnergie(this.getEnergie()-1);
+ unPerso.setEnergie(unPerso.getEnergie()+2);
+ } else {
+ ImgVainqueur = null;
+ message += "Il y a égalité entre les parties !\n\n";
+ }
+ message += this.getNom() +": "+ this.getDureeVie()+" - "+ unPerso.getNom() +": "+ unPerso.getDureeVie();
+
+ JOptionPane.showMessageDialog(null, message, titre, JOptionPane.INFORMATION_MESSAGE, ImgVainqueur);
+ //Icon imgPerso = new javax.swing.ImageIcon(getClass().getResource("/img/" + this.getImg()));
+ //JOptionPane.showMessageDialog(null, message, titre, JOptionPane.INFORMATION_MESSAGE, imgPerso);
+ return message;
+ }
+
+ /**
+ * Saluer un personnage
+ * @param unPerso Un personnage
+ * @return Message de salutation
+ */
+ @Override
+ public String saluer(Personnage unPerso) {
+ String titre = this.getNom() + " salue " + unPerso.getNom();
+ String message = "Bonjour " + unPerso.getNom() + " , sauve-toi vite avant que je ne te frappe avec mon arme redoutable !";
+ //JOptionPane.showMessageDialog(null, message, titre, JOptionPane.INFORMATION_MESSAGE);
+ Icon imgPerso = new javax.swing.ImageIcon(getClass().getResource("/img/" + this.getImg()));
+ JOptionPane.showMessageDialog(null, message, titre, JOptionPane.INFORMATION_MESSAGE, imgPerso);
+ return message;
+ }
+}
diff --git a/JDR/src/metier/Jeu.java b/JDR/src/metier/Jeu.java
new file mode 100644
index 0000000..aa3280f
--- /dev/null
+++ b/JDR/src/metier/Jeu.java
@@ -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 Equipe1;
+ private ArrayList 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("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")
+ };
+
+ 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 DuelE1 = null;
+ ArrayList 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));
+}
+}
\ No newline at end of file
diff --git a/JDR/src/metier/Personnage.java b/JDR/src/metier/Personnage.java
new file mode 100644
index 0000000..af230fe
--- /dev/null
+++ b/JDR/src/metier/Personnage.java
@@ -0,0 +1,212 @@
+package metier;
+import java.util.Objects;
+import javax.swing.Icon;
+import javax.swing.JOptionPane;
+
+/**
+ * Classe Mère Personnage
+ * @author Dominique_2
+ * @version 20170215
+ */
+public class Personnage {
+ // Variables membres
+ private String nom;
+ private String img;
+ private int energie;
+ private int dureeVie;
+ /**
+ * Valorisation des variables membres
+ * @param nom nom du personnage
+ * @param img nom de l'image du personnage
+ * @param energie valeur énergétique
+ * @param dureeVie durée de vie, en année
+ */
+ public Personnage(String nom, String img, int energie, int dureeVie) {
+ this.nom = nom;
+ this.img = img;
+ this.energie = energie;
+ this.dureeVie = dureeVie;
+ }
+
+ public Personnage() {
+// throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
+ }
+ /**
+ * Permet d'obtenir les valeurs des attributs de l'objet courant
+ * @return liste des attributs avec leurs valeurs
+ */
+ @Override
+ public String toString() {
+ return "Nom\t" + nom + "\nEnergie\t" + energie + "\nDuree de vie\t" + dureeVie
+ + "\n"+this.getClass().getSimpleName();
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 3;
+ hash = 47 * hash + Objects.hashCode(this.nom);
+ hash = 47 * hash + Objects.hashCode(this.img);
+ hash = 47 * hash + this.energie;
+ hash = 47 * hash + this.dureeVie;
+ return hash;
+ }
+
+ /**
+ * Comparaison de l'objet courant avec l'objet passé en paramètre
+ * @param obj objet à comparer avec l'objet courant
+ * @return true : les 2 objets sont identiques, false sinon
+ */
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final Personnage other = (Personnage) obj;
+ if (this.energie != other.energie) {
+ return false;
+ }
+ if (this.dureeVie != other.dureeVie) {
+ return false;
+ }
+ if (!Objects.equals(this.nom, other.nom)) {
+ return false;
+ }
+ if (!Objects.equals(this.img, other.img)) {
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Get the value of energie
+ *
+ * @return the value of energie
+ */
+ public int getEnergie() {
+ return energie;
+ }
+
+ /**
+ * Set the value of energie
+ *
+ * @param energie new value of energie
+ */
+ public void setEnergie(int energie) {
+ this.energie = energie;
+ }
+
+ /**
+ * Get the value of dureeVie
+ *
+ * @return the value of dureeVie
+ */
+ public int getDureeVie() {
+ return dureeVie;
+ }
+
+ /**
+ * Set the value of dureeVie
+ *
+ * @param dureeVie new value of dureeVie
+ */
+ public void setDureeVie(int dureeVie) {
+ this.dureeVie = dureeVie;
+ }
+
+ /**
+ * Get the value of img
+ *
+ * @return the value of img
+ */
+ public String getImg() {
+ return img;
+ }
+
+ /**
+ * Set the value of img
+ *
+ * @param img new value of img
+ */
+ public void setImg(String img) {
+ this.img = img;
+ }
+
+
+ /**
+ * Get the value of nom
+ *
+ * @return the value of nom
+ */
+ public String getNom() {
+ return nom;
+ }
+
+ /**
+ * Set the value of nom
+ *
+ * @param nom new value of nom
+ */
+ public void setNom(String nom) {
+ this.nom = nom;
+ }
+
+ /**
+ * Initie la rencontre avec un autre personnage
+ * @param unPerso un Personnage
+ * @return Message de rencontre
+ */
+ public String rencontrer(Personnage unPerso) {
+ String titre = this.getNom() + " rencontre " + unPerso.getNom();
+ String message = "Bonjour " + unPerso.getNom() + " !";
+ JOptionPane.showMessageDialog(null, message, titre, JOptionPane.INFORMATION_MESSAGE);
+ //Icon imgPerso = new javax.swing.ImageIcon(getClass().getResource("/img/" + this.getImg()));
+ //JOptionPane.showMessageDialog(null, message, titre, JOptionPane.INFORMATION_MESSAGE, imgPerso);
+ return message;
+ }
+
+ /**
+ * Saluer un personnage
+ * @param unPerso Un personnage
+ * @return Message de salutation
+ */
+ public String saluer(Personnage unPerso) {
+ String titre = this.getNom() + " salue " + unPerso.getNom();
+ String message = "Salut " + unPerso.getNom() + " !";
+ // JOptionPane.showMessageDialog(null, message, titre, JOptionPane.INFORMATION_MESSAGE);
+ Icon imgPerso = new javax.swing.ImageIcon(getClass().getResource("/img/" + this.getImg()));
+ JOptionPane.showMessageDialog(null, message, titre, JOptionPane.INFORMATION_MESSAGE, imgPerso);
+ return message;
+ }
+
+ /**
+ * Varier l'énergie du personnage
+ * @param nb Nombre d'énergie à ajouter au personnage
+ */
+ public void varierEnergie(int nb) {
+ int energie = this.getEnergie()+nb;
+ if (energie < 0) {
+ this.setEnergie(0);
+ } else {
+ this.setEnergie(energie);
+ }
+ }
+
+ /**
+ * Varier la duree vie du personnage
+ * @param nb Nombre de vie à ajouter au personnage
+ */
+ public void varierDureeVie(int nb) {
+ int dureeVie = this.getDureeVie()+nb;
+ if (dureeVie < 0) {
+ this.setDureeVie(0);
+ } else {
+ this.setDureeVie(dureeVie);
+ }
+ }
+}
diff --git a/JDR/src/metier/Sorcier.java b/JDR/src/metier/Sorcier.java
new file mode 100644
index 0000000..a0043a0
--- /dev/null
+++ b/JDR/src/metier/Sorcier.java
@@ -0,0 +1,162 @@
+package metier;
+
+import java.util.Objects;
+import javax.swing.Icon;
+import javax.swing.JOptionPane;
+import static javax.swing.JOptionPane.DEFAULT_OPTION;
+import static javax.swing.JOptionPane.QUESTION_MESSAGE;
+
+/**
+ *
+ * @author Dominique_2
+ */
+public class Sorcier extends Personnage {
+
+ private String baguette;
+ private Enigme[] enigmes;
+
+ public Sorcier(String nom, String img, int energie, int dureeVie, String baguette, Enigme[] enigmes) {
+ super(nom, img, energie, dureeVie);
+ this.baguette = baguette;
+ this.enigmes = enigmes;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = super.hashCode() + (73 * hash + Objects.hashCode(this.baguette));
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final Sorcier other = (Sorcier) obj;
+ if (!Objects.equals(this.baguette, other.baguette)) {
+ return false;
+ }
+ if (!super.equals(obj)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + "\tBaguette=" + baguette + "\nNb Enigmes";
+ }
+
+ /**
+ * Get the value of baguette
+ *
+ * @return the value of baguette
+ */
+ public String getBaguette() {
+ return baguette;
+ }
+
+ public Enigme[] getEnigmes() {
+ return this.enigmes;
+ }
+
+ public void ajouterEnigme(Enigme e) {
+ int tailleEnigmes = this.enigmes.length+1;
+ Enigme[] enigmes = new Enigme[tailleEnigmes];
+ for (int i = 0; i < this.enigmes.length; i++) {
+ enigmes[i] = this.enigmes[i];
+ }
+ enigmes[this.enigmes.length] = e;
+
+ this.enigmes = enigmes;
+ };
+
+ /**
+ * Set the value of baguette
+ *
+ * @param baguette new value of baguette
+ */
+ public void setBaguette(String baguette) {
+ this.baguette = baguette;
+ }
+
+ /**
+ * Initie la rencontre avec un autre personnage
+ * @param unPerso un Personnage
+ * @return Message de rencontre
+ */
+ public String rencontrer(Personnage unPerso) {
+ // Message de défi à l'adversaire
+ String titre = this.getNom() + " rencontre " + unPerso.getNom() + " : Enigme";
+ String message = "Es-tu prêt à me combattre "+ unPerso.getNom() +" ?\n\nJeu d'énigme";
+
+ // Icone du jeu d'énigme à afficher
+ Icon iEnigme = new javax.swing.ImageIcon(getClass().getResource("/img/adj_1.jpg"));
+
+ // Envoi du message et de l'icone dans une boite de dialogue
+ JOptionPane.showMessageDialog(null, message, titre, JOptionPane.INFORMATION_MESSAGE, iEnigme);
+
+
+ // Numéro d'énigme aléatoire
+ int idQuestion = Jeu.genererNbAleatoire(0, this.enigmes.length-1);
+
+ // Message de choix du PFC
+ String question = this.enigmes[idQuestion].getQuestion();
+ String reponseVrai = this.enigmes[idQuestion].getReponse();
+
+ message = question;
+ // Choix du joueur avec des boutons
+ String reponse = (String) JOptionPane.showInputDialog(null, message, titre, QUESTION_MESSAGE, null, null, null);
+
+ // Comparaison des choix pour définir un vainqueur
+ message = "Ma question: "+ question +"\nTa réponse: "+ reponse +"\nLa réponse: "+ reponseVrai +"\n\n";
+
+ // Prendra en valeur l'image du vainqueur si vainqueur, il y a
+ Icon ImgVainqueur;
+
+ if (!reponse.equals(reponseVrai)) { // Si this Voleur gagne
+ // Message de victoire
+ message += this.getNom() +" l'emporte !\n\n";
+ ImgVainqueur = new javax.swing.ImageIcon(getClass().getResource("/img/"+ this.getNom() +".jpg"));
+
+ // Ajout d'un point d'énergie au Voleur
+ unPerso.setDureeVie(unPerso.getDureeVie()-2);
+ } else { // Si l'autre combattant gagne
+ // Message de victoire
+ message += unPerso.getNom() +" l'emporte !\n\n";
+ ImgVainqueur = new javax.swing.ImageIcon(getClass().getResource("/img/"+ unPerso.getNom() +".jpg"));
+
+ // Retrait d'un point d'énergie au Voleur
+ unPerso.setEnergie(this.getEnergie()+2);
+ }
+
+ // Message d'information sur les vies de chaque partie
+ message += this.getNom() +": "+ this.getDureeVie()+" - "+ unPerso.getNom() +": "+ unPerso.getDureeVie();
+
+ // Envoi du message et de l'icone dans une boîte du dialogue
+ JOptionPane.showMessageDialog(null, message, titre, JOptionPane.INFORMATION_MESSAGE, ImgVainqueur);
+ return message;
+ }
+
+ /**
+ * Saluer un personnage
+ * @param unPerso Un personnage
+ * @return Message de salutation
+ */
+ @Override
+ public String saluer(Personnage unPerso) {
+ String titre = this.getNom() + " salue " + unPerso.getNom();
+ String message = "Bonjour " + unPerso.getNom() + ", je t'ai jeté un sort, tu es désormais sous ma dépendance !";
+ //JOptionPane.showMessageDialog(null, message, titre, JOptionPane.INFORMATION_MESSAGE);
+ Icon imgPerso = new javax.swing.ImageIcon(getClass().getResource("/img/" + this.getImg()));
+ JOptionPane.showMessageDialog(null, message, titre, JOptionPane.INFORMATION_MESSAGE, imgPerso);
+ return message;
+ }
+}
diff --git a/JDR/src/metier/Voleur.java b/JDR/src/metier/Voleur.java
new file mode 100644
index 0000000..3980b52
--- /dev/null
+++ b/JDR/src/metier/Voleur.java
@@ -0,0 +1,189 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package metier;
+
+import java.util.Objects;
+import javax.swing.Icon;
+import javax.swing.JOptionPane;
+import static javax.swing.JOptionPane.DEFAULT_OPTION;
+import static javax.swing.JOptionPane.QUESTION_MESSAGE;
+
+/**
+ *
+ * @author Dominique_2
+ */
+public class Voleur extends Personnage{
+
+ private String outil;
+ private String [] outils={"Pierre","Feuille","Ciseaux"};
+
+ public Voleur(String nom, String img, int energie, int dureeVie, String outil) {
+ super(nom, img, energie, dureeVie);
+ this.outil = outil;
+ //this.butin = butin;
+ }
+
+ @Override
+ public int hashCode() {
+ int hash = 7;
+ hash = super.hashCode() + (29 * hash + Objects.hashCode(this.outil));
+ return hash;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final Voleur other = (Voleur) obj;
+ if (!Objects.equals(this.outil, other.outil)) {
+ return false;
+ }
+ if (!super.equals(obj)) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return super.toString() + "\t Outil=" + outil + "\nButin=";
+ }
+
+ /**
+ * Get the value of outil
+ *
+ * @return the value of outil
+ */
+ public String getOutil() {
+ return outil;
+ }
+
+ /**
+ * Set the value of outil
+ *
+ * @param outil new value of outil
+ */
+ public void setOutil(String outil) {
+ this.outil = outil;
+ }
+
+ public String[] getOutils() {
+ return outils;
+ }
+
+ public void setOutils(String[] outils) {
+ this.outils = outils;
+ }
+
+ private int jeuPFC(String J1, String J2) {
+ if (J1 == "Pierre" && J2 == "Feuille") {
+ return -1;
+ } else if (J1 == "Feuille" && J2 == "Pierre") {
+ return 1;
+ } else if (J1 == "Feuille" && J2 == "Ciseaux") {
+ return -1;
+ } else if (J1 == "Ciseaux" && J2 == "Feuille") {
+ return 1;
+ } else if (J1 == "Ciseaux" && J2 == "Pierre") {
+ return -1;
+ } else if (J1 == "Pierre" && J2 == "Ciseaux") {
+ return 1;
+ } else {
+ return 0;
+ }
+ }
+
+ /**
+ * Initie la rencontre avec un autre personnage
+ * @param unPerso un Personnage
+ * @return Message de rencontre
+ */
+ public String rencontrer(Personnage unPerso) {
+ // Message de défi à l'adversaire
+ String titre = this.getNom() + " rencontre " + unPerso.getNom() + " : Pierre Feuille Ciseaux";
+ String message = "Es-tu prêt à me combattre "+ unPerso.getNom() +" ?";
+
+ // Icone de PFC à afficher
+ Icon iPFC = new javax.swing.ImageIcon(getClass().getResource("/img/pierreFeuilleCiseaux.jpg"));
+
+ // Envoi du message et de l'icone dans une boite de dialogue
+ JOptionPane.showMessageDialog(null, message, titre, JOptionPane.INFORMATION_MESSAGE, iPFC);
+
+ // Message de choix du PFC
+ message = "Que choisis-tu, "+ unPerso.getNom() +" ?";
+
+ // Choix du joueur avec des boutons
+ int reponse = JOptionPane.showOptionDialog(null, message, titre, DEFAULT_OPTION, QUESTION_MESSAGE, iPFC, outils, 0);
+
+ // Choix aléatoire du Voleur
+ int choixVoleur = Jeu.genererNbAleatoire(0, 2);
+
+ // Comparaison des choix pour définir un vainqueur
+ int PFC = this.jeuPFC(this.outils[choixVoleur], this.outils[reponse]);
+ message = "Mon choix: "+ this.outils[choixVoleur] +" - Ton choix: "+ this.outils[reponse] +"\n\n";
+
+ // Prendra en valeur l'image du vainqueur si vainqueur, il y a
+ Icon ImgVainqueur;
+
+ if (PFC > 0) { // Si this Voleur gagne
+ // Message de victoire
+ message += this.getNom() +" l'emporte !\n\n";
+ ImgVainqueur = new javax.swing.ImageIcon(getClass().getResource("/img/"+ this.getNom() +".jpg"));
+
+ // Ajout d'un point d'énergie au Voleur
+ this.setEnergie(this.getEnergie()+1);
+
+ // Retrait d'un point d'énergie à l'autre combattant
+ unPerso.setEnergie(unPerso.getEnergie()-1);
+
+ // Retrait d'un point de vie à l'autre combattant
+ unPerso.setDureeVie(unPerso.getDureeVie()-1);
+ } else if (PFC < 0) { // Si l'autre combattant gagne
+ // Message de victoire
+ message += unPerso.getNom() +" l'emporte !\n\n";
+ ImgVainqueur = new javax.swing.ImageIcon(getClass().getResource("/img/"+ unPerso.getNom() +".jpg"));
+
+ // Retrait d'un point d'énergie au Voleur
+ this.setEnergie(this.getEnergie()-1);
+
+ // Ajout d'un point d'énergie à l'autre combattant
+ unPerso.setEnergie(unPerso.getEnergie()+1);
+ } else {
+ ImgVainqueur = null;
+ // Message d'égalité
+ message += "Il y a égalité entre les parties !\n\n";
+ }
+
+ // Message d'information sur les vies de chaque partie
+ message += this.getNom() +": "+ this.getDureeVie()+" - "+ unPerso.getNom() +": "+ unPerso.getDureeVie();
+
+ // Envoi du message et de l'icone dans une boîte du dialogue
+ JOptionPane.showMessageDialog(null, message, titre, JOptionPane.INFORMATION_MESSAGE, ImgVainqueur);
+ return message;
+ }
+
+ /**
+ * Saluer un personnage
+ * @param unPerso Un personnage
+ * @return Message de salutation
+ */
+ @Override
+ public String saluer(Personnage unPerso) {
+ String titre = this.getNom() + " salue " + unPerso.getNom();
+ String message = "Bonjour " + unPerso.getNom() + ", si tu baisses ton attention, je vais te dépouiller !";
+ //JOptionPane.showMessageDialog(null, message, titre, JOptionPane.INFORMATION_MESSAGE);
+ Icon imgPerso = new javax.swing.ImageIcon(getClass().getResource("/img/" + this.getImg()));
+ JOptionPane.showMessageDialog(null, message, titre, JOptionPane.INFORMATION_MESSAGE, imgPerso);
+ return message;
+ }
+}