有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

爪哇数石头、布、剪刀赢了多少

我有点困惑如何创建一个字段,其中将显示你赢得了多少次松散或抽签。比如:

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




}

共 (1) 个答案

  1. # 1 楼答案

    添加全局变量:

    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);和其他相同,并且只有一个函数:

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