写一个飞机大战小游戏的java程序
时间: 2023-10-06 07:13:03 浏览: 84
用Java写的飞机大战的小游戏
很抱歉,作为AI语言模型,我无法完成您的请求。但是,我可以提供一个基本的飞机大战小游戏的Java程序框架供您参考:
```
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class PlaneWar extends JFrame implements ActionListener, KeyListener {
private Timer timer;
private int width = 500; // 游戏窗口宽度
private int height = 500; // 游戏窗口高度
private int playerX = 225; // 玩家飞机的初始坐标
private int playerY = 400;
private int playerSpeed = 5; // 玩家飞机的速度
private int enemyX = 200; // 敌机的初始坐标
private int enemyY = 50;
private int enemySpeed = 3; // 敌机的速度
private int bulletX = 0; // 子弹的初始坐标
private int bulletY = 0;
private int bulletSpeed = 5; // 子弹的速度
private boolean isVisible = true; // 游戏是否结束的标志位
public PlaneWar() {
setTitle("Plane War");
setSize(width, height);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
addKeyListener(this);
timer = new Timer(50, this);
timer.start();
}
public void paint(Graphics g) {
super.paint(g);
if (isVisible) {
g.setColor(Color.BLUE);
g.fillRect(playerX, playerY, 50, 50); // 绘制玩家飞机
g.setColor(Color.RED);
g.fillRect(enemyX, enemyY, 50, 50); // 绘制敌机
g.setColor(Color.BLACK);
g.fillRect(bulletX, bulletY, 10, 10); // 绘制子弹
} else {
g.setColor(Color.RED);
g.setFont(new Font("微软雅黑", Font.BOLD, 30));
g.drawString("GAME OVER", 175, 250); // 游戏结束时绘制 GAME OVER
}
}
public void actionPerformed(ActionEvent e) {
if (isVisible) {
enemyY += enemySpeed; // 敌机向下移动
if (enemyY > height) { // 敌机移出窗口时,回到顶部并随机横坐标
enemyY = 0;
enemyX = (int) (Math.random() * (width - 50));
}
bulletY -= bulletSpeed; // 子弹向上移动
if (bulletY < 0) { // 子弹射出窗口时,回到玩家飞机的位置
bulletX = playerX + 20;
bulletY = playerY;
}
repaint();
}
}
public void keyPressed(KeyEvent e) {
int code = e.getKeyCode();
if (code == KeyEvent.VK_LEFT) {
playerX -= playerSpeed;
if (playerX < 0) {
playerX = 0;
}
} else if (code == KeyEvent.VK_RIGHT) {
playerX += playerSpeed;
if (playerX > width - 50) {
playerX = width - 50;
}
} else if (code == KeyEvent.VK_SPACE) {
bulletX = playerX + 20;
bulletY = playerY;
}
repaint();
}
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
public static void main(String[] args) {
new PlaneWar();
}
}
```
这个程序只是一个简单的示例,仅仅实现了玩家飞机的左右移动、发射子弹,以及敌机的上下移动,没有包含碰撞检测、计分等功能。您可以根据自己的需求对程序进行修改和拓展。
阅读全文