Problème code jeu console shifumi en Dart

Bonjour,

Je débute en développement et j’ai choisi de me former sur Dart et Flutter.
Je me suis lancer comme défis de me faire un petit jeu pierre feuille ciseau pour mettre en application ce que j’ai appris jusque ici.

Cependant je ne sais pas pourquoi j’ai un problème dans mon code avec un do while. Ce que j’aimerais c’est quand j’appuis entre 1 et 3 le jeu continue et quand j’appuis sur 4 le jeu s’arrête. Mais quand j’appuis sur 4 que j’ai nommé choixQuitter la boucle continue. J’ai regardé le cours plein de fois même d’autre tuto je ne comprend pas.

Si un gentil personnage passe par là et veut bien prendre le temps de me corriger et m’expliquer ce serait super gentil voici le code :

import 'dart:io';
import 'dart:math';


void main() {
  int choixUtilisateur = 0;
  final choixQuitter = 4;
  do {
    do {
      print("Faites votre choix entre 1 et 3");

      print("1 - Pierre");
      print("2 - Feuille");
      print("3 - Ciseau");
      print("4 - Quitter");

      int? choixUtilisateur = int.parse(stdin.readLineSync()!);

      const pierre = 1;
      const feuille = 2;
      const ciseau = 3;
      int newScore = 0;
      int score = 0;

// RANDOM COMPUTER
//pas oublier import 'dart:math'; pour utiliser la fonction Random
// Créer une liste contenant les trois options possibles
// Générer aléatoirement le choix de l'ordinateur en utilisant la fonction nextInt de l'objet Random
      List<String> options = ["pierre", "feuille", "ciseau"];
      Random random = new Random();
      int computerIndex = random.nextInt(3);
      String computerChoice = options[computerIndex];

// Condition de victoire défaite
      if (choixUtilisateur == pierre && computerChoice == "ciseau") {
        print("Vous avez choisi $choixUtilisateur");
        print("Computer à choisi $computerChoice");
        newScore = score + 1;
        print("votre score est $newScore");
      } else if (choixUtilisateur == ciseau && computerChoice == "pierre") {
        print("Vous avez choisi $choixUtilisateur");
        print("Computer à choisi $computerChoice");
        newScore = score - 1;
        print("votre score est $newScore");
      } else if (choixUtilisateur == pierre && computerChoice == "pierre") {
        print("Vous avez choisi $choixUtilisateur");
        print("Computer à choisi $computerChoice");
        newScore = score;
        print("votre score est $newScore");
      } else if (choixUtilisateur == ciseau && computerChoice == "ciseau") {
        print("Vous avez choisi $choixUtilisateur");
        print("Computer à choisi $computerChoice");
        newScore = score;
        print("votre score est $newScore");
      } else if (choixUtilisateur == feuille && computerChoice == "pierre") {
        print("Vous avez choisi $choixUtilisateur");
        print("Computer à choisi $computerChoice");
        newScore = score + 1;
        print("votre score est $newScore");
      } else if (choixUtilisateur == pierre && computerChoice == "feuille") {
        print("Vous avez choisi $choixUtilisateur");
        print("Computer à choisi $computerChoice");
        newScore = score - 1;
        print("votre score est $newScore");
      } else if (choixUtilisateur == feuille && computerChoice == "feuille") {
        print("Vous avez choisi $choixUtilisateur");
        print("Computer à choisi $computerChoice");
        newScore = score;
        print("votre score est $newScore");
      } else if (choixUtilisateur == ciseau && computerChoice == "feuille") {
        print("Vous avez choisi $choixUtilisateur");
        print("Computer à choisi $computerChoice");
        newScore = score + 1;
        print("votre score est $newScore");
      } else if (choixUtilisateur == feuille && computerChoice == "ciseau") {
        print("Vous avez choisi $choixUtilisateur");
        print("Computer à choisi $computerChoice");
        newScore = score - 1;
        print("votre score est $newScore");
      }
      if (choixUtilisateur < 1 || choixUtilisateur > 4) {
        print("Saisie incorrect");
      }
      if (choixUtilisateur == choixQuitter) {
        print("A+ sous le bus");
      }
    } while (choixUtilisateur < 1 || choixUtilisateur > 3);
  } while (choixUtilisateur != choixQuitter);
}

PS : je sais que la partie des condition victoire et défaite pourrait être simplifié, mais j’y bosserais plus tard quand j’aurais reglé mon probleme de boucle ^^

