用Java设计一个拿火柴小游戏,要求:程序随机产生20~50根 火柴,由人与计算机轮流拿,每次拿的数量为1~3根,不在这个范围不能输入,输入不能是小数,拿过火柴后光标跳转到输入窗口,以不拿到最后一根为胜。(要求使用图形界面)
时间: 2024-02-24 13:58:11 浏览: 132
好的,下面是使用Java Swing库实现这个游戏的基本代码。请注意,我只提供了游戏的基本逻辑,您可以根据需要进行修改和完善。
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MatchsticksGame extends JFrame {
private int numOfMatches;
private boolean isUserTurn;
private JLabel infoLabel;
private JTextField inputField;
private JButton submitButton;
public MatchsticksGame(int numOfMatches) {
this.numOfMatches = numOfMatches;
this.isUserTurn = true;
// 设置窗口标题
setTitle("拿火柴游戏");
// 设置窗口大小
setSize(400, 200);
// 设置窗口布局
setLayout(new BorderLayout());
// 设置窗口关闭操作
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建游戏信息标签
infoLabel = new JLabel("火柴数量:" + numOfMatches + " 请玩家1拿火柴");
// 创建输入框和提交按钮
inputField = new JTextField();
inputField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
submitButton.doClick();
}
});
submitButton = new JButton("提交");
submitButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String input = inputField.getText();
if (input.matches("[1-3]")) {
int num = Integer.parseInt(input);
if (num <= numOfMatches && num > 0) {
numOfMatches -= num;
if (numOfMatches == 0) {
JOptionPane.showMessageDialog(MatchsticksGame.this, "恭喜玩家" + (isUserTurn ? "1" : "2") + "获胜!");
System.exit(0);
}
isUserTurn = !isUserTurn;
inputField.setText("");
infoLabel.setText("火柴数量:" + numOfMatches + " 请" + (isUserTurn ? "玩家1" : "计算机") + "拿火柴");
} else {
JOptionPane.showMessageDialog(MatchsticksGame.this, "输入错误,请重新输入!");
}
} else {
JOptionPane.showMessageDialog(MatchsticksGame.this, "输入错误,请重新输入!");
}
}
});
// 将游戏信息标签、输入框和提交按钮添加到窗口
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(3, 1));
panel.add(infoLabel);
panel.add(inputField);
panel.add(submitButton);
add(panel, BorderLayout.CENTER);
// 显示窗口
setVisible(true);
}
public static void main(String[] args) {
// 生成20~50根随机火柴
int numOfMatches = (int) (Math.random() * 31) + 20;
// 创建游戏窗口
MatchsticksGame game = new MatchsticksGame(numOfMatches);
}
}
```
这是一个比较简单的实现,只有最基本的游戏逻辑。您可以根据需要进行修改和完善,比如增加计算机AI来提高游戏难度,或者美化界面等等。希望对您有所帮助!
阅读全文