IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Problème variable pourcentage


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Par défaut Problème variable pourcentage
    Bonjour, j’ai besoin de vous je désespère depuis tout à l’heure sur ce problème, en gros j’ai une classe générique Etre avec un nom et des points de vie, j’ai une sous-classe chamane qui a en plus de la force (f) et qui peut augmenter le nb de point de vie d’un personnage selon son pourcentage de force, et une sous-classe vampire qui fait baisser le nb de point de vie selon sa toxicité.
    Le problème étant que je n’arrive pas à monter la vie des personnages (en l’occurrence Alpha ici), car la variable porCent ne veut pas prendre de valeur à virgule, si je mets une force de 100, porCent=1 mais si je mets une force à 10, il est égale à zéro.
    J’ai essayé de remplacer double par float mais même résultat.

    Classe Etre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    public class Etre {
    	String nom;
    	float vie;
    	//Constructeur
    	Etre(String n,int v){
    		this.nom=n;
    		this.vie=v;
    	}
    	String getName() {
    		return this.nom;
    	}
    	float getLife() {
    		return this.vie;
    	}
    	boolean isALive() {
    		return this.vie>0;
    	}
    	boolean isDead() {
    		return this.vie==0;
    	}
    	void increaseLife(int life) {
    		this.vie+=life;
    	}
    	void decreaseLife(int life) {
    		this.vie-=life;
    	}
    	float killPeople() {
    		float lifeAfterDead =this.vie;
    		this.vie=0;
    		return lifeAfterDead;
    	}
    }
    CLasse Chaman
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public class Chamane extends Etre{
    	int force; 
    	//constructeur
    	Chamane(String n,int v, int f){
    		super(n, v);
    		this.force=f;
    	}
    	void healPeople(Etre autre) {
    		if(autre.vie>0) { //si la cible est en vie 
    			float porCent =this.force/100; // le chamane lui rajoute force% de la vie du soigné
    			autre.vie+=autre.vie*porCent;
    		}
    		else { // Si la cible est morte
    			autre.vie=1; //le chaman donne de sa vie au soigné
    			this.vie-=1;
     
    		}
    	}
    }
    Classe Vampire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public class Vampire extends Etre {
    	int toxicite;
    	//constructeur
    	Vampire(String n, int v, int t){
    		super(n,v);
    		this.toxicite=t;
    	}
    	void beatPeople(Etre autre){
    		if(this.vie==0) { //si la vie du vampire est vide il ne se passe rien
    			autre.vie=autre.vie;
    		}
    		else if(autre.vie>this.vie) { // si la personne attaqué a plus de vie que le vampire
    			this.vie+=toxicite;  	  // le vampire lui aspire autant de vie qu'il a de toxicité
    			autre.vie-=toxicite;
    		}
    		else if(autre.vie<toxicite) { //si la personne attaqué à moins de vie que le vampire a de
    			this.vie+=autre.vie;	  // toxicité alors il lui aspire tout ce qu'il lui reste
    			autre.vie=0;
    		}
    	}
    }
    Main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class exo3 {
    	public static void main(String[]args) {
    		Etre alpha=new Etre("Alpha",100); //création être Alpha
    		Chamane inca=new Chamane("Inca", 20,10); // création d'un Chamane 
    		Vampire vlad=new Vampire("Vlad",40,5); // création d'un vampire
    		System.out.println("vie ALpha "+alpha.vie); //affichage vie Alpha avant action
    		vlad.beatPeople(alpha); // attaque de alpha par vlad
    		System.out.println("vie ALpha "+alpha.vie); //affichage de vie après attaque
    		inca.healPeople(alpha); // soin de alpha par inca
    		System.out.println("vie ALpha "+alpha.vie); //affichage des vie de alpha après soin
    	}
    }

  2. #2
    Membre actif Avatar de abdennour bouaicha
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2009
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2009
    Messages : 98
    Par défaut
    salut,
    je croie qu,il faut mettre le tout en float , regarde:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    float vie;
    	//Constructeur
    	Etre(String n,int v){
    		this.nom=n;
    		this.vie=v;
    	}
    un variable de type float reçois un int dans le constructeur
    même si c'est juste en codage et ne fait d'exception mais ce n'est pas propre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    public class exp {
        public static void main( String[] args ) {
            Etre alpha = new Etre( "Alpha", 100 ); // création être Alpha
            Chamane inca = new Chamane( "Inca", 20, 10 ); // création d'un Chamane
            Vampire vlad = new Vampire( "Vlad", 40, 5 ); // création d'un vampire
            System.out.println( "vie ALpha " + alpha.vie ); // affichage vie Alpha
                                                            // avant action
            vlad.beatPeople( alpha ); // attaque de alpha par vlad
            System.out.println( "vie ALpha " + alpha.vie ); // affichage de vie
                                                            // après attaque
            inca.healPeople( alpha ); // soin de alpha par inca
            System.out.println( "vie ALpha " + alpha.vie ); // affichage des vie de
                                                            // alpha après soin
        }
    }
     
    class Etre {
        String nom;
        float  vie;
     
        // Constructeur
        Etre( String n, float v ) {
            this.nom = n;
            this.vie = v;
        }
     
        String getName() {
            return this.nom;
        }
     
        float getLife() {
            return this.vie;
        }
     
        boolean isALive() {
            return this.vie > 0;
        }
     
        boolean isDead() {
            return this.vie == 0;
        }
     
        void increaseLife( float life ) {
            this.vie += life;
        }
     
        void decreaseLife( float life ) {
            this.vie -= life;
        }
     
        float killPeople() {
            float lifeAfterDead = this.vie;
            this.vie = 0;
            return lifeAfterDead;
        }
    }
     
    class Chamane extends Etre {
        float force;
     
        // constructeur
        Chamane( String n, float v, float f ) {
            super( n, v );
            this.force = f;
        }
     
        void healPeople( Etre autre ) {
            if ( autre.vie > 0 ) { // si la cible est en vie
                float porCent = this.force / 100; // le chamane lui rajoute force%
                                                  // de la vie du soigné
                autre.vie += autre.vie * porCent;
            }
            else { // Si la cible est morte
                autre.vie = 1; // le chaman donne de sa vie au soigné
                this.vie -= 1;
     
            }
        }
    }
     
    class Vampire extends Etre {
        float toxicite;
     
        // constructeur
        Vampire( String n, float v, float t ) {
            super( n, v );
            this.toxicite = t;
        }
     
        void beatPeople( Etre autre ) {
            if ( this.vie == 0 ) { // si la vie du vampire est vide il ne se passe
                                   // rien
                autre.vie = autre.vie;
            }
            else if ( autre.vie > this.vie ) { // si la personne attaqué a plus de
                                               // vie que le vampire
                this.vie += toxicite; // le vampire lui aspire autant de vie qu'il a
                                      // de toxicité
                autre.vie -= toxicite;
            }
            else if ( autre.vie < toxicite ) { // si la personne attaqué à moins de
                                               // vie que le vampire a de
                this.vie += autre.vie; // toxicité alors il lui aspire tout ce qu'il
                                       // lui reste
                autre.vie = 0;
            }
        }
    }

  3. #3
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float porCent =this.force/100;
    La division d'un int par un int donne un int en Java (si le dividende est inférieure au diviseur, la division donne forcément 0). Pour obtenir un float, il suffit que l'un des deux nombres (dividende ou diviseur) soit un float, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float porCent =this.force/100f;
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 6
    Par défaut
    Merci beaucoup le problème est résolu grâce à vous !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de pourcentage ...
    Par K20 dans le forum Langage
    Réponses: 4
    Dernier message: 07/12/2005, 01h59
  2. Problème variable et objet
    Par Hacken dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 07/09/2005, 14h10
  3. [javascript] Problème variable globale !!!!
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 08/08/2005, 16h41
  4. [Rave report 5.1.3][delphi 7] Probléme variable PIVar
    Par GILLESKLEIN dans le forum Rave
    Réponses: 2
    Dernier message: 05/02/2005, 15h27
  5. problème variable extern
    Par HeKaz dans le forum C
    Réponses: 14
    Dernier message: 08/01/2003, 01h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo