Booleen, if pour plus ou moins (c) - C - Programmation
Marsh Posté le 08-03-2014 à 16:40:49
Je vois un problème dans ton code: Il faut que tu entoures le contenu du "if" et du "else" par les accolades. En l'absence de ces accolades, seule la première ligne de chaque bloc est considéré comme étant dans la condition.
Du coup dans ton premier code ça fonctionne parce qu'il n'y a qu'une ligne, par contre dans ton seconde j'imagine que le compilateur doit te jeter parce que ton if et ton else sont séparés par des instructions qui n'ont rien à faire là
Donc:
Code :
|
Marsh Posté le 08-03-2014 à 20:21:48
WiiDS a écrit : Je vois un problème dans ton code: Il faut que tu entoures le contenu du "if" et du "else" par les accolades. En l'absence de ces accolades, seule la première ligne de chaque bloc est considéré comme étant dans la condition. |
Yes, dans le cours ça y est, mais je ne sais pas pourquoi j'ai été amené à les enlever, et je n'ai pas pensé a les remettre !
Bon, mais du coup je me retrouve avec un autre problème, la valeur max ici : ( j'ai modifié le code pour éviter les booleens )
Code :
|
me laisse la valeur a 0, est-ce que c'est du au fait qui apparaisse dans la condition if ? (malgré le faite que normalement elle ne doit pas être prise en compte ?)
Marsh Posté le 08-03-2014 à 21:11:56
Bonjour !
Vous déclarez la valeur dans la boucle, donc elle est perdue une fois que vous sortez de cette boucle (et si vous avez déclaré une variable avec le même nom à l'extérieur de cette boucle, cette variable ne sera pas modifiée.
Bonne continuation !
Marsh Posté le 08-03-2014 à 22:10:22
Farian a écrit : Bonjour ! |
Vous parlez de la boucle while du premier code ? si oui, non, la valeur est déclaré avant cette boucle, sinon, comment je peut contourner ça ? Etant donnée qu'il faut que ce soit, soit l'un, soit l'autre système de génération du nombre a trouver ?
Marsh Posté le 08-03-2014 à 22:15:10
Non, je parle de celle du if : les accolades forment un bloc dans lequel on peut déclarer des variables qui ont comme durée de vie le bloc, et qui masquent éventuellement des variables de même nom qui ont été déclarées en dehors du bloc.
(Erreur de ma part, j'ai parlé de boucle alors que je voulais parler de bloc )
Bonne continuation !
Marsh Posté le 08-03-2014 à 22:34:43
Farian a écrit : Non, je parle de celle du if : les accolades forment un bloc dans lequel on peut déclarer des variables qui ont comme durée de vie le bloc, et qui masquent éventuellement des variables de même nom qui ont été déclarées en dehors du bloc. |
Je comprend en fait la valeur de max est mémorisé tant qu'on ne sort pas du "else if" en gros, une fois sorti il redevient 0, j'en déduit donc que ce n'est pas la bonne méthode pour arriver a mes fin, ou ça l'est mais demande plus de réflexion ?
Marsh Posté le 08-03-2014 à 22:51:31
C'est tout à fait ça, si la variable est déjà déclarée en dehors, il suffit de ne pas la redéclarer, et vous la modifiez dans le if et le else.
J'espère être clair et bien comprendre vos interrogations
Marsh Posté le 08-03-2014 à 23:40:30
Tout a fait, a un détail près :
La variable MAX n'est pas déclarer avant, mais uniquement en aléatoire sur le IF, et en manuel sur le else if !
Je posterais le code complet demain ce sera plus clair
Marsh Posté le 09-03-2014 à 12:18:08
Donc comme je disais :
Code :
|
Elle n'est donc logiquement déclarée qui si "IF" ou "ELSE IF"
Le problème vient donc juste que la valeur s'efface a moment de sortir du bloc ?
Mais si les instructions sont oubliées une fois sortie du bloc, pourquoi le mode solo fonctionne ? J'ai du rater un truc, mais j'ai beau chercher je ne vois pas pourquoi ça fonctionne pour le choix 1, et pas le 2 ?
Marsh Posté le 09-03-2014 à 13:45:50
Code :
|
Pk tu veux qu'il choisisse le nombre max ? Il faut qu'il choisisse le nombre inconnu non ?
Et mettre &nombreinconnu à la place de &MAX
Le premier choix marche parce que la variable nombreinconnu est déclarée globalement en haut.
Le deuxième non parce que la valeur de MAX est juste connue dans ton bloc.
Il faudrait le sortir et le mettre global
Marsh Posté le 09-03-2014 à 18:12:27
Je pense que l'idée de son jeu, c'est de choisir une intervalle dans laquelle le nombre inconnu sera choisi, d'où la lecture d'un int pour set le max
Marsh Posté le 10-03-2014 à 00:51:24
Je@nb a écrit : |
Raaaaah, je m'en veut de ne pas y avoir pensé plus tôt effectivement ça devrais fonctionner
WiiDS a écrit : Je pense que l'idée de son jeu, c'est de choisir une intervalle dans laquelle le nombre inconnu sera choisi, d'où la lecture d'un int pour set le max |
Ca c'est pour la 3eme optimisation, en mode solo, le joueur peut choisir 3 niveau de difficultés, mais j'y suis pas encore
Marsh Posté le 10-03-2014 à 20:26:59
Bon bah voilà, les 3 niveaux de difficultés sont réglé aussi
Un grand merci a vous du coup de pouce
Marsh Posté le 08-03-2014 à 15:16:15
Bonjour a vous, je débute dans la programmation, c'est tout frais je m'y suis mis il y à 3 jours sur mon temps libre.
J'ai donc suivi les cours d'Open Classroom, et arrivé a l'exercice du "plus ou moins" il nous propose de l'amélioré... (en ajoutant un compteur de coup, un système de niveau ect)
J'ai donc fait le jeux, en ayant besoin d'un petit coups de pouce cependant (un doute sur la manière de procéder) mais maintenant il fonctionne !
Donc pour la sélection du mode 1 ou 2 joueurs, il conseil d'utilisé des booleens !
J'ai donc mon code qui donne ça :
Maintenant j'aimerais y ajouter ce fameux mode 1 ou 2 joueurs, et là ça bloque, je pensais faire :
Mais visiblement int ne fonctionne pas après un if ?
Je voudrais, si je joueur choisis le mode solo, que l'ordi tire un nombre au hasard, si le joueur choisis le mode versus, que l'utilisateur choisisse un nombre max !