Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1531 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Aide pour programme java

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide pour programme java

n°2247257
julienr66
Posté le 04-01-2015 à 01:29:51  profilanswer
 

Bonsoir,  :bounce:  
 
Je viens sur ce forum pour demandé un peu d'aide, Je suis en Terminale Scientifique en Option ISN,  
Durant 6 mois (très peu d'heure par semaine) on nous a enseigné les bases java sur Eclipse donc mon niveau est pas  
très haut ^^ Pour la fin d'année nous devons présentés à un jury un programme créer par binome entre Janvier et Mai.
J'ai pensé à programmer le jeu des petits chevaux, mais malheureusement rien qu'avec le début je cale sur quelque chose :

 
import java.util.Scanner;
import java.util.Random;
 
public class petits_chevaux {
 
 public static void main(String[] args) {
   
   
Scanner dlc=new Scanner(System.in);
 
System.out.println("Bienvenue sur la plateforme de jeu << Les petits chevaux catalan >>" );
System.out.println("Desirez-vous lire les règles du jeu?" );
String a="oui";
String b="non";
String choix=dlc.nextLine();
 
do {System.out.println("Veuillez répondre par oui ou non s'il vous plait" );
choix=dlc.nextLine();}
while (choix.compareTo(a)||(choix.compareTo(b)));
 
if (choix.equals(a)) {
System.out.println(" Voici les règles: \n \n Deux joueurs vont devoir s'affronter, Chacun d'entre eux disposent d'un camps \n avec deux pions. Afin de commencer, les joueurs vont"
  + " tirer aléatoirement un \n dé à 6 faces. A chaque fois qu'un joueur fera le chiffre 6, celui-ci pourra \n sortir son pion sur le plateau. **** Le plateau est constitué d'un"
  + " parcours \n de cases qui se suivent successivement. Le but est alors simple, le premier \n joueur arrivant à finir le parcours avec tout ces pions "
  + "gagne la partie. \n Cependant il existe quelques règles supplémentaire. Lors du parcours, \n aucun pion ne peut en dépasser un autre, si il arrive que deux pions \n soient l'un derrière "
  + " l'autre, le seul moyen de passer est de faire \n un lancé de dé qui permettra de tomber sur la même case et ainsi donc \n manger le pion du camps adverse qui retournera dans son camps innitial. \n"
  + " Si deux de vos pions sont proches l'un l'autre, il n'est pas possible \n pour le second pion de dépasser le premier. Si l'un des joueurs effectue un 6, \n il pourra alors relancer le dé."
  + "A la fin du parcours, il y aura un échelle de chiffre \n à gravir, pour chaque marche de l'echelle il faudra effectuer un lancé de dé qui \n équivaut au chiffre de la case."
  + " Attention ! Si votre pion est posé sur la case de \n départ du parcours du joueur adverse, et que ce dernier fait un 6 votre pion sera \n alors manger automatiquement "
  + "et renvoyer directement dans votre camps. Bon jeu " );}
else { System.out.println(" Nous pouvons commencer à lancer une partie ?" );
 
}}}
 
 
Le problème dans mon programme est ce que j'ai surligné en rouge/gras, pour comparé un String avec deux autres String en même temps, comment fait -on s'il vous plait? et y aurait-il deja une autre erreur que je n'aurais pas perçut?  :ouch:  
 
Cordialement  
 
( merci de ne pas se moquer de mon niveau comme certaines autres personnes sur d'autre forum svp )
:hello:  
 
 

mood
Publicité
Posté le 04-01-2015 à 01:29:51  profilanswer
 

n°2247263
OrcusZ
Pro AMD | .Net lover
Posté le 04-01-2015 à 10:35:39  profilanswer
 

Bonjour,
 
Hum les bases du Java sans l'algorithmie c'est assez drôle ( mais bon on peut pas en vouloir à l'Etat de faire des efforts )
 
Alors ta première partie de code est bien tu as juste un soucis au niveau de l'analyse de ce que l'utilisateur devra saisir.
 
Ce que tu souhaite ici, c'est demander à l'utilisateur s'y il souhaite lire le règlement, simplement après avoir récupérer la saisie de l'utilisateur avec  

Code :
  1. choix=dlc.nextLine();}
  2. //fait juste un if else
  3. if(choix.compareTo("oui" ){
  4. //tu affiche de réglement
  5. }
  6. else{
  7. //tu demande si il veux jouer ou tu lance la partie, ça c'est toi qui vois  
  8. }


 
en espérant t'avoir aider.


---------------
Made you your own sentence without believing that of the others...
n°2247265
leonhard
Posté le 04-01-2015 à 10:52:06  profilanswer
 

julienr66 a écrit :

Bonsoir,  :bounce:  
 
Je viens sur ce forum pour demandé un peu d'aide, Je suis en Terminale Scientifique en Option ISN,  
Durant 6 mois (très peu d'heure par semaine) on nous a enseigné les bases java sur Eclipse donc mon niveau est pas  
très haut ^^ Pour la fin d'année nous devons présentés à un jury un programme créer par binome entre Janvier et Mai.
J'ai pensé à programmer le jeu des petits chevaux, mais malheureusement rien qu'avec le début je cale sur quelque chose :

 
import java.util.Scanner;
import java.util.Random;
 
public class petits_chevaux {
 
 public static void main(String[] args) {
   
   
Scanner dlc=new Scanner(System.in);
 
System.out.println("Bienvenue sur la plateforme de jeu << Les petits chevaux catalan >>" );
System.out.println("Desirez-vous lire les règles du jeu?" );
String a="oui";
String b="non";
String choix=dlc.nextLine();
 
do {System.out.println("Veuillez répondre par oui ou non s'il vous plait" );
choix=dlc.nextLine();}
while (choix.compareTo(a)||(choix.compareTo(b)));
 
if (choix.equals(a)) {
System.out.println(" Voici les règles: \n \n Deux joueurs vont devoir s'affronter, Chacun d'entre eux disposent d'un camps \n avec deux pions. Afin de commencer, les joueurs vont"
  + " tirer aléatoirement un \n dé à 6 faces. A chaque fois qu'un joueur fera le chiffre 6, celui-ci pourra \n sortir son pion sur le plateau. **** Le plateau est constitué d'un"
  + " parcours \n de cases qui se suivent successivement. Le but est alors simple, le premier \n joueur arrivant à finir le parcours avec tout ces pions "
  + "gagne la partie. \n Cependant il existe quelques règles supplémentaire. Lors du parcours, \n aucun pion ne peut en dépasser un autre, si il arrive que deux pions \n soient l'un derrière "
  + " l'autre, le seul moyen de passer est de faire \n un lancé de dé qui permettra de tomber sur la même case et ainsi donc \n manger le pion du camps adverse qui retournera dans son camps innitial. \n"
  + " Si deux de vos pions sont proches l'un l'autre, il n'est pas possible \n pour le second pion de dépasser le premier. Si l'un des joueurs effectue un 6, \n il pourra alors relancer le dé."
  + "A la fin du parcours, il y aura un échelle de chiffre \n à gravir, pour chaque marche de l'echelle il faudra effectuer un lancé de dé qui \n équivaut au chiffre de la case."
  + " Attention ! Si votre pion est posé sur la case de \n départ du parcours du joueur adverse, et que ce dernier fait un 6 votre pion sera \n alors manger automatiquement "
  + "et renvoyer directement dans votre camps. Bon jeu " );}
else { System.out.println(" Nous pouvons commencer à lancer une partie ?" );
 
}}}
 
 
Le problème dans mon programme est ce que j'ai surligné en rouge/gras, pour comparé un String avec deux autres String en même temps, comment fait -on s'il vous plait? et y aurait-il deja une autre erreur que je n'aurais pas perçut?  :ouch:  
 
Cordialement  
 
( merci de ne pas se moquer de mon niveau comme certaines autres personnes sur d'autre forum svp )
:hello:  
 
 


 
 
 
Pour autant que je me souvienne, la méthode "compareTo()" permet une comparaison lexicographique (plus petit ou plus grand). Normalement cette méthode retourne une valeur entière qui devrait être -1, 0 ou 1 et pas une valeur booléenne. Dans ton cas je pense que tu devrais plutôt écrire:
 

Code :
  1. do {
  2. } while (choix.equals("oui" ) || choix.equals("non" )) ;


 
 
Bien entendu, cela suppose que l'utilisateur réponde par "oui" ou "non" en minuscule.  
 
En java il n'y a pas de possibilité de comparer un objet avec plusieurs autres en une seule opération.
 
 

n°2247276
julienr66
Posté le 04-01-2015 à 14:21:26  profilanswer
 

Bonjour,  
 
Merci pour vos réponses,  
OrcusZ j'avais auparavant aussi pensé à un simple if/else mais dans ce cas la si l'utilisateur répond n'importe quel autre réponse que oui, la suite  
s'affichera, or j'aimerai que la question se répète tant qu'il ne s'agit pas de oui --> Qui affiche les règles, ou de non --> Qui passe à la suite.
 
leonhard si je comprend bien ce que tu m'as écrit, c'est procédé de façon inverse? Je rentre mon if/else dans le do/while lorsque la réponse équivaut à "oui" ou "non"? Je pensais que compareTo était l'inverse de String.equals(string), merci de m'avoir prevenu que ce n'était pas le cas, mais ducoup il n'y a aucune ecriture pour le contraire de String.equals(string)?
 
Merci pour vos réponses :)

n°2247281
leonhard
Posté le 04-01-2015 à 16:11:09  profilanswer
 

julienr66 a écrit :

Bonjour,  
 
[...]
leonhard si je comprend bien ce que tu m'as écrit, c'est procédé de façon inverse? Je rentre mon if/else dans le do/while lorsque la réponse équivaut à "oui" ou "non"? Je pensais que compareTo était l'inverse de String.equals(string), merci de m'avoir prevenu que ce n'était pas le cas, mais ducoup il n'y a aucune ecriture pour le contraire de String.equals(string)?
 
Merci pour vos réponses :)


 
Que veux-tu dire par "l'inverse de equals()" ? Il y a une erreur dans ce que j'ai écrit.
 
il faut écrire

Code :
  1. do {
  2.    // entrer le choix
  3. } while (!choix.equals("oui" ) && !choix.equals("non" );


 
Il fallait rajouter le not (!) avant les conditions...
 
algorithmiquement c'est équivalent à
 

Code :
  1. do {
  2.    // entrer choix..
  3. } while (choix.equals("oui" ) == false && choix.equals("non" ) == false)


 
Donc tu reste dans cette première boucle tant que l'utilisateur n'a pas entré soit "oui" soit "non". Une fois qu'un de ces mot est entré alors la condition générale vire à "false" (je te laisse faire la table de vérité pour t'en convaincre) et ton programme sort de la liste pour continuer le traitement.  
 
Si tu tiens absolument à utiliser les "compareTo()" à la place des "equals()", alors il faut formuler condition de la manière suivante:
 

Code :
  1. do {
  2.    ...
  3. } while (choix.compareTo("oui" ) != 0 && choix.compareTo("non" ) != 0);


 
mais d'un point de vue programmation je trouve cela moins bon parce que l'information qui t'intéresse c'est de savoir si le choix est égal ou différent de "oui" et "non".

n°2247282
julienr66
Posté le 04-01-2015 à 16:18:13  profilanswer
 

Merci beaucoup pour ton aide :) en effet, maintenant avec le not (!) devant je comprend, Ce que je voulais dire par contraire de equal c'est :
Pour les Variables de chiffres/nombres comme int on emploie "==" et son inverse "!=" C'était juste sa mais pour les String :)  
Je n'utiliserai plus compareTo votre méthode me convient (et pardon pour l'erreur || au lieu du ou && )  
 
Bonne fin de journée :)

n°2247459
Kekman
Posté le 06-01-2015 à 16:35:56  profilanswer
 

Idéalement, si tu veux ne pas faire attention à la casse, un equalsIgnoreCase serait plus approprié qu'un equals. Ca te permet d'accepter les saisies du type "Oui", "OuI", "OUI", etc.
 
Tu peux aussi laisser tomber la déclaration de la variable choix en dehors de la boucle, car elle sera écrasée dans la 1ere itération de ton do/while :

Code :
  1. System.out.println("Bienvenue sur la plateforme de jeu << Les petits chevaux catalan >>" );
  2. System.out.println("Desirez-vous lire les règles du jeu?" );
  3. String a="oui";
  4. String b="non";
  5. String choix=dlc.nextLine();
  6. do {System.out.println("Veuillez répondre par oui ou non s'il vous plait" );
  7. String choix=dlc.nextLine();}
  8. while (!a.equalsIgnoreCase(choix) && !b.equalsIgnoreCase(choix))


 
Autres conseils en vrac :
 - n'hésite pas aussi à créer des fonctions pour éclater les différents modules de ta classe (ex : une fonction pour les règles, une pour le lancement d'une partie, etc.)
 - le nommage de variables a, b, c, i, etc. n'est pas propre : il faut des noms explicites, sans quoi tu vas vite t'y perdre (conseil supplémentaire au passage : ici, "oui" et "non" sont des constantes. Essaye de les déclarer en tant que telles)

n°2247642
julienr66
Posté le 07-01-2015 à 16:47:14  profilanswer
 

Merci Kekman, :) pour la variable string je l'avais supprimé de moi même déja, mais sa vous ne pouviez pas le deviner ^^ , pour ce qui est de equalsIgnoreCase, je l'avais deja rencontrer dans mes cours mais je m'en souvenais plus, merci ^^
 
Pour le premier conseil par contre j'ai pas compris x) :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Aide pour programme java

 

Sujets relatifs
C++ builder 6 et l'aide sur windows sevencomment indiquer une varial dans une url - besoin d'aide - merci
besoin d'aide pour un programme java (urgent =x )Aide pour programmation manette de jeu bluetooth arduino
Aidebesoin d'Aide : Python our programmer un mot de passe
[JAVA] aide compilation d'un programme[Java] Aide pour un programme
aide pour un programme JAVA (débutante)Urgent Besoin d'aide pour finaliser un programme ORACLE/JAVA sur lyon
Plus de sujets relatifs à : Aide pour programme java


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR