• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • J2ME 2D小游戲入門之旅(五) 實現爆炸效果、并加入道具導彈

    發表于:2007-07-01來源:作者:點擊數: 標簽:
    五、實現爆炸效果、并加入道具導彈 大多數 游戲 都有著豐富的效果類,在精靈移動類游戲中曾一度以此為一個重要的賣點,。光光是一些豐富的特效是不能夠產生一個好的游戲的,但是一個好的游戲是萬萬不能缺少好的效果的。 很多人認為游戲的效果層有時和跟游戲邏
    五、實現爆炸效果、并加入道具導彈

    大多數游戲都有著豐富的效果類,在精靈移動類游戲中曾一度以此為一個重要的賣點,。光光是一些豐富的特效是不能夠產生一個好的游戲的,但是一個好的游戲是萬萬不能缺少好的效果的。

    很多人認為游戲的效果層有時和跟游戲邏輯本身并沒有太大的關系,往往就是在最終屏幕上再畫上一層效果層。但是游戲邏輯和效果層之間的通信是很重要的。這種通信往往體現在延時與等待上。比如飛機爆炸時,不接受任何用戶輸入,并且爆炸效果還要繼續跟隨飛機墜落,甚至爆炸的范圍會影響周圍的物體,要等待爆炸結果結束了才繼續進行游戲。游戲邏輯和效果層之間的通信是很復雜的問題。在這里我突然有了罪惡感,我們沒有對游戲進行任何的分析就起步了,游戲完全是基于硬編碼的,我想到那兒,大家跟著看到那兒。飛機類僅僅是一個sprite,沒有設計成一個狀態機,這也就使得我們的效果層和邏輯層的通信有些卡通了。也許本文給了你編寫自己第一個游戲的喜悅,也帶給了你對游戲擴展性與復雜性的一絲擔憂?;蛟S這比便一個硬編碼的游戲更有意義呢?誰說得好呢,現還是以為那些擴展性良好的游戲是偉大游戲構架師的杰作吧,相信你有了一兩個好的想法后會重新設計這個游戲的,使之稍微有一些像個“系統”。然而好的技術不一定產生好的游戲……呵呵

    有扯遠了,會到現實吧,boys and girls!goon.

    描述一下我們的爆炸效果,在子彈擊中飛機后,子彈要迅速消失,飛機圖像保持不變,此時將爆炸效果至于飛機圖像之上,然后開始顯示boom動畫,在此期間,飛機不接受任何移動指示,因為他lose control。在爆炸效果后飛機消失。



    我們的爆炸效果類:

    GameObject explosion;//

    初始化once:

    img=ImageTools.getImage("/pic/explosion.png");//

    explosion=new GameObject(img,32,32);



    初始化:

    explosion.reset();

    explosion.lifetime=3;//生命周期定位三楨



    邏輯處理:

    if (gameover) {//如果游戲結束,顯示效果類

    explosion.paint(g);

    explosion.update();

    if(!explosion.alive){//當生命周期結束了

    plane.alive=false;//關閉plane

    g.setColor(255,255,255);//輸出評語,下回分解

    g.drawString(StringTools.timeOpinion(gametime),5,22,g.LEFT|g.TOP);

    g.drawString("fly 0.1 ver by favo yang",2,100,g.LEFT|g.TOP);

    g.drawString("E-mail : favoyang@yahoo.com",2,115,g.LEFT|g.TOP);

    g.drawString("simulate from:",2,130,g.LEFT|g.TOP);

    g.drawString("Mr.tony @#s <hold on 20sec 1.20> ",2,145,g.LEFT|g.TOP);

    g.drawString("hello tony, just funny.",2,160,g.LEFT|g.TOP);

    }

    }



    現在你看我是如何解決效果層與邏輯層之間的通信的,我使用的是全局變量gameover,在簡單游戲中使用大量的全局狀態變量也是一種常見的方法,可以避免動腦勁。不過缺點明顯,游戲硬編碼,結構既不清晰也不漂亮,幾乎沒有擴展性。所以說最好還是將飛機基于狀態機設計,并將效果類設計成含有回調函數的抽象類,然后繼承效果類實現回調函數來實現通信。至于總體層次上可以用堆棧將繪畫單元串起來。還有分層處理等等…給你個思考的起點…



    導彈的是實現,是不是你已經有個想法了呢,其實就是利用Bullets.killbullets。

    邏輯處理

    if(bomb.alive){

    bomb.moveto(plane.sprite.getX()-20,plane.sprite.getY()-20);

    bomb.paint(g);

    bomb.update();

    bullets.killbullets(plane.sprite,32);

    }



    在這里我不得不提一句,將生命概念封裝在GameObject中是很好的(其實我們只是將其用作顯示關鍵字),但將生命周期安排在GameObject中有欠妥當,生命周期也不一定就是基于楨的,有時基于時間,有時還有別的什么。我是說她足夠復雜到交給另一個獨立類處理,在這里實際需要的是一個足夠強大的顯示方法,其支持以楨數為參數顯示罷了。





    其實我覺得自己說多了,也許你也被我搞糊涂了。對了目錄上少了一節,我們還缺少游戲的獎懲系統,下回我補上。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>