用Java设计一个拿火柴小游戏,要求:程序随机产生20~50根 火柴,由人与计算机轮流拿,每次拿的数量不超过3根,以不拿到最后一根为胜。(要求使用图形界面)
时间: 2024-02-24 20:55:50 浏览: 142
这是一个用Java实现具有图形界面的五子棋游戏,能实现人机对战和人人对战,课程设计。.zip
好的,我可以为你提供一些思路和代码示例。首先,我们可以使用Java Swing库来创建图形界面。然后,我们需要定义一个火柴游戏类,其中包含了游戏的逻辑和图形界面的实现。下面是一个简单的示例代码:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MatchGame extends JFrame implements ActionListener {
private int matches; // 火柴数量
private JLabel label; // 显示火柴数量的标签
private JTextField input; // 输入拿走的火柴数量的文本框
private JButton button; // 确认按钮
private boolean playerTurn; // 玩家的回合
public MatchGame() {
setTitle("拿火柴小游戏");
setSize(400, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 初始化火柴数量为20~50之间的随机数
matches = (int) (Math.random() * 31) + 20;
// 创建界面组件
JPanel panel = new JPanel();
label = new JLabel("火柴数量:" + matches);
input = new JTextField(10);
button = new JButton("确认");
button.addActionListener(this);
panel.add(label);
panel.add(new JLabel("拿走火柴数量:"));
panel.add(input);
panel.add(button);
add(panel);
// 确定谁先开始
playerTurn = Math.random() > 0.5;
// 显示界面
setVisible(true);
}
// 处理按钮点击事件
public void actionPerformed(ActionEvent e) {
if (playerTurn) {
// 玩家选择拿走火柴
int num = Integer.parseInt(input.getText());
if (num > 0 && num <= 3 && num <= matches) {
matches -= num;
label.setText("火柴数量:" + matches);
if (matches == 0) {
JOptionPane.showMessageDialog(this, "你赢了!");
System.exit(0);
} else {
playerTurn = false;
computerTurn();
}
} else {
JOptionPane.showMessageDialog(this, "无效的输入!");
}
}
}
// 计算机随机选择拿走火柴
private void computerTurn() {
int num = (int) (Math.random() * 3) + 1;
if (num > matches) {
num = matches;
}
matches -= num;
label.setText("火柴数量:" + matches);
if (matches == 0) {
JOptionPane.showMessageDialog(this, "计算机赢了!");
System.exit(0);
} else {
playerTurn = true;
}
}
public static void main(String[] args) {
new MatchGame();
}
}
```
这个示例代码中,我们创建了一个`MatchGame`类,它继承了`JFrame`类,并实现了`ActionListener`接口,用于处理按钮点击事件。在构造函数中,我们初始化了火柴数量、界面组件和玩家的回合。当玩家点击确认按钮时,我们检查输入的火柴数量是否有效,并更新火柴数量和标签显示。如果火柴数量为0,则弹出胜利对话框。接着,我们调用`computerTurn()`方法,让计算机选择拿走火柴。最后,我们在`main()`方法中创建了一个`MatchGame`实例,启动了游戏。
阅读全文