用Java写一个打气球的小游戏,游戏窗口为500x500像素,背景为黑色。 气球的随机半径在20到40像素之间。您可以自由选择创建气球的方法——要么以几何方式创建它们,要么使用开源图像。 有50%的几率气球是红色的,有50%的几率气球是绿色的。 气球的中心在半径和窗口宽度减去半径之间的随机x位置。 气球从负半径的y位置开始(即远离屏幕顶部)。
时间: 2024-02-09 17:13:40 浏览: 84
基于Java编程的小球游戏
好的,下面是Java代码实现这个小游戏的过程:
```java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class BalloonGame extends JPanel {
private static final long serialVersionUID = 1L;
private static final int WINDOW_WIDTH = 500;
private static final int WINDOW_HEIGHT = 500;
private static final int NUM_BALLOONS = 10;
private static final int MIN_RADIUS = 20;
private static final int MAX_RADIUS = 40;
private static final Random random = new Random();
private BufferedImage redBalloonImage;
private BufferedImage greenBalloonImage;
private Balloon[] balloons;
public BalloonGame() {
// load balloon images
try {
redBalloonImage = ImageIO.read(new File("red_balloon.png"));
greenBalloonImage = ImageIO.read(new File("green_balloon.png"));
} catch (IOException e) {
e.printStackTrace();
}
// create balloons
balloons = new Balloon[NUM_BALLOONS];
for (int i = 0; i < NUM_BALLOONS; i++) {
int radius = random.nextInt(MAX_RADIUS - MIN_RADIUS + 1) + MIN_RADIUS;
boolean isRed = random.nextBoolean();
int x = random.nextInt(WINDOW_WIDTH - 2 * radius) + radius;
int y = -radius;
BufferedImage image = isRed ? redBalloonImage : greenBalloonImage;
balloons[i] = new Balloon(x, y, radius, image);
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
// draw black background
g.setColor(Color.BLACK);
g.fillRect(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT);
// draw balloons
for (Balloon balloon : balloons) {
balloon.draw(g);
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Balloon Game");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
frame.setResizable(false);
BalloonGame game = new BalloonGame();
frame.add(game);
frame.setVisible(true);
// animate balloons
while (true) {
for (Balloon balloon : game.balloons) {
balloon.move();
}
game.repaint();
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
private static class Balloon {
private int x;
private int y;
private int radius;
private BufferedImage image;
public Balloon(int x, int y, int radius, BufferedImage image) {
this.x = x;
this.y = y;
this.radius = radius;
this.image = image;
}
public void draw(Graphics g) {
g.drawImage(image, x - radius, y - radius, 2 * radius, 2 * radius, null);
}
public void move() {
y++;
if (y > WINDOW_HEIGHT + radius) {
y = -radius;
}
}
}
}
```
在这个代码中,我们定义了一个 `Balloon` 类表示气球,并使用一个 `BalloonGame` 类来实现游戏窗口和游戏逻辑。在 `BalloonGame` 的构造函数中,我们随机生成气球的属性,并创建气球对象存储在一个数组中。
在 `paintComponent` 方法中,我们首先绘制黑色背景,然后绘制每个气球。在 `Balloon` 类中,我们定义了 `draw` 方法来绘制气球图像,以及 `move` 方法来更新气球的位置。
在 `main` 方法中,我们首先创建游戏窗口和游戏对象,然后使用一个无限循环来不断更新气球位置和重绘窗口,以实现动画效果。在每次循环中,我们使用一个 `Thread.sleep` 方法来暂停 20 毫秒,以控制动画的速度。
请注意,您需要将代码中的 `red_balloon.png` 和 `green_balloon.png` 替换为您自己的气球图像文件。
阅读全文