2013-03-19 4 views
0

Je suis coincé un peu comment créer un fichier où sera affiché combien de fois vous gagnez ou dessinez. Comme:Compte le nombre de Rock, Paper, Scissors gagne

| Wins: | 234 | 
| Looses:| 234 | 
| Draws: | 434 | 

signifie que si un document de presse et je gagne la réponse ajouter 1 à quantité de victoires ... et ainsi de suite ...

| Wins: | 235 | 
| Looses:| 234 | 
| Draws: | 434 | 

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
public class gui extends JFrame implements ActionListener 
{ 
    public JLabel JWoL,JWoLPlayer,JWoLPC,JNumWin,JNumLose,JNumTie; 
    public static void main(String[] args) 
    { 
     gui theWindow = new gui(); 
     theWindow.show(); 
    } 
    public gui() 
    { 
     Button butRock = new Button("Rock"); 
     butRock.addActionListener(this); 
     Button butPaper = new Button("Paper"); 
     butPaper.addActionListener(this); 
     Button butScissors = new Button("Scissors"); 
     butScissors.addActionListener(this); 


     JWoLPlayer = new JLabel(); 
     JWoLPC = new JLabel(); 
     JWoL= new JLabel(); 


     JLabel rpsPlayer= new JLabel("Your Choice:"); 
     JLabel rpsComputer= new JLabel("Computers Choice:"); 
     setTitle("| RoPaS GAME |"); 


     JPanel ButtPan=new JPanel(); 
     ButtPan.setLayout(new GridLayout(1,3)); 
     ButtPan.add(butRock); 
     ButtPan.add(butPaper); 
     ButtPan.add(butScissors); 


     JPanel LabelsPan=new JPanel(); 
     LabelsPan.setLayout(new GridLayout(7,1)); 
     LabelsPan.add(rpsPlayer); 
     LabelsPan.add(JWoLPlayer); 
     LabelsPan.add(rpsComputer); 
     LabelsPan.add(JWoLPC); 



     JPanel WLPan=new JPanel(); 
     WLPan.setLayout(new BorderLayout()); 
     WLPan.add(JWoL,"Center"); 


     JPanel TwoPanesN1=new JPanel(); 
     TwoPanesN1.setLayout(new BorderLayout()); 
     TwoPanesN1.add(LabelsPan,"West"); 
     TwoPanesN1.add(WLPan,"East"); 
     getContentPane().setLayout(new GridLayout(2,1)); 
     getContentPane().add(ButtPan); 
     getContentPane().add(TwoPanesN1); 


     Font fontDisplay = new Font("Arial", Font.PLAIN, 22); 
     JWoL.setFont(fontDisplay); 
     setSize(400,200); 
     setVisible(true); 
     setResizable(false); 

     addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent ev){System.exit(0);}}); 
    } 



    public void Play(String PlayerChoice) 
    { 
     String PCchoice=PCansw(); 
     JWoLPC.setText(PCchoice); 

     if(PlayerChoice.equals(PCchoice)) 
      JWoL.setText(" Tie |"); 


     else if(PlayerChoice.equals("Rock")) 
      if(PCchoice.equals("Paper")) 
       JWoL.setText(" You Lose |"); 
      else 
       JWoL.setText(" You Win |"); 


     else if(PlayerChoice.equals("Paper")) 
      if(PCchoice.equals("Scissors")) 
       JWoL.setText(" You Lose |"); 
      else 
       JWoL.setText(" You Win |"); 


     else if(PlayerChoice.equals("Scissors")) 
      if(PCchoice.equals("Rock")) 
       JWoL.setText(" You Lose |"); 
      else 
       JWoL.setText(" You Win |"); 

    } 
    public String PCansw() 
    { 
     String rpsPC2=""; 
     int rpsPC=(int)(Math.random()*3)+1; 
     if(rpsPC==1) 
      rpsPC2= "Rock"; 
     else if(rpsPC==2) 
      rpsPC2= "Paper"; 
     else if(rpsPC==3) 
      rpsPC2= "Scissors"; 
     return rpsPC2; 
    } 
    public void actionPerformed(ActionEvent e) 
    { 
     if(e.getActionCommand().equals("Exit")) 
      System.exit(0); 
     else 
     { 
      JWoLPlayer.setText(e.getActionCommand()); 
      Play(e.getActionCommand()); 
     } 
    } 




} 
+0

Je suis coincé comment ajouter un champ de texte qui comptera combien de victoires perd ou tire a été fait ....... –

+0

Je comprends comment le faire, je veux dire Je peux visualiser ze, mais coincé comment se connecter ... –

Répondre

2

Ajouter des variables globales :

public class gui extends JFrame implements ActionListener 
{ 
    int wins = 0, losses = 0, draws = 0; 
    ... 

Remplacer JWoL.setText(" You Lose |"); avec recordLoss(); et faire fonction:

private void recordLoss() 
{ 
    JWoL.setText(" You Lose |"); 
    losses++; 
    JNumLose.setText(""+losses); 
} 

et le même pour les autres.

Ce qui précède peut ne pas être exactement ce que vous voulez ou sortir des données sensibles dans le contexte du reste de votre programme, mais devrait vous donner, je l'espère, assez de conseils.

Mais je suis plutôt fan de quelque chose comme: (enum est probablement plus correct, mais je pense qu'il est désordonné en Java)

public class gui extends JFrame implements ActionListener 
{ 
    static final int WINS = 0, LOSSES = 1, DRAWS = 2; 
    int[] counts = new int[3]; 
    String[] strings = {" You Win |", " You Lose |", " Tie |"}; 
    // this MUST be set up in the constructor, not here! 
    JLabel[] labels = {JNumWin, JNumLose, JNumTie}; 
    ... 

Remplacer JWoL.setText(" You Lose |"); avec record(LOSS); et la même chose pour les autres, et seulement 1 fonction:

private void record(int type) 
{ 
    JWoL.setText(strings[type]); 
    counts[type]++; 
    labels[type].setText(""+counts[type]); 
} 
+0

Si je fais de cette façon, il arrive avec une erreur de syntaxe sur la section else .... ** else ** if (PlayerChoice.equals ("Papier")) –

+0

@DenisNurasy Avez-vous l'entourer de '{}'? J'ai édité la réponse avec une meilleure solution. – Dukeling

+0

LabelsPan.add (JNumWin); \t \t LabelsPan.add (JNumLose); \t \t LabelsPan.add (JNumTie); Comment je pense que ce sera la bonne réponse pour afficher le nombre réel de victoires par exemple pour l'utilisateur, mais cela n'a pas fonctionné ( –

Questions connexes