建议在java swing中创建摇滚,纸张,剪刀游戏

时间:2013-12-10 00:01:47

标签: java swing

我正在自学Java,我想创建一个带有GUI的摇滚,纸张,剪刀游戏。我用扫描仪创建了一个基于文本的版本,但我还有很多工作要做。

import javax.swing.JFrame;
import javax.swing.JPanel;

import javax.swing.JRadioButton;
import javax.swing.ButtonGroup;

public class RPS extends JFrame {

  JRadioButton rock, paper, scissors;
  ButtonGroup choices;

  public static void main(String[] args) {
    new RPS();
  }
  public RPS() {
    super("Rock, Paper, Scissors");

    setSize(400,300);
    setResizable(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    JPanel p=new JPanel();

    rock = new JRadioButton("Rock");
    paper = new JRadioButton("Paper");
    scissors = new JRadioButton("Scissors");

    choices = new ButtonGroup();
    choices.add(rock);
    choices.add(paper);
    choices.add(scissors);

    p.add(rock);
    p.add(paper);
    p.add(scissors);

    add(p);

    setVisible(true);
  }
}

这是我的代码。我已经创建了一个窗口并显示3个单选按钮,只允许选择一个选项。从这里开始,我想实现一个下一个按钮,并创建逻辑以根据两个选项产生答案。我相信我需要卡片布局,但Oracle文档对我没有帮助。我也不知道如何绕过实现逻辑。任何帮助表示赞赏,对于长篇文章感到抱歉。 再次感谢!

对不起,我没说清楚,我想为一个人设计一个转弯,按下巢按钮,然后第二个人转弯,按完成并获得结果。我将把它呈现给我的8年级课程。

1 个答案:

答案 0 :(得分:2)

在您的计划中实施CardLayout非常热门。此布局的目的是分层组件。在您的情况下,您需要为每个玩家提供一个面板。所以你需要两个面板。

  1. 播放器1的JPanel(带有三个单选按钮)
  2. 播放器2的JPanel(带有三个单选按钮)
  3. 以上两个是Card(layered)Layout的组成部分(你可以将一个堆叠在另一个之上。

    1. 您需要一个标签来显示获胜者
    2. 您需要一个JPanel来保存下一个按钮
    3. 总而言之,你的布局应该是这样的

        Wrapped in JPanel(new BoderLayout())
      -------------------------------------
      |       label to show status        |   BorderLayout.NORTH
      -------------------------------------
      |                                   |
      |        CardLayout holding         |
      |        two JPanels with RBs       |   BorderLayout.CENTER
      |___________________________________|
      |(JPanel)   Next JButton            |   BorderLayout.SOUTH
      -------------------------------------
      

      当您点击下一个按钮时,您可以调用next()的{​​{1}}方法来显示下一个面板

      实施例

      CardLayout

      有关其他移动方法,请参阅CardLayout docs

      对于逻辑部分

      1. 正如我之前建议的那样,你应该有六个单选按钮(每个玩家三个)
      2. 在您的逻辑中,您可以查看选择了哪些
      3. 您可能希望checkWinner JButton执行操作。
      4. 实施例

        private CardLayout cardLayout = new CardLayout(10, 10); // hgap and vgap args
        private JPanel cardPanel = new JPanel(cardLayout);
        
        JPanel panel1 = new JPanel(); // holds first player
        JPanel panel2 = new JPanel(); // holds second player
        
        cardPanel.add(panel1);
        cardPanel.add(panel2);
        
        nextButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                cardLayout.next(cardPanel);
            }
        });