一、项目简介
通过JAVA语言中的JFrame类中的方法实现简易的雷霆战机小游戏,功能包括飞机移动,发射子弹,生成敌机以及摧毁敌机等.
二、项目分析
模块一:玩家飞机模块
要实现这个简易的小游戏,玩家飞机必不可少,我们只需创建一个MainPlane类,在其中定义飞机的初始坐标,飞机的宽度高度以及飞机的默认速度,再通过多线程的方式来设置飞机的移动刷新,当飞机移动时,根据移动方向来改变坐标,如向左移动,就令x坐标减少相应的初始速度值,这样即可实现该功能模块.
模块二:敌机模块
此模块与玩家飞机模块类似,也需创建一个敌机的实体类并定义初始坐标,默认宽度与高度以及敌机的默认速度,并且除了通过多线程来控制敌机的刷新之外,还要通过Rectangle这个类来进行子弹碰撞检测,通过给定敌机和子弹的长宽以及坐标,我们可以通过子弹图片的大小以及敌机图片的大小来判断,判断两个图片是否冲突,若检测到碰撞,即显示飞机爆炸的图片,并把敌机移除,除此之外,当飞机飞出窗口的时候,也要移除飞机,这样即可实现这个模块.
模块三:玩家移动与子弹模块
为了完整的游玩游戏,我们需添加一个子弹模块,与之前的两个模块功能类似,设置子弹的初始属性,而玩家移动模块则需要通过继承keyAdapter类来添加键盘事件监听,只需重写键盘按下以及松开事件监听即可,我们知道上下左右以及w、a、s、d键的键值为多少,即可通过这两个方法判断按下的键是否为这几个键,定义一个boolean类型的值,若按下了这几个键,这个值即为true,再传到玩家飞机模块实现飞机移动即可.
模块四:游戏主界面以及功能实现模块
这是最后一个模块,这个模块用来实现此前定义的所有功能,通过构造函数设置一个游玩窗口,并通过多线程来实例化进行玩家飞机、敌机以及子弹的分别创建与刷新,只需通过重写paint方法并通过BufferedImage类来画出玩家飞机以及敌机和子弹,再通过repaint和线程来实现画面的刷新;为了创造出多个敌机以及多个子弹的效果,我们可以定义两个集合来存储敌机和子弹,为了保证线程的安全性,我们可以运用Vector集合来存储这两个数据,并实现相应功能.
三、项目演示
四、代码
玩家飞机模块:
import javax.swing.*;
import java.awt.*;
public class MainPlane extends Thread{
//飞机的坐标
int x = 210,y = 720;
//飞机的宽高
int width = 50,height = 50;
//飞机移动的速度
int speed = 10;
//上下左右
boolean up,down,left,rig