http://pastebin.com/WAnA6ATu Voici ma version du jeu de MarienBed , j'aimerais rajouter la détection d'un nombre flottant en plus du mauvais interval. Vous auriez une solution à proposer Pour être clair si l'utilisateur saisit 4.6 par exemple , le jeu indique une erreur et se ferme.
Je connais pas le Ruby, mais tu peut essayer de lire un nombre à virgule et si il a une partie décimale tu gère ton érreur, sinon tu l'utilises comme un entier.
Plusieurs problèmes dans ton code :
- N est un entier et n'a pas de raison de changer de type durant ton exécution, donc pas besoin de le caster en entier à chaque tour de boucle.
- Plutôt que de caster ton i à chaque manipulation, caste-le en int dès que tu le récupères (gets.chomp.to_i).
- Relancer le jeu à la moindre erreur, c'est un peu dur. Pourquoi pas une boucle qui ne se libère pas tant que l'input n'est pas correct ?
- Si tu fais un cast en int à la réception, les nombre flottants entrés seront tronqués. C'est un comportement plus acceptable que de vérifier si un flottant est rentré et lancer une erreur, non ? Tu peux aussi utiliser .round pour un arrondissement à l'entier inférieur/supérieur.
Si toutefois tu veux vraiment vérifier le type de nombre entré, tu peux utiliser .kind_of?(Float) ou .instance_of?(Float).
- T'as du inverser quelques valeurs à la fin.
Quelles valeurs L'algo me vient d'un livre de basic de 1980
Relancer le jeu à la moindre erreur, c'est un peu dur. Pourquoi pas une boucle qui ne se libère pas tant que l'input n'est pas correct ?
Je veux bien indique moi sommairement comment l'implémenter je voulais faire ça à la base.
Bon finalement j'ai réussi à faire un truc , il remet le nombre d'allumettes comme il faut après avoir indiqué l'erreur.