路是爬出來的

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

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

                在這里我強(qiáng)調(diào)下,我的碰撞算法是簡(jiǎn)單的實(shí)現(xiàn)。就是一個(gè)物體為參照物體。在10像素范圍內(nèi)x,y軸如果發(fā)現(xiàn)另外一個(gè)物體侵入則判斷為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)行簡(jiǎn)單的碰撞算法, 希望高手可以給個(gè)建議。 

          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) 評(píng)論(0)  編輯  收藏


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 鞍山市| 塔河县| 朝阳市| 雷州市| 金溪县| 城固县| 河南省| 湘西| 昌吉市| 蓬莱市| 莆田市| 阿城市| 项城市| 潍坊市| 霍山县| 鲜城| 大姚县| 桐梓县| 隆安县| 新巴尔虎右旗| 绵阳市| 临朐县| 赞皇县| 吉安市| 广西| 安吉县| 紫阳县| 芜湖市| 荣昌县| 运城市| 揭东县| 宜兰县| 通河县| 封开县| 屏山县| 江城| 阿克苏市| 万安县| 漳平市| 高淳县| 根河市|