用java写一个飞机大战小程序
时间: 2024-05-29 15:04:47 浏览: 172
飞机大战程序代码.rar
很抱歉,我是一名AI语言模型,无法运行代码,也无法创建小程序。但是,我可以给您提供一个基本的飞机大战小程序的代码框架,供您参考。
```
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class PlaneWar extends JFrame implements ActionListener, Runnable {
// 定义变量
private Image background; // 背景图片
private Image plane; // 飞机图片
private Image bullet; // 子弹图片
private Image enemyPlane; // 敌机图片
private int planeX, planeY; // 飞机坐标
private int bulletX, bulletY; // 子弹坐标
private int enemyPlaneX, enemyPlaneY; // 敌机坐标
private int score; // 得分
private JButton startButton; // 开始按钮
private boolean isRunning; // 游戏运行状态
public PlaneWar() {
// 初始化变量
background = Toolkit.getDefaultToolkit().getImage("background.png");
plane = Toolkit.getDefaultToolkit().getImage("plane.png");
bullet = Toolkit.getDefaultToolkit().getImage("bullet.png");
enemyPlane = Toolkit.getDefaultToolkit().getImage("enemyPlane.png");
planeX = 200;
planeY = 500;
bulletX = planeX + 30;
bulletY = planeY - 20;
enemyPlaneX = 100;
enemyPlaneY = 50;
score = 0;
isRunning = false;
// 设置窗口属性
setTitle("PlaneWar");
setSize(500, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 添加按钮
startButton = new JButton("开始游戏");
startButton.addActionListener(this);
add(startButton, BorderLayout.SOUTH);
// 显示窗口
setVisible(true);
}
// 绘制界面
public void paint(Graphics g) {
super.paint(g);
g.drawImage(background, 0, 0, getWidth(), getHeight(), null);
g.drawImage(plane, planeX, planeY, null);
g.drawImage(bullet, bulletX, bulletY, null);
g.drawImage(enemyPlane, enemyPlaneX, enemyPlaneY, null);
g.setColor(Color.WHITE);
g.drawString("得分:" + score, 10, 20);
}
// 开始游戏
public void startGame() {
isRunning = true;
Thread t = new Thread(this);
t.start();
}
// 游戏主循环
public void run() {
while (isRunning) {
bulletY -= 5;
if (bulletY < 0) {
bulletX = planeX + 30;
bulletY = planeY - 20;
}
enemyPlaneY += 2;
if (enemyPlaneY > getHeight()) {
enemyPlaneX = (int) (Math.random() * (getWidth() - enemyPlane.getWidth(null)));
enemyPlaneY = -enemyPlane.getHeight(null);
}
if (bulletX > enemyPlaneX && bulletX < enemyPlaneX + enemyPlane.getWidth(null) &&
bulletY > enemyPlaneY && bulletY < enemyPlaneY + enemyPlane.getHeight(null)) {
score += 10;
enemyPlaneX = (int) (Math.random() * (getWidth() - enemyPlane.getWidth(null)));
enemyPlaneY = -enemyPlane.getHeight(null);
}
repaint();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
// 处理按钮事件
public void actionPerformed(ActionEvent e) {
if (e.getSource() == startButton) {
startGame();
}
}
// 主函数
public static void main(String[] args) {
new PlaneWar();
}
}
```
这个小程序的实现大致分为以下几个步骤:
1. 定义变量和导入图片资源
2. 绘制游戏界面,包括背景、飞机、子弹、敌机和得分等元素
3. 实现游戏主循环,包括子弹和敌机的移动、碰撞检测和得分计算等逻辑
4. 处理按钮事件,开始游戏
5. 编写主函数,启动游戏
当然,这只是一个基本的框架,您可以根据自己的需求进行修改和完善。如果您有任何疑问,可以随时向我提问。
阅读全文