Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 怎樣在Android開發中FPS游戲實現的兩種方式比較

怎樣在Android開發中FPS游戲實現的兩種方式比較

編輯:關於Android編程

如何用Android平台開發FPS游戲,其實現過程有哪些方法,這些方法又有哪些不同的地方呢?首先讓我們先了解下什麼是FPS

英文名:FPS (First Personal Shooting)

第一人稱視角射擊游戲顧名思義就是以玩家的主觀視角來進行射擊游戲。玩家們不再像別的游戲一樣操縱屏幕中的虛擬人物來進行游戲,而是身臨其境的體驗游戲帶來的視覺沖擊,這就大大增強了游戲的主動性和真實感。早期第一人稱類游戲所帶給玩家的一般都是的屏幕光線的刺激,簡單快捷的游戲節奏。隨著游戲硬件的逐步完善,以及各種類游戲的不斷結合。第一人稱射擊類游戲提供了更加豐富的劇情以及精美的畫面和生動的音效。例如我們玩的CS、Quake系列、UT系列、榮譽勳章、使命召喚、DOOM、彩虹6號、殺手47系列、穿越火線、反恐精英Online等等游戲。

 

 

01 private boolean drawall=false;

02  private RefreshHandler mRedrawHandler = new RefreshHandler();

03     class RefreshHandler extends Handler {

04  

05         @Override

06         public void handleMessage(Message msg) {

07          KetrisCanvas.this.update();

08          KetrisCanvas.this.invalidate();

09         }

10  

11         public void sleep(long delayMillis) {

12          this.removeMessages(0);

13             sendMessageDelayed(obtainMessage(0), delayMillis);

14         }

15     };

16     long mLastMove=0;

17     long mMoveDelay=30;

18     public void update() {

19             long now = System.currentTimeMillis();

20  

21             if (now - mLastMove > mMoveDelay) {

22                 //gameLogic(); 這裡是游戲邏輯

23               

24                 mLastMove = now;

25             }

26             mRedrawHandler.sleep(mMoveDelay);

27         

28     }

29 public void onDraw(Canvas canvas)

30 {super.onDraw(canvas);

31  this.paint(); //這裡是繪制到緩沖屏幕

32  canvas.drawBitmap(g.offs, 0, 0, g.p);

33 }

2. [代碼][Java]代碼     跳至 [1] [2] [全屏預覽]
view source print?01 public class KetrisCanvas extends SurfaceView implements SurfaceHolder.Callback

02  

03 { 

04  

05 在構造方法完成   下面2句

06      holder = this.getHolder();//獲取holder

07      holder.addCallback(this);

08  

09  

10 @Override

11 public void surfaceChanged(SurfaceHolder holder, int format, int width,

12   int height) {

13  // TODO Auto-generated method stub

14   

15 }

16  

17 Thread t;

18 boolean isrun=true;

19 final SurfaceHolder holder;

20 @Override

21 public void surfaceCreated(SurfaceHolder holder) {

22  // TODO Auto-generated method stub

23   

24   t=new Thread(){

25   public void run()

26   { while(isrun)

27   {

28    long start=System.currentTimeMillis();

29       Canvas canvas=KetrisCanvas.this.holder.lockCanvas(null);

30     //這裡完成游戲邏輯 

31  

32     paint();//這裡是屏幕繪制

33       canvas.drawBitmap(g.offs, 0, 0,null );

34       

35       KetrisCanvas.this.holder.unlockCanvasAndPost(canvas);

36       long end=System.currentTimeMillis();

37       if(200>end-start)

38       {

39        try{Thread.sleep(200-(end-start));}catch(Exception e){}

40       }

41   }

42   }

43  };

44  t.start();

45 }

46 @Override

47 public void surfaceDestroyed(SurfaceHolder holder) {

48  // TODO Auto-generated method stub

49  if(t!=null)

50  { isrun=false;

51  }

52 }


 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved