le jeu de pierre feuille ciseau

le jeu de pierre feuille ciseau - Java - Programmation

Marsh Posté le 03-03-2006 à 16:14:43    

Bonjour,
Je suis étudiante en stat et mon prof me demande de faire ce jeu en mois de 3 semaine alors que j'ai peu de notion de java(on l'a appris en 6 h de cours). Je suis un peu perdue..Tout ce que j'ai pu faire c'est ceci mais je ne sais pas comment on affiche en mode console..Si quelqu'un pouvait me venir en aide je dois le rendre dans 2 semaines et ce projet compte beaucoup dans la moyenne d'info.
 
Mille merci  
 
Maeva
 

Code :
  1. class MainClass
  2.     {
  3.         public static void Main(String[] args)
  4.         {
  5.             //Annonce du début  
  6.            System.out.println("Jeu de pierre feuille ciseau" );
  7.              
  8.             //Déclaration des variables  
  9.             int scor;
  10.             int scor2;
  11.              
  12.             String texte= null;
  13.             int choix;
  14.              
  15.             String choix2;
  16.              
  17.             //Initialisation des scores et des choix  
  18.             scor=0;
  19.             scor2=0;
  20.              
  21.             choix=0;
  22.             choix2="pierre";
  23.              
  24.             //Début de la boucle  
  25.             do
  26.             {
  27.              
  28.                 //Choix du joueur 1  
  29.                  
  30.                 System.out.println(" " );
  31.                 do
  32.                 {
  33.                    System.out.println("pierre, papier ou ciseau?" ); 
  34.                 }
  35.      while(texte!= "pierre" && texte!= "papier" && texte!="ciseau" ) ;
  36.              
  37.                 if (texte == "pierre" )
  38.                 { choix=0; }
  39.                  
  40.                 if (texte == "papier" )
  41.                 { choix=1; }
  42.                  
  43.                 if (texte == "ciseau" )
  44.                 { choix=2; }
  45.                  
  46.                 System.out.println(" " );
  47.                 System.out.println("joueur1: " + texte);
  48.                  
  49.              
  50.      //Choix de l'ordinateur  
  51.                  
  52.                 int nb = (int) Math.random()*3;
  53.              
  54.                 if ( nb == 0 )
  55.                 { choix2="pierre"; }
  56.                  
  57.                 if ( nb == 1 )
  58.                 { choix2="papier"; }
  59.                  
  60.                 if ( nb == 2 )
  61.                 { choix2="ciseau"; }
  62.                  
  63.                 System.out.println("ordinateur: " + choix2);
  64.              
  65.                 //Détermination des gagnants  
  66.                 System.out.println(" " );
  67.                 if (choix==0 && nb==0)
  68.                 {
  69.                    System.out.println("Partie Nulle." );
  70.                 }
  71.                 else
  72.                 {
  73.                     if (choix==0 && nb==1)
  74.                     {
  75.                         System.out.println("Le papier recouvre la pierre." );
  76.                         scor2 = scor2 + 1;
  77.                     }
  78.                     else
  79.                     {
  80.                         if (choix==0 && nb==2)
  81.                         {
  82.                             System.out.println("La pierre casse les ciseaux." );
  83.                             scor = scor + 1;
  84.                         }
  85.                     }
  86.                 }
  87.                    
  88.                 if (choix==1 && nb==0)
  89.                 {
  90.                     System.out.println("Le papier enveloppe la pierre." );
  91.                     scor = scor + 1;
  92.                 }
  93.                 else
  94.                 {
  95.                     if (choix==1 && nb==1)
  96.                     {
  97.                        System.out.println("Partie Nulle." );
  98.                     }
  99.                     else
  100.                     {
  101.                         if (choix==1 && nb==2)
  102.                         {
  103.                             System.out.println("Le ciseau coupe le papier." );
  104.                             scor2 = scor2 + 1;
  105.                         }
  106.                     }
  107.                 }
  108.                  
  109.                 if (choix==2 && nb==0)
  110.                 {
  111.                     System.out.println("La pierre casse le ciseau." );
  112.                     scor2 = scor2 + 1;
  113.                 }
  114.                 else
  115.                 {
  116.                     if (choix==2 && nb==1)
  117.                     {
  118.                         System.out.println("Le ciseau coupe le papier." );
  119.                         scor = scor + 1;
  120.                     }
  121.                     else
  122.                     {
  123.                         if (choix==2 && nb==2)
  124.                         {
  125.                             System.out.println("Partie Nulle." );
  126.                         }
  127.                     }
  128.                 }
  129.              
  130.                 //Affichage des résultats  
  131.                 System.out.println(" " );
  132.                 System.out.println("Les scores sont :" );
  133.                 System.out.println("Joueur1 : " + scor);
  134.                 System.out.println("Ordinateur : " + scor2);
  135.              
  136.                  
  137.                 System.out.println(" " );
  138.                 do
  139.                 {
  140.                    System.out.println ("Encore une partie?(O/N)" ); 
  141.                 }while(texte!="N" && texte!="O" ) ;
  142.                  
  143.             }while(texte!="N" );
  144.             //Fin de la boucle  
  145.         }
  146.     }


Message édité par maeva20 le 03-03-2006 à 16:22:42
Reply

Marsh Posté le 03-03-2006 à 16:14:43   

Reply

Marsh Posté le 03-03-2006 à 16:21:53    

oulala dsl c'est écrit tout petit..je ne sais pas comment le mettre en plus grans..dsl
 
Maeva

Reply

Marsh Posté le 03-03-2006 à 16:38:35    

salut!
a vu doeil ton code a l'air correct
quel est ton probleme exactement ?


---------------
0x53 0x61 0x6C 0x65 0x47 0x65 0x65 0x6B
Reply

Marsh Posté le 03-03-2006 à 16:49:33    

Code :
  1. public class MainClass {
  2. public static void main(String[]args){


 
tu as oublie le public, et le main de la deuxieme ligne secrit avec un "m" minuscule :)
 
euh, et comment rentres tu les reponses (pierre feuille et ciseau)?


Message édité par the nordcore le 03-03-2006 à 16:52:24

---------------
0x53 0x61 0x6C 0x65 0x47 0x65 0x65 0x6B
Reply

Marsh Posté le 03-03-2006 à 16:57:38    

bon j'ai repris ton coded, il y a quelques eurreurs
je corrige ce que je peux


---------------
0x53 0x61 0x6C 0x65 0x47 0x65 0x65 0x6B
Reply

Marsh Posté le 03-03-2006 à 17:03:50    

Apparemment ce qu'il te manque,  c'est la lecture du choix du joueur.
 
Pour ça il faut lire l'entrée standard (System.in) qui est un InputStream.
 
Voici un exemple simpliste de lecture de l'entrée standard

Code :
  1. Reader reader = new InputStreamReader(System.in);
  2. BufferedReader keyboard = new BufferedReader(reader);
  3. try {
  4.   System.out.print("Entrez une ligne de texte : " );
  5.   String line = keyboard.readLine();
  6.   System.out.println("Vous avez saisi : " + line);
  7. } catch (IOException ioe) {
  8.   ioe.printStackTrace();
  9. }


Message édité par Bidem le 03-03-2006 à 17:04:29
Reply

Marsh Posté le 03-03-2006 à 17:10:10    

PIERRE §


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 03-03-2006 à 17:21:20    

Accessoirement, pour la détermination des résultats je conseillerais d'utiliser des switch/case, ce serait beaucoup plus propre que les séries de if.
 
Et tu pourrais te débarasser des 3 égalités avec un if unique (if choix == nb) { égalité }
On peut aussi créer une Map de matches (genre HashMap, s'très bien), comme ça on se débarasse de tous les ifs et on laisse juste un switch/case :o
 
(ce serait encore mieux si java avait une syntaxe potable pour définir les maps, mais bon)


Message édité par masklinn le 03-03-2006 à 17:45:30

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 03-03-2006 à 17:59:33    

On pourrait aussi se passer de if ou de switch... [:petrus75]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 03-03-2006 à 18:17:15    

sircam a écrit :

On pourrait aussi se passer de if ou de switch... [:petrus75]


Difficile pour les cas terminaux (victoire, défaite, égalité) dans la mesure où on impacte simultanément deux valeurs (score de l'ordi et score du joueur) -- ce qui est infaisable en java dans la mesure où les tuples et le sequence unpacking ne sont pas gérés -- et on doit générer un affichage pour expliquer à minima la situation d'égalite ou la victoire de l'une des parties sur cette manche.


Message édité par masklinn le 03-03-2006 à 18:18:44

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 03-03-2006 à 18:17:15   

Reply

Marsh Posté le 03-03-2006 à 21:04:19    

WTH ?
 
Une matrice pierre-feuille-ciseau X pierre-feuille-ciseau avec, pour chaque entrée, le score à créditer à chaque adversaire et le message de circonstance.
 
Suffit d'aller piocher dans le tableau en fn de l'input.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 03-03-2006 à 21:13:19    

sircam a écrit :

WTH ?
 
Une matrice pierre-feuille-ciseau X pierre-feuille-ciseau avec, pour chaque entrée, le score à créditer à chaque adversaire et le message de circonstance.
 
Suffit d'aller piocher dans le tableau en fn de l'input.


Heuu ouais mais si tu fais ça t'es obligé de stocker toute une structure dans tes résultats de matrice, et en java ça veut dire soit une collection toute crade (parce que tes valeurs d'incréments sont des entiers alors que ton message est un string, donc les types des données sont incohérents, -- va en avoir une attaque) soit un objet complet en te tapant une nouvelle classe à définir quoi [:pingouino]


Message édité par masklinn le 03-03-2006 à 21:14:35

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 11-03-2006 à 22:10:30    

Bonsoir tout le monde,  
 
Maeva20, comme on te l'a déjà dit, ton code a l'air correct. Mais si tu analyses ton problème d'un peu plus près, tu t'apercevras que tu peux simplifier beaucoup de choses ...  
 
J'arrive un peu tard, mais je te donne quand même une des manières plus optimales de coder ton programme :  

Code :
  1. import java.io.*;
  2. class PierreFeuilleCiseaux{
  3. public static void main (String args[]) {
  4.  String arme[] = {"la pierre", "les ciseaux", "la feuille"};
  5.  String message[] = { arme[0] + " casse " + arme[1], arme[2] + " recouvre " + arme[0], arme[1] + " coupent "+ arme[2] };
  6.  int resultat[] = {0, 2, 1};
  7.  // affichage menu
  8.  for (int i=0;i<3;i++){
  9.   System.out.println(i + ". " + arme[i]);
  10.  }
  11.  // choix du joueur 1 : l'humain
  12.  int j1 = -1;
  13.  do
  14.   try{
  15.    j1 = (new InputStreamReader(System.in)).read() - 48; // ascii
  16.   }catch(IOException ioe){
  17.    ioe.printStackTrace();
  18.    System.exit(0);
  19.   }
  20.  }while(j1 < 0 || j1 > 2);
  21.  int j2 = (int)(Math.random()*3);   // choix du joueur 2 : la machine
  22.  System.out.println("J'ai choisi " + arme[j2]);
  23.  if ( j1 == j2 ) { System.out.println("On a choisi pareil ! " );System.exit(0); }
  24.  int i = j1 + j2 - 1;
  25.  System.out.println(message[i]);
  26.  if (j1 == resultat[i]) {
  27.   System.out.println("Tu gagnes" );
  28.  } else {
  29.   System.out.println("Je gagne" );
  30.  }
  31. }
  32. }



Message édité par powel42 le 14-03-2006 à 08:20:16
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed