Problème variable int ( duplication )
Fermé
Zeptron
-
Modifié par KX le 20/11/2014 à 22:33
Zeptron Messages postés 4 Date d'inscription vendredi 21 novembre 2014 Statut Membre Dernière intervention 22 novembre 2014 - 22 nov. 2014 à 12:55
Zeptron Messages postés 4 Date d'inscription vendredi 21 novembre 2014 Statut Membre Dernière intervention 22 novembre 2014 - 22 nov. 2014 à 12:55
A voir également:
- Problème variable int ( duplication )
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Vba range avec variable ✓ - Forum VB / VBA
- Int(input()) - Forum Python
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
- Vba selection plage variable ✓ - Forum VB / VBA
2 réponses
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
20 nov. 2014 à 22:35
20 nov. 2014 à 22:35
Bonjour,
Très simple : tu déclares crf avant le premier if. De toute façon tu en as besoin ligne 4 dans zcm = crf + h;
Très simple : tu déclares crf avant le premier if. De toute façon tu en as besoin ligne 4 dans zcm = crf + h;
Zeptron
Messages postés
4
Date d'inscription
vendredi 21 novembre 2014
Statut
Membre
Dernière intervention
22 novembre 2014
21 nov. 2014 à 23:12
21 nov. 2014 à 23:12
Justement, en faisant cette manip, ils me mettent : "Duplicate local variable crf ", du coup je ne peux pas lancer le programme et je ne sais pas comment faire pour résoudre ce problème :(
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
21 nov. 2014 à 23:31
21 nov. 2014 à 23:31
Il faudrait voir ton code complet, avec quelques explications de ce que tu cherches à faire, mais dans tout les cas tu ne peux pas déclarer plusieurs fois le même nom de variable dans le même scope...
Zeptron
Messages postés
4
Date d'inscription
vendredi 21 novembre 2014
Statut
Membre
Dernière intervention
22 novembre 2014
21 nov. 2014 à 23:39
21 nov. 2014 à 23:39
Ce que je voudrais faire, c'est mettre le soin à la personne et calculer le nombre de points de vie qu'il a à la fin du tour. Cependant sa vie peut varier selon s'il a pris un coup critique ou pas. Et c'est cette partie que je n'arrive pas à résoudre.
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
21 nov. 2014 à 23:47
21 nov. 2014 à 23:47
"mettre le soin à la personne et calculer le nombre de points de vie qu'il a à la fin du tour"
Pour l'instant moi j'ai des vir, qmr, zcm, crf... ça ne me parle pas du tout !
Un conseil, donnes des noms très explicites à tes variables, en Java tu n'as (quasiment) pas de limitation en taille, alors il faut en profiter.
Si je prends ne serait-ce que les 4 premières lignes (mais je doute que ce soit vraiment les premières), que vaut crf ligne 4 ? Où est-il déclaré ? S'il est déjà déclaré, pourquoi le déclarer à nouveau plus loin dans ton code ?
Pour l'instant moi j'ai des vir, qmr, zcm, crf... ça ne me parle pas du tout !
Un conseil, donnes des noms très explicites à tes variables, en Java tu n'as (quasiment) pas de limitation en taille, alors il faut en profiter.
Si je prends ne serait-ce que les 4 premières lignes (mais je doute que ce soit vraiment les premières), que vaut crf ligne 4 ? Où est-il déclaré ? S'il est déjà déclaré, pourquoi le déclarer à nouveau plus loin dans ton code ?
int vir = 30; int qmr = 101; int h = d.nextInt(qmr-vir) + vir; int zcm = crf + h;
Zeptron
Messages postés
4
Date d'inscription
vendredi 21 novembre 2014
Statut
Membre
Dernière intervention
22 novembre 2014
Modifié par KX le 22/11/2014 à 12:05
Modifié par KX le 22/11/2014 à 12:05
J'ai remis à jour mon programme :
Ce que je veux c'est faire varier crf selon si le personnage que je joue s'est pris un coup critique ou pas ( crf aurait soit la valeur de la vie du personnage qui s'est pris des dmg normaux, ou soit la vie du personnage qui s'est pris un coup critique )
int attaquesbiremin = 30;
int attaquesbiremax = 65;
int attaquesbire = d.nextInt(attaquesbiremax - attaquesbiremin) + attaquesbiremin;
int g = 2;
int dmgcoupcritique = g * attaquesbire;
int coupcritique = 1;
int lowc = 1;
int highc = 11;
int proba = d.nextInt(highc - lowc) + lowc;
int attaquemin = 1;
int attaquemax = 4;
int tonattaque = d.nextInt(attaquemax - attaquemin) + attaquemin;
int viesanscc = t - attaquesbire;
int vieaveccc = t - dmgcoupcritique;
// t est la variable qui indique ta vie au début du combat
// viedebut est la variable qui indique la vie du sbire au début
int viesbire = viedebut - tonattaque;
int soinmin = 30;
int soinmax = 101;
int soin = d.nextInt(soinmax - soinmin) + soinmin;
int crf;
int vieaprèssoin = crf + soin;
System.out.println("Tour du sbire");
System.out.println();
if (coupcritique == proba)
{
System.out.println("COUP CRITIQUE");
System.out.println("Vous vous prenez deux fois les dégâts que vous deviez vous prendre");
System.out.println("Le sbire attaque et vous enlève de la vie : " + dmgcoupcritique);
System.out.println();
System.out.println("Votre vie passe à : " + vieaveccc);
int crf = vieaveccc;
}
else if (coupcritique < proba)
{
System.out.println("Le sbire attaque et vous enlève de la vie : " + attaquesbire);
System.out.println();
System.out.println("Votre vie passe à : " + viesanscc);
int crf = viesanscc;
}
System.out.println();
System.out.println("Votre tour");
System.out.println("Attaque, soin ou fuite");
System.out.println("Appuyez sur 1 pour attaque, 2 pour soin ou 3 pour fuite");
System.out.println();
int choixtontour = sl.nextInt();
switch (choixtontour)
{
case 1 :
System.out.println("Vous avez choisi : attaque");
System.out.println("Le sbire se reçoit des dégâts de : " + tonattaque);
System.out.println("Le sbire a maintenant une vie de : " + viesbire);
break;
case 2 :
System.out.println("Vous avez choisi : soin");
System.out.println("Votre soin vous récupère une vie de : " + soin);
System.out.println("Votre vie passe maintenant à : " + vieaprèssoin);
break;
case 3 :
System.out.println("Vous ne pouvez pas fuir");
System.out.println("Merci pour le tour gratuit à l'adversaire :)");
break;
}
Ce que je veux c'est faire varier crf selon si le personnage que je joue s'est pris un coup critique ou pas ( crf aurait soit la valeur de la vie du personnage qui s'est pris des dmg normaux, ou soit la vie du personnage qui s'est pris un coup critique )
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
22 nov. 2014 à 12:08
22 nov. 2014 à 12:08
Dans la mesure où tu as déjà
Attention : tu ne peux pas faire
int crfligne 26, tu ne dois pas déclarer à nouveau
int crflignes 39 et 46, il faut juste que tu mettes
crf = vieavecccou
crf = viesanscc;.
Attention : tu ne peux pas faire
vieaprèssoin = crf + soinligne 27 alors que crf n'a pas encore de valeur.