java小游戏飞机大战_飞机大战小游戏Java(1)

雷电游戏大家应该很多都玩过吧(至少95后的我有段时间一直玩····没玩过可能你太年轻了hhh),然后我们今天做一个类似的小游戏。软件:eclipse.exe

编程语言:JAVA

首先,还是要做个窗口界面:

public class GameUI extends JFrame{

public void showUI(){

//創建创窗体对象

this.setSize(800, 700);

this.setTitle("飞机大战");

//设置退出进程的方法

this.setDefaultCloseOperation(3);

this.getContentPane().setBackground(Color.WHITE);

//设置居中显示

this.setLocationRelativeTo(null);

this.setVisible(true);

Graphics g=this.getGraphics();

}

public static void main(String[] args){

GameUI ui = new GameUI();

ui.showUI();

}

}

运行结果:

嗯,这部分很简单。然后呢,我们需要把背景图换一下,营造出星空的那种,随机就在网上找了图,然后利用重绘将图附上,这其实也很简单,代码:

public void paint(Graphics g) {

super.paint(g);

ImageIcon image = new ImageIcon(this.getClass().getResource("背景1.jpg"));

g.drawImage(image.getImage(), 0, 0, this.getWidth(), this.getHeight(), null);

}

加上之后就出效果了

一下子有感觉了吧加了背景图hhh

然后我们还要在图上添加我们的战斗机,因为后续战斗机还要运动发弹等等,故新建飞机类(MyPlane),初始好位置,速度,大小等参数,新建方法(画飞机)与之前画背景图类似,代码如下:

private int x, y, vx, vy, w = 100, h = 100;

private ImageIcon mp;

public MyPlane(int x, int y) {

this.x = x;

this.y = y;

mp = new ImageIcon(this.getClass().getResource("飞机1.png"));

}

/**

* 画飞机

*

* @param g

*/

public void drawPlane(Graphics g) {

g.drawImage(mp.getImage(), x, y, w, h, null);

}

然后构造方法,传递位置参数x,y,在监听类中的按下space键中新建MyPlane对象调用画飞机的方法,计算下数值,将其画在窗体正下方。(其中要得到窗体的长宽需要传递,写在构造方法里)

这样就可以在窗体上按下空格后,画出我们的飞机了,运行结果如下:

然后我们还需要按键将其动起来,在这里我们用上我们前面学的多线程吧。

新建线程类(GameThread),加Runnable接口,重写run抽象方法,类似之前的多线程小球循环执行,调用MyPlane里的drawplane(),当然要想调用需要在构造方法里传递。

这里我们需要通过键盘控制飞机运动,思路是通过键盘监听器得到键入的值,为我们需要用的按键(WASD)加功能,功能是对飞机速度赋值。

这里我们在飞机类中直接构造set和get方法:在Source里选Generate Getter and Setters选需要操作的变量。

然后在监听类中keyPressed()中写方法,比如键入W就应调用MyPlane里的setVy(int vy),带入我们需要的vy值。写完后结果并不是我们想要的:按下方向键后就朝着方向一直运行,这是不行的,我们需要按一下动一下,一直按着才一直动,故要在keyReleased()中将vx,vy重新赋值为零,即松开后不加速度不动。

这样就可以做出如下结果:

是不是发现需要把轨迹给清除了,这里在画飞机前绘出背景图,这样画下一个飞机前就能把前一个飞机给清除了,代码如下:

结果:

是不是就没留下痕迹了,然后给飞机加个界,别超出窗口范围,这就可以在MyPlane 的x,y着手了,加条件啥时候速度要为0 ,自己去想哈。

就这样,我们画出了背景图、自己的飞机,而且能通过WASD键操控飞机,是不是很棒呢,下期我们钻研下如何发射子弹,出现敌机等等问题。

怀挺,你今天更博学了吗?

你可能感兴趣的:(java小游戏飞机大战)