Boucle While

liliRose -  
Doctor C Messages postés 630 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour mes ami(e)s, je suis débutante en java et on m a demandé de faire l'exercice suivant et j'ai énormément de mal à le faire :(

Dans le jeu du 13, 2 joueurs retirent à tour de role 1,2 ou 3 allumette d'un tas de 13 allumettes. Le joueur qui retire la dernière allumette à gagné.

Ecrire la classe qui implément ce jeu conformément à l'exemple suivant :

Au tour du joueur 0. Il reste 13 allumette(s). Combien en retirez vous? 3
Au tour du joueur 1. Il reste 10 allumette(s). Combien en retirez vous? 2
Au tour du joueur 0. Il reste 8 allumette(s). Combien en retirez vous? 3
Au tour du joueur 1. Il reste 5 allumette(s). Combien en retirez vous? 1
Au tour du joueur 0. Il reste 4 allumette(s). Combien en retirez vous? 3
Au tour du joueur 1. Il reste 1 allumette(s). Combien en retirez vous? 1
le joueur 0 a perdu


Pour cela j'ai commencé à faire ceci :

import java.util.Scanner;

class Ex5{

public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int allumetteTotal=13;
int allumetteRestante, allumetteRetiree;
String j0, j1;
allumetteRestante=allumetteTotal-allumetteRetiré

while(allumetteRestante !=1){
System.out.println("Au tour du joueur j0");
j0=sc.nextLine();
System.out.println("Au tour du joueur j1");
j1=sc.nextLine();
System.out.println("Il reste "+allumetteRestante+" allumette(s)");
System.out.println("Combien en retirez vous? ");
sc.nextInt().allumetteRetiree();
}



Je vous demanderais de l'indulgence si je me suis trompé, je suis encore nouvelle et j'espère que vous pourriez prendre un peu de votre temps pour m'expliquer de la plus simple des manières. :)

Merci :)

4 réponses

  1. Doctor C Messages postés 630 Date d'inscription   Statut Membre Dernière intervention   400
     
    Le code que j'ai écrit n'est pas valide, c'est du pseudo-code, il ne compilera pas. Tu dois l'adapter en java.

    Pour expliquer davantage, voici une version un peu mieux écrite des conditions de joueur en cours (J'avais une condition que j'avais oublié de supprimer, ça devrait être plus clair maintenant):

    // Avant la boucle
    joueur_en_cours = "Joueur 0"


    // Dans la boucle
    Si ( joueur_en_cours == "Joueur 0")
      joueur_en_cours = "Joueur 1"
    Sinon
      joueur_en_cours = "Joueur 0"


    Au début du programme, la variable
    joueur_en_cours
    est initialisée à "Joueur 0" ce qui veut dire que c'est au tour du joueur 0 de jouer. Lors du premier passage dans la boucle, le joueur 0 joue et à la fin de la boucle, la variable
    joueur_en_cours
    est changée pour "Joueur 1" ce qui signifie que c'est à son tour de jouer (le prochain passage dans la boucle).

    À chaque tour de boucle, la variable "joueur_en_cours" change pour l'autre joueur, ce qui simule le changement de joueur.
    1
  2. Doctor C Messages postés 630 Date d'inscription   Statut Membre Dernière intervention   400
     
    Voici du pseudo code qui illustre une manière de procéder:

    nombre d'allumettes restantes = 13
    Joueur en cours = 0

    while ( nombre d'allumettes restantes > 0 )
    {
    //Afficher la ligne à la console
    Afficher "Au tour du joueur" + Joueur en cours + ". Il reste " + nombre d'allumettes restantes + "allumette(s). Combien en retirez-vous?"

    //Obtenir le nombre d'allumettes retirées
    Nombre d'allumettes retirées = Lire le nombre entré()

    //Calculer le nombre d'allumettes restantes
    Nombre d'allumettes restantes = Nombre d'allumettes restantes - Nombre d'allumettes retirées

    //Déterminer quel joueur sera le prochain à jouer
    Si ( Joueur en cours == Aucun)
    Joueur en cours = Joueur 0
    Sinon si ( Joueur en cours == Joueur 0)
    Joueur en cours = Joueur 1
    Sinon
    Joueur en cours = Joueur 0
    }

    Afficher "Le joueur" + Joueur en cours + " a perdu."

    Pour résumer, on retire un nombre x d'allumettes à chaque tour dans la boucle tout en gardant une trace de qui est en train de jouer. Ça devrait au moins te donner quelques idées.

    Bonne chance!
    0
  3. liliRose
     
    je comprend beaucoup c'est Super ! mais je ne comprend pas tes blocs de conditions au sujet des joueurs en cours et même quand j'essaye de compiler cela ne marche pas comment faire?
    0
  4. liliRose
     
    Ah d'accord je te remercie de m'avoir éclairer. Mon problème est résolu et merci encore à toi Doctor C :)
    0
    1. Doctor C Messages postés 630 Date d'inscription   Statut Membre Dernière intervention   400
       
      Mais ça me fait plaisir! ;)
      0