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

BIN
JDR/src/img/Ambresa.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

BIN
JDR/src/img/Barbare04.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

BIN
JDR/src/img/Caitlyn.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

BIN
JDR/src/img/Combat.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
JDR/src/img/CombatPerdu.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
JDR/src/img/Ekko.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

BIN
JDR/src/img/Guerrier05.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
JDR/src/img/Guerrier08.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
JDR/src/img/Guerrier10.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

BIN
JDR/src/img/Guerrier12.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
JDR/src/img/Jayce.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

BIN
JDR/src/img/Jinx.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
JDR/src/img/Mel.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

BIN
JDR/src/img/Simone.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
JDR/src/img/Sorcier02.JPG Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

BIN
JDR/src/img/Sorciere1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

BIN
JDR/src/img/Viktor.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

BIN
JDR/src/img/adj_1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

BIN
JDR/src/img/des.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
JDR/src/img/famille_1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
JDR/src/img/magie.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
JDR/src/img/panoramix.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
<Properties>
<Property name="defaultCloseOperation" type="int" value="3"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
<SyntheticProperty name="generateCenter" type="boolean" value="false"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
<SubComponents>
<Container class="javax.swing.JPanel" name="jPChoix">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
<BorderConstraints direction="Center"/>
</Constraint>
</Constraints>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<EmptySpace min="0" pref="400" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<EmptySpace min="0" pref="200" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
</Container>
<Container class="javax.swing.JPanel" name="jPInfos">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription">
<BorderConstraints direction="East"/>
</Constraint>
</Constraints>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<EmptySpace min="0" pref="420" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<EmptySpace min="0" pref="310" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
</Container>
</SubComponents>
</Form>

View File

@ -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")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//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();
}// </editor-fold>//GEN-END:initComponents
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* 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);
}
//</editor-fold>
/* 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
}

View File

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

View File

@ -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;
}
}

View File

@ -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;
}
}

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));
}
}

View File

@ -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);
}
}
}

162
JDR/src/metier/Sorcier.java Normal file
View File

@ -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;
}
}

189
JDR/src/metier/Voleur.java Normal file
View File

@ -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;
}
}