Problème récupération Objet pour un jeu

oulanos Messages postés 25 Date d'inscription vendredi 14 avril 2006 Statut Membre Dernière intervention 10 mai 2010 - 26 juil. 2009 à 15:10
oulanos Messages postés 25 Date d'inscription vendredi 14 avril 2006 Statut Membre Dernière intervention 10 mai 2010 - 27 juil. 2009 à 16:35
Bonjour tout le monde!


Je viens vers vous car j'ai un peu de mal à vrai dire, je ne suis pas très bon en Java et j'aurai besoin de conseils svp:

Voila mon problème: j'ai décidé de m'entrainer en créant un Jeu style 2 équipes qui s'affrontent avec 3 personnages chacun qui sont barbare, prêtre et mage. Jusque là rien de très original (c'est pour m'entrainer).

J'arrive à créer mes objets en leur attribuant les bons points de vie et tout le problème c'est que je ne sais pas comment faire pour avoir par exemple 3 personnages différents avec chacun leurs attributs.. je m'explique : dans le code que j'ai fait, je me retrouve à choisir quelle classe de personnage je veux jouer et ça m'envoie à chaque fois sur une méthode qui me renvoi elle même mes points de vie et d'attaques différent selon la classe que j'ai choisi. Mais à chaque fois il ne reste qu'un objet, le plus récent en somme et je ne peux pas le réutiliser pour la suite de mon programme.


Voici mon code : Le programme débute donc par mon Main.java

public class Main {

/**
 * @param args
 */



public static void main(String[] args) {

// TODO Auto-generated method stub


System.out.println("Entrez le nom de votre equipe svp:");

String nom_de_equipe_1 = Clavier.lireString();

System.out.println("Vous avez entré: "+nom_de_equipe_1);


System.out.println("Nous allons maintenant créer les 3 personnages de votre équipe");



System.out.println("Choisissez la classe de votre personnage 1 svp :");
System.out.println("");

System.out.println("1) Barbare : possède 5pv supplémentaire et +3 attaque");
System.out.println("2) Prêtre : peut soigner 4pv tous les deux tours");
System.out.println("3) Mage : peut utiliser une attaque magique qui cause +5 dégats");


personnage perso = new personnage();



for(int i =1;i < 4;i++){
System.out.println("Entrez votre choix pour le personnage n° : "+i);
int metier = Clavier.lireInt();

String nom_personnage = "personnage"+"_"+i;

switch(metier){

case 1:
System.out.println("Vous avez choisi un Barbare!");
perso.ajout_classe_personnage(metier, nom_personnage, i);
break;

case 2:
System.out.println("Vous avez choisi un Prêtre!");
perso.ajout_classe_personnage(metier, nom_personnage, i);
break;

case 3:
System.out.println("Vous avez choisi un Mage!");
perso.ajout_classe_personnage(metier, nom_personnage, i);
break;

} // fin de la boucle switch




}// fin de la boucle for





}




public personnage creation_objet_personnage(int vie, int attaque, String attaque_speciale, String metier, String nom_personnage){



personnage  perso = new personnage();

perso.nom_du_personnage = nom_personnage;



System.out.println("");
System.out.println("Récapitulatif de votre personnage :");
System.out.println("- Votre classe : "+metier);
System.out.println("- Vos points de vie :"+vie);
System.out.println("- Vos points d'attaque :"+attaque);
System.out.println("- Vos attaques spéciales :"+attaque_speciale);

return perso;
}




}





Et ensuite j'ai aussi personnage.java




import java.util.ArrayList;
import java.util.List;


public class personnage {
List results = new ArrayList();
equipe equipe1 = new equipe();
int vie_base = 15;
int attaque_base = 4;
String attaque_speciale_base = "non";
String nom_du_personnage = "";



/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub

}




