Jump to content

[Java]un autre problème :D


eYo

Recommended Posts

Les do while ne sont pas obligatoires...tu peux passer par des while...faut juste faire gaffe au valeurs de tes variables avant d'entrer dans la boucle :cartonrouge:

Là j'ai modifié le code pour n'utiliser que des while...et il faut que je mette quelque chose qui me permette de rentrer dans la boucle une première fois...ici, il faut juste que le nombre d'allumettes du joueur ou de l'ordinateur soit plus grand que le nombre d'allumettes du plateau de jeu.

import java.util.Scanner;

public class NewClass {

public static void main(String[] args) {

	Scanner sc = new Scanner(System.in);

	int nombreAllumettesTotal = 17;
	int nombreAllumettesJoueur = 0;
	int nombreAllumettesOrdinateur = 0;
	int tourJoueurInt = 0;

	boolean tourJoueur;

	//Détermine qui commencera le premier :-)
	tourJoueurInt = (int) (Math.random() * 2) + 1;

	// On fait le tirage au sort pour savoir qui commence
	if (tourJoueurInt == 1) {
		tourJoueur = true;
		System.out.println("Vous commence la partie");
	} else {
		tourJoueur = false;
		System.out.println("C'est l'ordinateur qui commence la partie");
	}

	// On commence la boucle du jeu
	while (nombreAllumettesTotal > 0) {
		System.out.println("Il reste " + nombreAllumettesTotal + " allumettes.");

		//Si c'est au joueur
		if (tourJoueur == true) {
			System.out.println("A vous de jouer");

			nombreAllumettesJoueur = nombreAllumettesTotal + 1;

			//Sert à déterminer si le nombre d'allumettes saisi est correct
			//vis à vis du nombre d'allumettes restant sur le plateau
			while (nombreAllumettesJoueur > nombreAllumettesTotal) {

				//On lui demande de saisir un nombre d'allumettes compris entre 1 et 3
				while ((nombreAllumettesJoueur < 1) || (nombreAllumettesJoueur > 3)) {
					System.out.println("Combien d'allumettes enlever ? (entre 1 et 3)");
					nombreAllumettesJoueur = sc.nextInt();
				} 
				//A ce point, on sait que l'utilisateur a saisi un nombre entre 1 et 3
				//mais il peut être supérieur au nombre d'allumettes restant sur le plateau

			} 
			//A ce point, on est certain que le nombre d'allumettes saisi est
			//compris entre 1 et 3, et que ce nombre est inférieur au nombre
			//d'allumettes restant sur le plateau

			//On modifie le nomnbre d'alumettes
			nombreAllumettesTotal = nombreAllumettesTotal - nombreAllumettesJoueur;

			System.out.println("Vous avez enlevé : " + nombreAllumettesJoueur);
		} else {
			System.out.println("L'ordinateur joue.");

			nombreAllumettesOrdinateur = nombreAllumettesTotal + 1;

			//Sert à déterminer si le nombre d'allumettes saisi est correct
			//vis à vis du nombre d'allumettes restant sur le plateau
			while (nombreAllumettesOrdinateur > nombreAllumettesTotal) {

				//L'ordinateur choisi le nombre d'allumettes qu'il enlève du plateau
				nombreAllumettesOrdinateur = (int) (Math.random() * 3) + 1;

			}
			//A ce point, on est certain que le nombre d'allumettes calculé est
			//compris entre 1 et 3, et que ce nombre est inférieur au nombre
			//d'allumettes restant sur le plateau

			//On modifie le nombre d'allumettes
			nombreAllumettesTotal = nombreAllumettesTotal - nombreAllumettesOrdinateur;

			System.out.println("L'ordinateur a enlevé " + nombreAllumettesOrdinateur + " allumettes.");
		}
		//A ce point, soit l'ordinateur vient de jouer, soit le joueur vient de jouer

		//On indique le prochain joueur
		tourJoueur = !tourJoueur;
	}
	//A ce point, on est certain qu'on a un gagnant...

	//si true...c'est le joueur qui a joué en dernier
	if (tourJoueur == false) {
		System.out.println("L'ordinateur à gagné");
	} //sinon, c'est l'ordinateur qui a joué en dernier
	else {
		System.out.println("Vous avez gagné");
	}
}
}

Link to comment
Share on other sites

En cours les profs racontent pas mal de conneries...à la fac et dans nombre d'école d'ingé généraliste qui se donnent une vague coloration informatique, les profs sont souvent incompétents...et ne veulent pas mettre leurs cours à jour...bien entendu il n'aiment pas qu'on le leur rappelle...en DUT j'ai failli ne pas être admis en deuxième année à cause de ça alors que j'étais dans les premiers de la promo :cartonrouge:

idem sur un plus gros projet sur lequel j'ai bossé en stage...il n'arretent pas de changer d'archi et de technologies...du coup leur truc est inutilisable...et quand tu propose une solution pour rendre le truc utilisable, on te réponds que tu n'est qu'un petit con inexpérimenté...qu'il a fallu des milliers d'heures pour en arriver là et tout le toutim...là ou je suis maintenant, toutes les idées sont les bienvenues...après comme il n'y a que des têtes bien faites et que la gamme de produit sur laquelle on bosse commence à être mature...bah du coup...là, j'accepte de me faire traiter de petit con inexpérimenté...même si je bosse quasiment 15 - 16h par jour pour refaire mon retard... :D

Link to comment
Share on other sites

Après c'est aussi une question de goûts personnels.

Mais comme le while est + utilisé, on le lit + facilement.

Mais la différence reste quand même que le do while exécute au moins une instruction alors que le while n'en fera aucune si la condition n'est pas réalisée. Et c'est généralement cette fonctionnalité qu'on recherche.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...