problème code java interaction entre deux classes
Bonjour,
Je suis novice en programmation JAVA
Je suis bloqué sur un code JAVA, je coudrais en fait que deux classes communiquent entre elles je m'explique avec cet extrait du code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| public Arme() {
this.BonusAttaque = LanceDe.de6() ;
this.MaxDegats = LanceDe.de6();
}
public String getArme()
{return arme;}
public int getBonusAttaque( )
{
return BonusAttaque;
}
public void infligerDegat(final Personnage adversaire ){
int degats = Math.min(LanceDe.de6(), this.MaxDegats);
adversaire.recoitDommage(degats);
}
}
class PersonnageArme extends Personnage {
Arme arme = new Arme();
PersonnageArme testarme3 = new PersonnageArme("testarme" , 10, 23);
PersonnageArme(String otherName){
super(otherName);
}
public PersonnageArme(String otherName, int othernbpointsvie, int autreclassearmure){
super(otherName, othernbpointsvie, autreclassearmure);
}
public boolean attaque(final PersonnageArme adversaire){
final boolean resultat = LanceDe.de20() > (adversaire.getClasseDArmure()-this.arme.getBonusAttaque());
if(resultat){
this.arme.infligerDegat(adversaire);
}
return resultat;
} |
Ce que je souhaiterais en faite que la classe Are communique avec PersonageArme() c'est a dire à partir de PersonnageArme() utiliser les méthodes de la classe Arme()
Mais je n'arrive pas à trouver de solutions
Merci à tous
Communication entre deux classes
Bonjour,
Merci beaucoup pour ta réponse
En faite c'et la classe PersonnageArme() qui doit utiliser les méthodes de la classe Arme()
c'et résolu en fait par ceci
par création de l'objet arme et par l’accès via l'objet arme à toutes les méthodes de la classe Arme
Code:
1 2
| [this.testarme3.getNom().getClasseDArmure();
this.testarme3.getNom().getPointDeVie(); |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
| class Arme {
/*public static final int BONUS_ATTAQUE = 10;
public static final int MAX_DEGATS= 10;*/
Arme arme;
/*private final int arme;*/
private final int BonusAttaque;
private final int MaxDegats;
public Arme(int anotherBonusAttaque, int anotherMaxdegats) {
BonusAttaque = anotherBonusAttaque;
MaxDegats = anotherMaxdegats;
}
public Arme() {
this.BonusAttaque = LanceDe.de6() ;
this.MaxDegats = LanceDe.de6();
}
public Arme getArme()
{return arme;}
public int getBonusAttaque( )
{
return BonusAttaque;
}
public void infligerDegat(final Personnage adversaire ){
int degats = Math.min(LanceDe.de6(), this.MaxDegats);
adversaire.recoitDommage(degats);
}
}
class PersonnageArme extends Personnage {
Arme arme = new Arme();
PersonnageArme testarme3 = new PersonnageArme("testarme", 10, 23);
PersonnageArme(String otherName){
super(otherName);
}
public PersonnageArme(String otherName, int othernbpointsvie, int autreclassearmure){
super(otherName, othernbpointsvie, autreclassearmure);
}
public boolean attaque(final PersonnageArme adversaire){
final boolean resultat = LanceDe.de20() > (adversaire.getClasseDArmure()-this.arme.getBonusAttaque());
if(resultat){
this.arme.infligerDegat(adversaire);
this.arme.getArme().getBonusAttaque();
}
return resultat;
} |
cette partie est résolu, là j'ai un autre souci vu que la classe PersonnageArme hérite de la classe Personnage
je n'arrive pas à accéder aux méthodes de la classe Personnage comme par exemple
Code:
1 2
| this.testarme3.getNom().getClasseDArmure();
this.testarme3.getNom().getPointDeVie(); |
==========> j'accède à getNom() mais je ne peux pas accéder à getPointDeVie() erreur
Citation:
the method is undefined for type string
(il m'indique une erreur)
je poste mon code pour plus de clarté.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264
| class LanceDe {
private static int deNFaces(final int n){
return (int) (Math.random()*n+1);
}
public static int de20(){
return deNFaces(20);
}
public static int de6(){
return deNFaces(6);
}
}
class Personnage {
/*public static final int MAX_NBPOINTVIE = 12;
public static final int MAX_CLASSARM = 16;*/
public String nom;
public int nbpointsvie;
public int classearmure;
Personnage personne = new Personnage();
public Personnage(String otherName, int othernbpointsvie, int autreclassearmure){
nom = otherName;
nbpointsvie = othernbpointsvie;
classearmure = autreclassearmure;
}
public Personnage(String otherName){
nom = otherName;
nbpointsvie = LanceDe.de6() + LanceDe.de6();
classearmure = LanceDe.de20();
}
public Personnage(){}
public String getNom()
{
return nom;
}
public int getPointDeVie()
{
return nbpointsvie ;
}
public int getClasseDArmure()
{
return classearmure;
}
public boolean estVivant(){
return nbpointsvie > 0;
}
public void recoitDommage(final int dmg){
nbpointsvie = nbpointsvie - dmg;
}
/*
* La méthode attaque() permet à un personnage d'attaquer un personnage.
*/
public boolean attaque(final Personnage adversaire){
final boolean resultat = LanceDe.de20() > 0 && LanceDe.de20() > adversaire.getClasseDArmure();
adversaire.recoitDommage(1);
return resultat;
}
@Override
public String toString(){
return "<"+this.getNom()+" : "+this.getPointDeVie()+" > ";
}
}
class Arme {
/*public static final int BONUS_ATTAQUE = 10;
public static final int MAX_DEGATS= 10;*/
Arme arme;
/*private final int arme;*/
private final int BonusAttaque;
private final int MaxDegats;
public Arme(int anotherBonusAttaque, int anotherMaxdegats) {
BonusAttaque = anotherBonusAttaque;
MaxDegats = anotherMaxdegats;
}
public Arme() {
this.BonusAttaque = LanceDe.de6() ;
this.MaxDegats = LanceDe.de6();
}
public Arme getArme()
{return arme;}
public int getBonusAttaque( )
{
return BonusAttaque;
}
public void infligerDegat(final Personnage adversaire ){
int degats = Math.min(LanceDe.de6(), this.MaxDegats);
adversaire.recoitDommage(degats);
}
}
class PersonnageArme extends Personnage {
Arme arme = new Arme();
PersonnageArme testarme3 = new PersonnageArme("testarme", 10, 23);
PersonnageArme(String otherName){
super(otherName);
}
public PersonnageArme(String otherName, int othernbpointsvie, int autreclassearmure){
super(otherName, othernbpointsvie, autreclassearmure);
}
public boolean attaque(final PersonnageArme adversaire){
final boolean resultat = LanceDe.de20() > (adversaire.getClasseDArmure()-this.arme.getBonusAttaque());
if(resultat){
this.arme.infligerDegat(adversaire);
this.arme.getArme().getBonusAttaque();
this.testarme3.getNom().getClasseDArmure();
this.testarme3.getNom().getPointDeVie(); }
return resultat;
}
@Override
public String getNom(){
return super.getNom()+" ( **armé** ) ";
}
} |