13.8-全棧Java筆記:打飛機遊戲實戰項目|Explode|MyGameFrame|Plane
爆炸效果的實現
飛機被炮彈擊中後,需要出現一個爆炸效果,讓我們的畫面更刺激。 爆炸效果的實現在遊戲開發中也很常見。
我們定義Exlode類來表示爆炸的信息,爆炸類和普通類不一樣的地方在於他實際上存儲了一系列爆炸的圖片,然後,進行輪播。最後,我們看到的就是一組酷炫的效果。
我們這裏準備了一系列爆炸圖片:
從爆炸開始的一個小火球到大火球,再到消失時的小火球。爆炸對象只需輪流加載這些圖片即可。
我們將這些圖片拷貝到項目下面,新建:images/explode文件夾,並將16張圖片拷貝到文件夾下面。
爆炸類的基本設計
【示例1】爆炸類Explode
package cn.sxt.game;
import java.awt.Graphics;
import java.awt.Image;
/*
* 爆炸類
*/
public class Explode {
double x,y;
static Image[ ] imgs = new Image[16];
static {
for(int i=0;i<16;i++){
imgs[i] = GameUtil.getImage("images/explode/e"+(i+1)+".gif");
imgs[i].getWidth(null);
}
}
int count;
public void draw(Graphics g){
if(count<=15){
g.drawImage(imgs[count], (int)x, (int)y, null);
count++;
}
}
public Explode(double x,double y){
this.x = x;
this.y = y;
}
}
我們定義了Image[ ]來保存圖片信息,並且使用了static代碼塊,也就是在類加載時就加載這些圖片,並且從屬於類,不需要每次創建爆炸對象都加載圖片,保證了運行的效率。
通過計數器count來控制到底畫哪個圖片,由於我們圖片命名非常規範,是按照順序從1-16,這樣程序依次讀取這些圖片對象即可。
主窗口類創建爆炸對象
如果要顯示爆炸對象,我們仍然需要在主窗口中定義爆炸對象,並且在飛機和炮彈碰撞時,在飛機坐標處創建爆炸對象,顯示爆炸效果。
【示例2】MyGameFrame:增加爆炸效果
public class MyGameFrame extends Frame {
Image bgImg = GameUtil.getImage("images/bg.jpg");
Image planeImg = GameUtil.getImage("images/plane.png");
Plane plane = new Plane(planeImg,300,300,3);
ArrayList<Shell> shellList = new ArrayList<Shell>();
Explode bao;//創建爆炸對象
//paint方法作用是:畫出整個窗口及內部內容。被系統自動調用。
@Override
public void paint(Graphics g) {
g.drawImage(bgImg, 0, 0, null);
plane.drawMySelf(g); //畫出飛機本身
//畫出容器中所有的子彈
for(int i=0;i<shellList.size();i++){
Shell b = shellList.get(i);
b.draw(g);
//飛機和所有炮彈對象進行矩形檢測
boolean peng = b.getRect().intersects(plane.getRect());
if(peng){
plane.live = false; //飛機死掉,畫面不顯示
if(bao==null){
bao = new Explode(plane.x,plane.y);
}
bao.draw(g);
}
}
}
//其余代碼和上一個版本一致,限於篇幅,不再展示
}
程序執行結果,當飛機和炮彈碰撞時發生爆炸,如圖3所示:
「全棧Java筆記」是一部能幫大家從零到一成長為全棧Java工程師系列筆記。筆者江湖人稱 Mr. G,10年Java研發經驗,曾在神州數碼、航天院某所研發中心從事軟件設計及研發工作,從小白逐漸做到工程師、高級工程師、架構師。精通Java平臺軟件開發,精通JAVAEE,熟悉各種流行開發框架。
筆記包含從淺入深的六大部分:
A-Java入門階段
B-數據庫從入門到精通
C-手刃移動前端和Web前端
D-J2EE從了解到實戰
E-Java高級框架精解
F-Linux和Hadoop
本文出自 “全棧Java筆記” 博客,請務必保留此出處http://javanew.blog.51cto.com/12931675/1954200
13.8-全棧Java筆記:打飛機遊戲實戰項目|Explode|MyGameFrame|Plane