用Java写一个飞机大战
时间: 2023-12-31 20:04:53 浏览: 74
用Java写的飞机大战小游戏.zip
这是一个简单的Java飞机大战游戏,你可以参考一下:
1. 创建一个Plane类,表示飞机,包括飞机的位置、速度、生命值等属性;
```
public class Plane {
private int x; // 飞机的横坐标
private int y; // 飞机的纵坐标
private int speed; // 飞机的速度
private int hp; // 飞机的生命值
// 构造方法
public Plane(int x, int y, int speed, int hp) {
this.x = x;
this.y = y;
this.speed = speed;
this.hp = hp;
}
// getter和setter方法
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
public int getHp() {
return hp;
}
public void setHp(int hp) {
this.hp = hp;
}
}
```
2. 创建一个Bullet类,表示子弹,包括子弹的位置、速度等属性;
```
public class Bullet {
private int x; // 子弹的横坐标
private int y; // 子弹的纵坐标
private int speed; // 子弹的速度
// 构造方法
public Bullet(int x, int y, int speed) {
this.x = x;
this.y = y;
this.speed = speed;
}
// getter和setter方法
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
}
```
3. 创建一个Game类,表示游戏,包括玩家飞机、敌机、子弹等属性和方法;
```
import java.util.ArrayList;
import java.util.List;
public class Game {
private Plane playerPlane; // 玩家飞机
private List<Plane> enemyPlanes; // 敌机列表
private List<Bullet> bullets; // 子弹列表
// 构造方法
public Game() {
// 初始化玩家飞机
playerPlane = new Plane(200, 500, 5, 100);
// 初始化敌机列表
enemyPlanes = new ArrayList<Plane>();
enemyPlanes.add(new Plane(50, 50, 3, 50));
enemyPlanes.add(new Plane(300, 100, 2, 60));
enemyPlanes.add(new Plane(150, 200, 4, 70));
// 初始化子弹列表
bullets = new ArrayList<Bullet>();
}
// 玩家飞机向上移动
public void moveUp() {
playerPlane.setY(playerPlane.getY() - playerPlane.getSpeed());
}
// 玩家飞机向下移动
public void moveDown() {
playerPlane.setY(playerPlane.getY() + playerPlane.getSpeed());
}
// 玩家飞机向左移动
public void moveLeft() {
playerPlane.setX(playerPlane.getX() - playerPlane.getSpeed());
}
// 玩家飞机向右移动
public void moveRight() {
playerPlane.setX(playerPlane.getX() + playerPlane.getSpeed());
}
// 发射子弹
public void shoot() {
bullets.add(new Bullet(playerPlane.getX() + 20, playerPlane.getY(), 10));
}
// 更新游戏状态
public void update() {
// 更新敌机位置
for (Plane enemyPlane : enemyPlanes) {
enemyPlane.setY(enemyPlane.getY() + enemyPlane.getSpeed());
}
// 更新子弹位置
for (Bullet bullet : bullets) {
bullet.setY(bullet.getY() - bullet.getSpeed());
}
// 判断子弹是否命中敌机
for (Bullet bullet : bullets) {
for (Plane enemyPlane : enemyPlanes) {
if (bullet.getX() >= enemyPlane.getX()
&& bullet.getX() <= enemyPlane.getX() + 50
&& bullet.getY() >= enemyPlane.getY()
&& bullet.getY() <= enemyPlane.getY() + 50) {
enemyPlane.setHp(enemyPlane.getHp() - 10);
bullets.remove(bullet);
}
}
}
// 判断敌机是否撞到玩家飞机
for (Plane enemyPlane : enemyPlanes) {
if (enemyPlane.getX() >= playerPlane.getX()
&& enemyPlane.getX() <= playerPlane.getX() + 50
&& enemyPlane.getY() >= playerPlane.getY()
&& enemyPlane.getY() <= playerPlane.getY() + 50) {
playerPlane.setHp(playerPlane.getHp() - 20);
enemyPlanes.remove(enemyPlane);
}
}
}
}
```
4. 创建一个Main类,表示程序入口,初始化窗口等;
```
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
// 创建游戏窗口
JFrame frame = new JFrame("飞机大战");
frame.setSize(500, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建游戏面板并添加到窗口中
GamePanel gamePanel = new GamePanel();
frame.add(gamePanel);
// 显示窗口
frame.setVisible(true);
// 启动游戏循环
while (true) {
gamePanel.repaint();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
```
5. 创建一个GamePanel类,表示游戏面板,绘制玩家飞机、敌机、子弹等;
```
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class GamePanel extends JPanel {
private Game game; // 游戏对象
// 构造方法
public GamePanel() {
game = new Game();
}
// 绘制游戏界面
public void paint(Graphics g) {
super.paint(g);
// 绘制玩家飞机
g.setColor(Color.BLUE);
g.fillRect(game.getPlayerPlane().getX(), game.getPlayerPlane().getY(), 50, 50);
// 绘制敌机
g.setColor(Color.RED);
for (Plane enemyPlane : game.getEnemyPlanes()) {
g.fillRect(enemyPlane.getX(), enemyPlane.getY(), 50, 50);
}
// 绘制子弹
g.setColor(Color.YELLOW);
for (Bullet bullet : game.getBullets()) {
g.fillRect(bullet.getX(), bullet.getY(), 10, 10);
}
}
}
```
这就是一个简单的Java飞机大战游戏,你可以根据自己的需求进行改进和扩展。
阅读全文