0

我有点不知道如何创建一个文件,其中将显示你赢得松散或平局的次数。喜欢:

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

意思是,如果我和一篇新闻报纸赢得了答案,则获胜次数加 1……等等……

| 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());
        }
    }




}
4

1 回答 1

2

添加全局变量:

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

替换JWoL.setText(" You Lose |");recordLoss();并创建一个函数:

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

其他人也一样。

以上可能不是您想要的或在程序其余部分的上下文中输出敏感数据,但希望能给您足够的指导。

但我更喜欢这样的东西:(可能enum更正确,但我觉得它在 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};
  ...

替换JWoL.setText(" You Lose |");record(LOSS);和其他的相同,并且只有1个功能:

private void record(int type)
{
  JWoL.setText(strings[type]);
  counts[type]++;
  labels[type].setText(""+counts[type]);
}
于 2013-03-19T15:38:23.543 回答