游戏玩法
目标:玩家需要在限时内点击尽可能多的方块。
规则:游戏启动后,屏幕上会随机出现一个移动的方块;玩家点击方块得分,方块会重新随机出现在另一个位置;游戏限时为30秒,时间结束时显示总分。
代码
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;
public class ClickBoxGame extends JFrame {
private JButton box; // 方块按钮
private JLabel scoreLabel, timeLabel; // 分数和时间显示
private int score = 0; // 得分
private int timeLeft = 30; // 剩余时间
private Random random = new Random(); // 随机生成位置
private Timer timer; // 计时器
public ClickBoxGame() {
setTitle("点击方块游戏");
setSize(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null); // 手动布局
// 创建计分显示
scoreLabel = new JLabel("得分: 0");
scoreLabel.setBounds(10, 10, 100, 20);
add(scoreLabel);
// 创建倒计时显示
timeLabel = new JLabel("时间: 30");
timeLabel.setBounds(300, 10, 100, 20);
add(timeLabel);
// 创建方块按钮
box = new JButton();
box.setBackground(Color.RED);
box.setBounds(random.nextInt(300), random.nextInt(300), 50, 50);
box.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
score++; // 点击得分
scoreLabel.setText("得分: " + score);
moveBox(); // 移动方块
}
});
add(box);
// 启动计时器
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
timeLeft--;
timeLabel.setText("时间: " + timeLeft);
if (timeLeft <= 0) {
endGame(); // 游戏结束
}
}
}, 1000, 1000);
setVisible(true);
}
// 移动方块到随机位置
private void moveBox() {
int x = random.nextInt(300);
int y = random.nextInt(300);
box.setBounds(x, y, 50, 50);
}
// 结束游戏
private void endGame() {
timer.cancel();
box.setEnabled(false); // 禁用方块按钮
JOptionPane.showMessageDialog(this, "游戏结束!\n总得分: " + score);
System.exit(0); // 点击 "确定" 后结束程序
}
public static void main(String[] args) {
new ClickBoxGame();
}
}
标签:box,java,private,小游戏,import,new,方块
From: https://blog.csdn.net/C7211BA/article/details/141942156