路是爬出來的

          游戲入門之一 雷電 精靈模型

                設(shè)計游戲我個人認(rèn)為一個好的角色操作將事半工倍。所以我現(xiàn)在把雷電的所有角色抽象成一個Fairy。里面有實現(xiàn)繪制的方法以及移動,碰撞算法。

                在這里我強(qiáng)調(diào)下,我的碰撞算法是簡單的實現(xiàn)。就是一個物體為參照物體。在10像素范圍內(nèi)x,y軸如果發(fā)現(xiàn)另外一個物體侵入則判斷為true,發(fā)之為false

          java 代碼


           


          1.    

          2. package org.wuhua.game.model;  

          3.   

          4. import javax.microedition.lcdui.Graphics;  

          5. import javax.microedition.lcdui.Image;  

          6.   

          7. import org.wuhua.game.util.Log;  

          8.    

          9. /** 

          10.  * 類名:Sprite.java 

             
             

          11.  * 編寫日期: 2006-11-29 

             

          12.  * 程序功能描述:建立精靈物體模型 

             

          13.  * Demo: 

             

          14.  * Bug: 

             

          15.  *  

          16.  * 程序變更日期 :

             
             

          17.  * 變更作者 :

             
             

          18.  * 變更說明 :

             

          19.  *  

          20.  * @author wuhua 

             
             

          21.  */  

          22. public class Fairy {  

          23.     static Log log = Log.getLog("Fairy");  

          24.     /** 

          25.      * position of Fairy in x offset  

          26.      */  

          27.     int x; // = 0;  

          28.   

          29.     /** 

          30.      * position of Fairy in y offset  

          31.      */  

          32.     int y; // = 0;  

          33.   

          34.     /** 

          35.      * width of layer  

          36.      */  

          37.     int width; // = 0;  

          38.   

          39.     /** 

          40.      * height of layer 

          41.      */  

          42.     int height; // = 0;  

          43.   

          44.     /**  

          45.      * If the Layer is visible it will be drawn when paint 

          46.      * is called. 

          47.      */  

          48.     boolean visible = true;  

          49.       

          50.     /** 

          51.      * 圖片資源 

          52.      *   

          53.      */  

          54.       

          55.     Image fairy;   

          56.       

          57.     public Fairy(Image fairy,int x, int y){  

          58.         this.fairy = fairy;  

          59.         this.x = x;  

          60.         this.y = y;  

          61.     }  

          62.       

          63.     public void setPosition(int x, int y) {  

          64.         this.x = x;  

          65.         this.y = y;  

          66.     }  

          67.       

          68.     public void move(int dx, int dy) {    

          69.        

          70.         x += dx;  

          71.         y += dy;  

          72.     }  

          73.       

          74.     public void setVisible(boolean visible) {  

          75.         this.visible = visible;  

          76.     }  

          77.   

          78.      

          79.     public final boolean isVisible() {  

          80.         return visible;  

          81.     }  

          82.   

          83.     public final int getHeight() {  

          84.         return height;  

          85.     }  

          86.   

          87.     public final int getWidth() {  

          88.         return width;  

          89.     }  

          90.   

          91.     public final int getX() {  

          92.         return x;  

          93.     }  

          94.   

          95.     public final int getY() {  

          96.         return y;  

          97.     }  

          98.       

          99.     public void paint(Graphics g){  

          100.         if (g == null) {  

          101.             throw new NullPointerException("Graphics 不存在");  

          102.         }  

          103.         if(this.visible){  

          104.             //log.debug("x=" + x + " y=" + y);   

          105.             g.drawImage(fairy, x, y,  Graphics.TOP | Graphics.HCENTER);  

          106.         }  

          107.     }  

          108.   

          109.     /** 

          110.      * 進(jìn)行簡單的碰撞算法, 希望高手可以給個建議。 

          111.      * @param f 

          112.      * @return 

          113.      */  

          114.     public final boolean collidesWith(Fairy f){  

          115.           

          116.        

          117.         if((f.getX() >= this.getX() - 20 && f.getX() <= this.getX() + 20)  

          118.                 &&  (f.getY() >= this.getY() - 10  && f.getY() <= this.getY()+10 )){  

          119.             //log.debug("this.getY=" + this.getY());  

          120.             //log.debug("f.getY=" + f.getY());  

          121.                

          122.                

          123.             return true;  

          124.         }  

          125.               

          126.         return false;  

          127.     }  

          128.    

          129.   

          130. }  


          posted on 2006-12-30 09:24 路是爬出來的 閱讀(1316) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 济宁市| 射阳县| 鄂温| 武陟县| 肥城市| 天峻县| 城步| 榆树市| 长春市| 镇江市| 土默特右旗| 界首市| 南昌市| 巴林左旗| 武平县| 周口市| 秭归县| 岑溪市| 阜阳市| 新平| 江川县| 麻江县| 五大连池市| 抚顺县| 闸北区| 巴青县| 张家港市| 临沧市| 大田县| 夏河县| 乐陵市| 潼南县| 沁源县| 蓝山县| 波密县| 大荔县| 腾冲县| 青河县| 湛江市| 寿光市| 阳东县|