jet 噴氣式(飛機)
1. 在androidmanifest.xml檔案中
// 設定menifest的package屬性
package="com.example.android.jetboy"
android:theme="@android:style/theme.notitlebar"
// activity(.jetboy)的螢幕方向設定為水平方向
android:screenorientation="landscape"
2. 在jetboy.oncreate方法中
// 獲取jet檢視和jet執行緒
// private jetboyview mjetboyview;
mjetboyview = (jetboyview)findviewbyid(r.id.jetboyview);
// private jetboythread mjetboythread;
mjetboythread = mjetboyview.getthread();
// 獲取main布局中定義的其他檢視
(略)3. 在res/layout/main.xml檔案中
// 使用framelayout布局
// 新增jetboyview檢視
// 新增「幫助」文字檢視 設定為不可見
// 新增「開始」按鈕
// 新增「重新開始」按鈕 設定為不可見
// 新增「時間」文字檢視 設定為不可見
4. 在jetboyview中
jetboyview繼承su***ceview 實現su***ceholder.callback
5. 在jetboyview.gameevent的構造方法中
// 記錄下當前時間
// long eventtime;
eventtime = system.currenttimemillis();
6. 在jetboyview.keygameevent中
keygameevent繼承gameevent
// 定義變數keycode, msg, up; 在構造方法中初始化
public int keycode;
public keyevent msg;
public boolean up;
7. 在jetboyview.jetgameevent中
jetgameevent繼承gameevent
// 定義變數player, segment, track, channel, controller, value; 在構造方法中初始化
public jetplayer player;
public short segment;
public byte track;
public byte channel;
public byte controller;
public byte value;
8. 在jetboyview.jetboyview方法中
// 獲取su***ceholder 新增callback監聽物件
su***ceholder holder = getholder();
holder.addcallback(this);
// 建立jetboythread物件 傳遞su***ceholder物件, context物件, handler物件
thread = new jetboythread(holder, context, new handler() {
// 設定focusable屬性為true
setfocusable(true);
9. 在(new)handler物件的handlemessage(message m)方法中
// 獲取時間 顯示在時間文字檢視上
mtimerview.settext(m.getdata().getstring("text"));
// 如果m.getdata().getstring("state_lose")不為空
// 「重試」按鈕可見 「時間」標籤不可見 「幫助」標籤可見
// 如果mhittotal大於等於50 提示win
10. 在jetboyview的重寫方法onwindowfocuschanged(boolean haswindowfocus)中
如果haswindowfocus為true時 呼叫thread.pause();
11. 在jetboyview中實現的3個抽象方法
su***cechanged(su***ceholder holder, int format, int width, int height)
su***cecreated(su***ceholder holder)
su***cedestroyed(su***ceholder holder)
12. 在jetboyview.su***cechanged方法中
thread.setsu***cesize(width, height);
13. 在jetboyview.su***cecreated方法中
thread.setrunning(true);
thread.start();
14. jetboyview.su***cedestroyed方法中
boolean retry = true;
thread.setrunning(false);
每次retry為true時
thread.join();
retry = false;
15. 在jetthread中
// android.media.jetplayer.onjeteventlistener
jetthread繼承thread 實現onjeteventlistener
// 定義5種狀態
public static final int state_start = -1;
public static final int state_play = 0;
public static final int state_lose = 1;
public static final int state_pause = 2;
public static final int state_running = 3;
16. 在onjeteventlistener中宣告4個抽象方法 需要被實現
onjetevent(jetplayer player, short segment, byte track, byte channel, byte controller, byte value)
onjetuseridupdate(jetplayer player, int userid, int repeatcount)
onjetnumqueuedsegmentupdate(jetplayer player, int nbsegments)
onjetpauseupdate(jetplayer player, int paused)
17. 在jetthread構造方法jetboythread(su***ceholder, context, handler)中
// 獲取
mtitlebg = bitmapfactory.decoderesource(mres, r.drawable.title_hori);
18. 在jetthread.initializejetplayer()方法中
// private jetplayer mjet = null;
mjet = jetplayer.getjetplayer();
// 設定onjeteventlistener監聽物件
mjet.seteventlistener(this);
// 載入jet檔案
mjet.loadjetfile(mcontext.getresources().openrawresourcefd(r.raw.level1));
// 其他
mjet.queuejetsegment(0, 0, 0, 0, 0, ssegmentid);
mjet.queuejetsegment(1, 0, 4, 0, 0, ssegmentid);
mjet.queuejetsegment(1, 0, 4, 1, 0, ssegmentid);
mjet.setmutearray(mutemask[0], true);
19. 在jetthread.dodraw(canvas)方法中
// 如果mstate等於running
dodrawrunning(canvas);
// 如果mstate等於start
dodrawready(canvas);
// 如果mstate等於play或lose
mtitlebg2 = bitmapfactory.decoderesource(mres, r.drawable.title_bg_hori);
dodrawplay(canvas);
JetBoy遊戲深入解析(上) 框架分析
先介紹遊戲介面的組成 asteroid 小行星,隕石 ship 飛船 beam 雷射束 其他的都是背景。這個遊戲如何玩了?通過中間按鈕來控制飛船發射雷射,擊中隕石得分,飛船的位置與當前最新的隕石保證水平。如何切換遊戲介面的橫豎?這個相信每個開發人員應該知道吧 ctrl f12 主要類如下 主要類功能...
JetBoy遊戲深入解析(上) 框架分析
先介紹遊戲介面的組成 asteroid 小行星,隕石 ship 飛船 beam 雷射束 其他的都是背景。這個遊戲如何玩了?通過中間按鈕來控制飛船發射雷射,擊中隕石得分,飛船的位置與當前最新的隕石保證水平。如何切換遊戲介面的橫豎?這個相信每個開發人員應該知道吧 ctrl f12 主要類如下 主要類功能...
嚴肅遊戲的應用研究
一 嚴肅遊戲 serious games 這是乙個比較新的概念,在2004年由美國首先提出了這個概念。在2004年以及2005年 嚴肅遊戲峰會 serious games summit 裡,參與會議的大多數人對嚴肅遊戲的概念的定義是 1 遠超越傳統遊戲市場的互動科技應用,包括人員訓練 政策 分析 視...