Dépot
BIN
JDR/src/img/Ambresa.jpg
Normal file
After Width: | Height: | Size: 6.7 KiB |
BIN
JDR/src/img/Barbare04.jpg
Normal file
After Width: | Height: | Size: 6.6 KiB |
BIN
JDR/src/img/Caitlyn.jpg
Normal file
After Width: | Height: | Size: 9.8 KiB |
BIN
JDR/src/img/Combat.jpg
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
JDR/src/img/CombatPerdu.jpg
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
JDR/src/img/Ekko.jpg
Normal file
After Width: | Height: | Size: 8.3 KiB |
BIN
JDR/src/img/Guerrier05.jpg
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
JDR/src/img/Guerrier08.jpg
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
JDR/src/img/Guerrier10.jpg
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
JDR/src/img/Guerrier12.jpg
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
JDR/src/img/Jayce.jpg
Normal file
After Width: | Height: | Size: 7.7 KiB |
BIN
JDR/src/img/Jinx.jpg
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
JDR/src/img/Mel.jpg
Normal file
After Width: | Height: | Size: 8.5 KiB |
BIN
JDR/src/img/Simone.JPG
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
JDR/src/img/Sorcier02.JPG
Normal file
After Width: | Height: | Size: 6.6 KiB |
BIN
JDR/src/img/Sorciere1.jpg
Normal file
After Width: | Height: | Size: 7.5 KiB |
BIN
JDR/src/img/Viktor.jpg
Normal file
After Width: | Height: | Size: 6.3 KiB |
BIN
JDR/src/img/adj_1.jpg
Normal file
After Width: | Height: | Size: 9.1 KiB |
BIN
JDR/src/img/des.jpg
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
JDR/src/img/famille_1.jpg
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
JDR/src/img/magie.jpg
Normal file
After Width: | Height: | Size: 36 KiB |
BIN
JDR/src/img/panoramix.gif
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
JDR/src/img/pierreFeuilleCiseaux.jpg
Normal file
After Width: | Height: | Size: 13 KiB |
66
JDR/src/interfaces/jFFJDR.form
Normal 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>
|
102
JDR/src/interfaces/jFFJDR.java
Normal 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
|
||||||
|
}
|
47
JDR/src/jeuderole/JeuDeRolePolymorphisme.java
Normal 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("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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
27
JDR/src/metier/Enigme.java
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
137
JDR/src/metier/Guerrier.java
Normal 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
@ -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("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<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));
|
||||||
|
}
|
||||||
|
}
|
212
JDR/src/metier/Personnage.java
Normal 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
@ -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
@ -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;
|
||||||
|
}
|
||||||
|
}
|