設(shè)計(jì)游戲我個(gè)人認(rèn)為一個(gè)好的角色操作將事半工倍。所以我現(xiàn)在把雷電的所有角色抽象成一個(gè)Fairy。里面有實(shí)現(xiàn)繪制的方法以及移動(dòng),碰撞算法。
????? 在這里我強(qiáng)調(diào)下,我的碰撞算法是簡單的實(shí)現(xiàn)。就是一個(gè)物體為參照物體。在10像素范圍內(nèi)x,y軸如果發(fā)現(xiàn)另外一個(gè)物體侵入則判斷為true,發(fā)之為false

????? 在這里我強(qiáng)調(diào)下,我的碰撞算法是簡單的實(shí)現(xiàn)。就是一個(gè)物體為參照物體。在10像素范圍內(nèi)x,y軸如果發(fā)現(xiàn)另外一個(gè)物體侵入則判斷為true,發(fā)之為false
java 代碼
- ???
- package?org.wuhua.game.model;??
- ??
- import?javax.microedition.lcdui.Graphics;??
- import?javax.microedition.lcdui.Image;??
- ??
- import?org.wuhua.game.util.Log;??
- ???
- /**?
- ?*?類名:Sprite.java?
?? - ?*?編寫日期:?2006-11-29?
? - ?*?程序功能描述:建立精靈物體模型?
? - ?*?Demo:?
? - ?*?Bug:?
? - ?*??
- ?*?程序變更日期?:
?? - ?*?變更作者?:
?? - ?*?變更說明?:
? - ?*??
- ?*?@author?wuhua?
?? - ?*/??
- public?class?Fairy?{??
- ????static?Log?log?=?Log.getLog("Fairy");??
- ????/**?
- ?????*?position?of?Fairy?in?x?offset??
- ?????*/??
- ????int?x;?//?=?0;??
- ??
- ????/**?
- ?????*?position?of?Fairy?in?y?offset??
- ?????*/??
- ????int?y;?//?=?0;??
- ??
- ????/**?
- ?????*?width?of?layer??
- ?????*/??
- ????int?width;?//?=?0;??
- ??
- ????/**?
- ?????*?height?of?layer?
- ?????*/??
- ????int?height;?//?=?0;??
- ??
- ????/**??
- ?????*?If?the?Layer?is?visible?it?will?be?drawn?when?
paint
? - ?????*?is?called.?
- ?????*/??
- ????boolean?visible?=?true;??
- ??????
- ????/**?
- ?????*?圖片資源?
- ?????*???
- ?????*/??
- ??????
- ????Image?fairy;???
- ??????
- ????public?Fairy(Image?fairy,int?x,?int?y){??
- ????????this.fairy?=?fairy;??
- ????????this.x?=?x;??
- ????????this.y?=?y;??
- ????}??
- ??????
- ????public?void?setPosition(int?x,?int?y)?{??
- ????????this.x?=?x;??
- ????????this.y?=?y;??
- ????}??
- ??????
- ????public?void?move(int?dx,?int?dy)?{????
- ???????
- ????????x?+=?dx;??
- ????????y?+=?dy;??
- ????}??
- ??????
- ????public?void?setVisible(boolean?visible)?{??
- ????????this.visible?=?visible;??
- ????}??
- ??
- ?????
- ????public?final?boolean?isVisible()?{??
- ????????return?visible;??
- ????}??
- ??
- ????public?final?int?getHeight()?{??
- ????????return?height;??
- ????}??
- ??
- ????public?final?int?getWidth()?{??
- ????????return?width;??
- ????}??
- ??
- ????public?final?int?getX()?{??
- ????????return?x;??
- ????}??
- ??
- ????public?final?int?getY()?{??
- ????????return?y;??
- ????}??
- ??????
- ????public?void?paint(Graphics?g){??
- ????????if?(g?==?null)?{??
- ????????????throw?new?NullPointerException("Graphics?不存在");??
- ????????}??
- ????????if(this.visible){??
- ????????????//log.debug("x="?+?x?+?"?y="?+?y);???
- ????????????g.drawImage(fairy,?x,?y,??Graphics.TOP?|?Graphics.HCENTER);??
- ????????}??
- ????}??
- ??
- ????/**?
- ?????*?進(jìn)行簡單的碰撞算法,?希望高手可以給個(gè)建議。?
- ?????*?@param?f?
- ?????*?@return?
- ?????*/??
- ????public?final?boolean?collidesWith(Fairy?f){??
- ??????????
- ???????
- ????????if((f.getX()?>=?this.getX()?-?20?&&?f.getX()?<=?this.getX()?+?20)??
- ????????????????&&??(f.getY()?>=?this.getY()?-?10??&&?f.getY()?<=?this.getY()+10?)){??
- ????????????//log.debug("this.getY="?+?this.getY());??
- ????????????//log.debug("f.getY="?+?f.getY());??
- ???????????????
- ???????????????
- ????????????return?true;??
- ????????}??
- ??????????????
- ????????return?false;??
- ????}??
- ???
- ??
- }??