Salut!
Je suis sur mon tel donc j’ai du mal à voir tout le code mais j’ai quand même vu une chose qui me dérange dans le code.
Tu as créé 2 fois la variable choixUtilisateur, une fois au tout début puis une autre fois à l’intérieur de la 2ème boucle.

Si tu revois le chapitre sur la portée des variables tu vas comprendre ce qui va se passer lors a que tu atteindras la fin du bloc, interne. Avant même le test de ta boucle elle même.

Je ne t’en dis pas plus pour le moment, considère ça comme un indice :wink:

Si vraiment tu ne trouves pas, dis le moi et je te dirai ce qu’il se passe exactement

J’ai modifié en créant la variable choiJeu je n’avais pas conscience d’avoir créer 2 fois la même variable je pensais que c’était la même :sweat_smile:

int? choixJeu = int.parse(stdin.readLineSync()!); juste cette partie servait à donner une valeur à ma variable. Merci pour cet indice.

Cependant mon problème de boucle je n’arrive pas à le régler même en changeant de place les while je n’arrive vraiment pas a comprendre

import ‹ dart:io ›;
import ‹ dart:math ›;

void main() {
int choixUtilisateur = 0;
final choixQuitter = 4;
do {
do {
print(« Faites votre choix entre 1 et 3 »);

  print("1 - Pierre");
  print("2 - Feuille");
  print("3 - Ciseau");
  print("4 - Quitter");

  int? choixJeu = int.parse(stdin.readLineSync()!);
  var choixUtilisateur = choixJeu;
  const pierre = 1;
  const feuille = 2;
  const ciseau = 3;
  int newScore = 0;
  int score = 0;

// RANDOM COMPUTER
//pas oublier import ‹ dart:math ›; pour utiliser la fonction Random
// Créer une liste contenant les trois options possibles
// Générer aléatoirement le choix de l’ordinateur en utilisant la fonction nextInt de l’objet Random
List options = [« pierre », « feuille », « ciseau »];
Random random = new Random();
int computerIndex = random.nextInt(3);
String computerChoice = options[computerIndex];

// Condition de victoire défaite
if (choixUtilisateur == pierre && computerChoice == « ciseau ») {
print(« Vous avez choisi $choixUtilisateur »);
print(« Computer à choisi $computerChoice »);
newScore = score + 1;
print(« votre score est $newScore »);
} else if (choixUtilisateur == ciseau && computerChoice == « pierre ») {
print(« Vous avez choisi $choixUtilisateur »);
print(« Computer à choisi $computerChoice »);
newScore = score - 1;
print(« votre score est $newScore »);
} else if (choixUtilisateur == pierre && computerChoice == « pierre ») {
print(« Vous avez choisi $choixUtilisateur »);
print(« Computer à choisi $computerChoice »);
newScore = score;
print(« votre score est $newScore »);
} else if (choixUtilisateur == ciseau && computerChoice == « ciseau ») {
print(« Vous avez choisi $choixUtilisateur »);
print(« Computer à choisi $computerChoice »);
newScore = score;
print(« votre score est $newScore »);
} else if (choixUtilisateur == feuille && computerChoice == « pierre ») {
print(« Vous avez choisi $choixUtilisateur »);
print(« Computer à choisi $computerChoice »);
newScore = score + 1;
print(« votre score est $newScore »);
} else if (choixUtilisateur == pierre && computerChoice == « feuille ») {
print(« Vous avez choisi $choixUtilisateur »);
print(« Computer à choisi $computerChoice »);
newScore = score - 1;
print(« votre score est $newScore »);
} else if (choixUtilisateur == feuille && computerChoice == « feuille ») {
print(« Vous avez choisi $choixUtilisateur »);
print(« Computer à choisi $computerChoice »);
newScore = score;
print(« votre score est $newScore »);
} else if (choixUtilisateur == ciseau && computerChoice == « feuille ») {
print(« Vous avez choisi $choixUtilisateur »);
print(« Computer à choisi $computerChoice »);
newScore = score + 1;
print(« votre score est $newScore »);
} else if (choixUtilisateur == feuille && computerChoice == « ciseau ») {
print(« Vous avez choisi $choixUtilisateur »);
print(« Computer à choisi $computerChoice »);
newScore = score - 1;
print(« votre score est $newScore »);
}
if (choixUtilisateur < 1 || choixUtilisateur > 4) {
print(« Saisie incorrect »);
}
if (choixUtilisateur == choixQuitter) {
print(« A+ sous le bus »);
}
} while (choixUtilisateur < 1 || choixUtilisateur > 3);
} while (choixUtilisateur != choixQuitter);
}