Boucle While

Fermé
liliRose - 10 déc. 2013 à 15:21
Doctor C Messages postés 627 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 - 10 déc. 2013 à 19:12
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

Doctor C Messages postés 627 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 398
10 déc. 2013 à 17:58
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
Doctor C Messages postés 627 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 398
10 déc. 2013 à 16:04
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
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
Ah d'accord je te remercie de m'avoir éclairer. Mon problème est résolu et merci encore à toi Doctor C :)
0
Doctor C Messages postés 627 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 398
10 déc. 2013 à 19:12
Mais ça me fait plaisir! ;)
0