public void  ajout_classe_personnage(int resultat, String nom_personnage, int i){

String metier = null;



if(i == 1){

if(resultat == 1){
metier = "Barbare";
int vie = vie_base + 5;   // initialise la vie du barbare avec 5 points de vie de plus que la base (normal c'est un gros bourrin).
 int attaque = attaque_base + 2; // et comme tous les gros bourrins il fait beaucoup de dégats... normal quoi ;)
 String attaque_speciale = attaque_speciale_base;
 Main toto = new Main();


 toto.creation_objet_personnage(vie, attaque, attaque_speciale, metier, nom_personnage);
}

if(resultat == 2){
metier = "Prêtre";
String attaque_speciale = "soigner";
Main toto = new Main();


 toto.creation_objet_personnage(vie_base, attaque_base, attaque_speciale, metier, nom_personnage);
}

if(resultat == 3){
metier = "Mage";
Main toto = new Main();


 toto.creation_objet_personnage(vie_base, attaque_base, attaque_speciale_base, metier, nom_personnage);
}

}





//#####################################################################################################################################//



if(i == 2){

if(resultat == 1){
metier = "Barbare";
int vie = vie_base + 5;   // initialise la vie du barbare avec 5 points de vie de plus que la base (normal c'est un gros bourrin).
 int attaque = attaque_base + 2; // et comme tous les gros bourrins il fait beaucoup de dégats... normal quoi ;)
 String attaque_speciale = attaque_speciale_base;
 Main toto = new Main();


 toto.creation_objet_personnage(vie, attaque, attaque_speciale, metier, nom_personnage);
}

if(resultat == 2){
metier = "Prêtre";
String attaque_speciale = "soigner";
Main toto = new Main();


 toto.creation_objet_personnage(vie_base, attaque_base, attaque_speciale, metier, nom_personnage);
}

if(resultat == 3){
metier = "Mage";
Main toto = new Main();


 toto.creation_objet_personnage(vie_base, attaque_base, attaque_speciale_base, metier, nom_personnage);
}

}


//#####################################################################################################################################//




if(i == 3){

if(resultat == 1){
metier = "Barbare";
int vie = vie_base + 5;   // initialise la vie du barbare avec 5 points de vie de plus que la base (normal c'est un gros bourrin).
 int attaque = attaque_base + 2; // et comme tous les gros bourrins il fait beaucoup de dégats... normal quoi ;)
 String attaque_speciale = attaque_speciale_base;
 Main toto = new Main();


 toto.creation_objet_personnage(vie, attaque, attaque_speciale, metier, nom_personnage);
}

if(resultat == 2){
metier = "Prêtre";
String attaque_speciale = "soigner";
Main toto = new Main();


 toto.creation_objet_personnage(vie_base, attaque_base, attaque_speciale, metier, nom_personnage);
}

if(resultat == 3){
metier = "Mage";
Main toto = new Main();


toto.creation_objet_personnage(vie_base, attaque_base, attaque_speciale_base, metier, nom_personnage);
}


}



//equipe1.ajout_personnage_dans_equipe(1, results);




}




}








Ah et j'utilise aussi Clavier.java pour gérer les touches au clavier :

import java.io.*;

/**
 * Le principal but de la classe Clavier est de proposer des
 * entr&#65533;es clavier sans exception. On propose ainsi
 * une op&#65533;ration &#65533;l&#65533;mentaire de lecture sur l'entr&#65533;e standard. Cette
 * classe permet d'&#65533;viter de rentrer dans les d&#65533;tails complexes des
 * entr&#65533;es-sorties.
 */

public class Clavier {
  /**
   * Cette m&#65533;thode lit un entier dans une cha&#65533;ne de caract&#65533;res.
   * Elle s'occupe des &#65533;ventuelles exceptions. Si une exception
   * (NumberFormatException) est attrap&#65533;e, la m&#65533;thode renvoie l'entier
   * nul et affiche un message d'erreur.  
   * @param s la cha&#65533;ne de caract&#65533;res dans laquelle on lit
   * @return l'entier lu (0 en cas d'erreur) */
  public static int toInt(String s) {
    int result=0;
    try {
      result=Integer.valueOf(s).intValue();
    } catch (NumberFormatException e) {
      System.err.println("Erreur de format: "+e.getMessage());
    }
    return result;
  }

  /**
   * Cette m&#65533;thode lit un r&#65533;el (double) dans une cha&#65533;ne de caract&#65533;res.
   * Elle s'occupe des &#65533;ventuelles exceptions. Si une exception
   * (NumberFormatException) est attrap&#65533;e, la m&#65533;thode renvoie le r&#65533;el
   * nul et affiche un message d'erreur.  
   * @param s la cha&#65533;ne de caract&#65533;res dans laquelle on lit
   * @return le r&#65533;el lu (0 en cas d'erreur) 
   */
  public static double toDouble(String s) {
    double result=0;
    try {
      result=Double.valueOf(s).doubleValue();
    } catch (NumberFormatException e) {
      System.err.println("Erreur de format: "+e.getMessage());
    }
    return result;
  }

  /**
   * Cette m&#65533;thode lit une ligne sur l'entr&#65533;e standard et s'occupe des
   * &#65533;ventuelles exceptions. Si une exception (IOException) est
   * attrap&#65533;e, la m&#65533;thode renvoie une cha&#65533;ne vide et affiche un
   * message d'erreur.
   * @return la cha&#65533;ne lue (vide en cas d'erreur) 
   */
  public static String lireString() {
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    String result;
    try {
      result=br.readLine();
    } catch (IOException e) {
      System.err.println("Erreur de lecture: "+e.getMessage());
      result="";
    }
    return result;
  }

  /**
   * Cette m&#65533;thode lit un entier sur l'entr&#65533;e standard. 
   * Elle s'occupe des &#65533;ventuelles exceptions et utilise la m&#65533;thode
   * toInt pour obtenir un entier. S'il y a un probl&#65533;me de lecture,
   * la m&#65533;thode affiche un message d'erreur et renvoie 0.
   * @return l'entier lu (0 en cas d'erreur)
   */
  public static int lireInt() {
    return toInt(lireString());
  }

  /**
   * Cette m&#65533;thode lit un r&#65533;el sur l'entr&#65533;e standard. 
   * Elle s'occupe des &#65533;ventuelles exceptions et utilise la m&#65533;thode
   * toDouble pour obtenir un r&#65533;el. S'il y a un probl&#65533;me de lecture,
   * la m&#65533;thode affiche un message d'erreur et renvoie 0.
   * @return le r&#65533;el lu (0 en cas d'erreur)
   */
  public static double lireDouble() {
    return toDouble(lireString());
  }
  
  /**
   * Cette m&#65533;thode lit un bool&#65533;en sur l'entr&#65533;e standard. 
   * Elle s'occupe des &#65533;ventuelles exceptions et renvoie false
   * s'il y a un probl&#65533;me de lecture.
   * @return le bool&#65533;en lu (false en cas d'erreur)
   */
  public static boolean lireBoolean() {
    return Boolean.valueOf(lireString()).booleanValue();
  }
  
  /**
   * Cette m&#65533;thode lit un caract&#65533;re sur l'entr&#65533;e standard. 
   * Elle s'occupe des &#65533;ventuelles exceptions et renvoie NULL
   * s'il y a un probl&#65533;me de lecture.
   * N.B.: si plusieurs caract&#65533;res sont entr&#65533;s, c'est le premier
   * qui est pris en compte.
   * @return le (premier) caract&#65533;re lu (caract&#65533;re sp&#65533;cial NULL en cas d'erreur)
   */
  public static char lireChar() {
    char result='\u0000';
    try {
      result=lireString().charAt(0);
    } catch (IndexOutOfBoundsException e) {
      System.err.println("Erreur de lecture: aucun caract&#65533;re entr&#65533;");
    }
    return result;
  }
  
}





Merci par avance si vous pouvez m'indiquer le moyen qui me permettrait de pouvoir utiliser ce que j'ai fait pour ensuite pouvoir accéder aux objets. Parce que là je me retrouve coincé à ne pouvoir les utiliser que dans les méthodes qui les créé (creation_objet_personnage par exemple)

1 réponse

oulanos Messages postés 25 Date d'inscription vendredi 14 avril 2006 Statut Membre Dernière intervention 10 mai 2010
27 juil. 2009 à 16:35
Personne? ça doit pourtant être facile pour quelqu'un qui s'y connait.. je crois
0
Rejoignez-nous