/**
* <p>Title: Mario</p>
* <p>Description:
* You cannot remove this copyright and notice.
* You cannot use this file any part without the express permission of the author.
* All Rights Reserved</p>
* <p>Copyright: lizhenpeng (c) 2004</p>
* <p>Company: LP&P</p>
* @author lizhenpeng
* @version 1.0.0
*/
package mario;
import javax.microedition.lcdui.*;
import lipeng.*;
import java.io.*;
public class MarioMainSprite
extends LPSprite
{
public MarioMainSprite(MarioGameManage gm, LPMaps map)
{
this.gm = gm;
this.judgeMap = map;
mainSpriteState = SMALL_SPRITE;
this.gm = gm;
}
//method
public void action()
{
bgdx=0;
bgdy=0;
switch(mainSpriteState)
{
case GROW_SPRITE:
if(++growCnt==10)
{
mainSpriteState=NORMAL_SPRITE;
growCnt=0;
}
else
{
if(growCnt%2==0)
{
y+=16;
}
else
{
y-=16;
}
}
break;
case BECOME_FIRE:
if(++becomeCnt==10)
{
mainSpriteState=FIRE_SPRITE;
becomeCnt=0;
}
break;
case DEAD_SPRITE:
if(deadCnt==0)
{
dy=-10;
frameCnt=10;
}
frameCnt=10;
++dy;
y+=dy;
if(++deadCnt>=20)
{
deadCnt=0;
mainSpriteState=SMALL_SPRITE;
gm.gameState=MarioGameManage.GAMESTATE_REINIT;
}
break;
case BECOME_SMALL:
if(++becomeCnt==10)
{
mainSpriteState=SMALL_SPRITE;
becomeCnt=0;
}
break;
default:
{
dy+=2;
checkSpriteCollisionVertical();
checkTileCollisionVertical();
mainSpriteDamage();
y+=dy;
if(y+this.judgeMap.y<0)
{
y=0;
dy=0;
}
if(y<=MarioMIDlet.gameCanvas.height/4
||
((this.judgeMap.y!=
this.judgeMap.tileSize*this.judgeMap.h-
MarioMIDlet.gameCanvas.height)
&&y>=MarioMIDlet.gameCanvas.height/4)
)
{
this.bgdy=(MarioMIDlet.gameCanvas.height/4-y)>>2;
if(bgdy-this.judgeMap.y<
MarioMIDlet.gameCanvas.height-
this.judgeMap.tileSize*this.judgeMap.h)
{
bgdy=MarioMIDlet.gameCanvas.height-
this.judgeMap.tileSize*this.judgeMap.h+this.judgeMap.y;
}
if((this.judgeMap.y<=0)&&y<MarioMIDlet.gameCanvas.height/4)
{
this.judgeMap.y=0;
bgdy=0;
}
}
else
{
bgdy=0;
}
if((allAction&LPKeyMask.MASK_KEY_LEFT)!=0)
{
this.isLeft=true;
if(--dx<-MOVE_SPEED)
{
dx=-MOVE_SPEED;
}
if(checkTileCollisionHorizon())
{
dx=0;
}
}
else if((allAction&LPKeyMask.MASK_KEY_RIGHT)!=0)
{
this.isLeft=false;
if(++dx>MOVE_SPEED)
{
dx=MOVE_SPEED;
}
if(checkTileCollisionHorizon())
{
dx=0;
}
}
else
{
if(dx>0)
{
if(checkTileCollisionHorizon())
{
dx=0;
}
else
{
--dx;
}
}
else if(dx<0)
{
if(checkTileCollisionHorizon())
{
dx=0;
}
else
{
++dx;
}
}
}
if(!checkSpriteCollisionHorizon())
{
x+=dx;
if(dx<0)
{
if(distance>=-gm.canvas.width)
{
distance+=dx;
}
}
if(distance<0)
{
if(dx>0)
{
distance+=dx;
}
}
}
else
{
dx=0;
}
if(this.x!=MarioMIDlet.gameCanvas.width/4)
{
this.bgdx=MarioMIDlet.gameCanvas.width/4-x;
if(distance<-(gm.canvas.width-MarioMIDlet.gameCanvas.width/4))
{
bgdx=0;
}
}
else
{
bgdx=0;
}
if(judgeMap.x-bgdx<0
||
judgeMap.x-bgdx>
judgeMap.tileSize*judgeMap.w-MarioMIDlet.gameCanvas.width
)
{
bgdx=0;
}
if(mainSpriteState==FIRE_SPRITE)
{
if((allAction&LPKeyMask.MASK_KEY_OK_FLAG)!=0)
{
fire();
}
checkBulletDamage();
}
x+=this.bgdx;
judgeMap.x-=this.bgdx;
y+=this.bgdy;
judgeMap.y-=this.bgdy;
int tmpDy=this.bgdy;
if(judgeMap.y<0)
{
tmpDy=bgdy+judgeMap.y;
this.bgdy=-judgeMap.y;
judgeMap.y=0;
y+=this.bgdy;
}
bgdy=tmpDy;
if(x<0)
{
x=0;
}
if(this.x>=MarioMIDlet.gameCanvas.width-32)
{
this.x=MarioMIDlet.gameCanvas.width-32;
}
if(isLeft)
{
offset=5;
}
else
{
offset=0;
}
if(dy!=0)
{
frameCnt=offset+3;
}
else if(((allAction&LPKeyMask.MASK_KEY_LEFT)!=0)
||((allAction&LPKeyMask.MASK_KEY_RIGHT)!=0))
{
walk();
}
else if(dy==0&&(allAction&LPKeyMask.MASK_KEY_UP_FLAG)==0)
{
frameCnt=offset;
}
if(isProtected)
{
isHidden=!isHidden;
if(protectCnt++==protectInterval)
{
protectCnt=0;
isProtected=false;
isHidden=false;
}
}
else
{
checkEnemyCollision();
}
if((allAction&LPKeyMask.MASK_KEY_OK_FLAG)!=0)
{
if(mainSpriteState==FIRE_SPRITE)
{
frameCnt=offset+1;
}
allAction&=~LPKeyMask.MASK_KEY_OK_FLAG;
}
checkStaticSpriteCollision();
if(y>this.judgeMap.tileSize*this.judgeMap.h)
{
if(gm.menu.isVolOn)
{
gm.beatPlayer.replay();
}
gm.gameState=MarioGameManage.GAMESTATE_REINIT;
}
}
break;
}
}
private void spriteDeadAction()
{
if(gm.menu.isVolOn)
{
gm.beatPlayer.replay();
}
if(mainSpriteState==SMALL_SPRITE)
{
mainSpriteState=DEAD_SPRITE;
return;
}
else
{
mainSpriteState=BECOME_SMALL;
isProtected=true;
this.protectCnt=0;
this.protectInterval=20;
return;
}
}
private void checkEnemyCollision()
{
int i;
switch(mainSpriteState)
{
case SMALL_SPRITE:
rect1.x = x+2;
rect1.y = y;
rect1.dx = 12;
rect1.dy = 16;
break;
case NORMAL_SPRITE:
case FIRE_SPRITE:
rect1.x = x+6;
rect1.y = y+2;
rect1.dx = 20;
rect1.dy = 30;
break;
}
rect2.dx = 14;
rect2.dy = 14;
for(i=gm.enemy.length-1;i>=0;--i)
{
if(!gm.enemy[i].isHidden)
{
if(gm.enemy[i].isCheck)
{
rect2.x = gm.enemy[i].x;
rect2.y = gm.enemy[i].y;
if(LPRect.IntersectRect(rect1,rect2))
{
spriteDeadAction();
return;
}
}
}
}
for(
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
java开发利器—j2me手机游戏开发技术详解.rar java开发利器—j2me手机游戏开发技术详解.rar java开发利器—j2me手机游戏开发技术详解.rar java开发利器—j2me手机游戏开发技术详解.rar java开发利器—j2me手机游戏开发技术详解.rar
资源推荐
资源详情
资源评论
收起资源包目录
java开发利器—j2me手机游戏开发技术详解 (1340个子文件)
Example10.class 15KB
Example10.class 15KB
FiveLogic.class 14KB
Example10.class 14KB
Example10.class 14KB
MazeCanvas.class 13KB
MazeCanvas.class 12KB
FiveLogic.class 11KB
Outliner$OutlineItem.class 10KB
FiveCanvas.class 9KB
MainGame.class 9KB
LightDemoCanvas.class 9KB
Outliner$OutlineItem.class 8KB
escapeeMIDlet.class 8KB
LightSampleCanvas.class 8KB
FiveCanvas.class 8KB
LightSampleCanvas.class 8KB
LightDemoCanvas.class 8KB
GameManager.class 8KB
LightSampleCanvas.class 8KB
LightSampleCanvas.class 8KB
ColorChooser.class 7KB
M3GTexCanvas.class 7KB
M3GTexCanvas.class 7KB
Example5.class 6KB
ExRMS.class 6KB
ExRMS.class 6KB
ExRMS.class 6KB
ExRMS.class 6KB
MyCanvas.class 6KB
Example5.class 6KB
ColorChooser.class 6KB
MyCanvas.class 6KB
Example5.class 6KB
Example5.class 6KB
Outliner.class 6KB
ExampleBase.class 6KB
escapeeMIDlet.class 6KB
ExampleBase.class 6KB
ExampleBase.class 6KB
ExampleBase.class 6KB
Outliner.class 6KB
RPGCanvas.class 6KB
Example9.class 6KB
Example2.class 6KB
Table.class 6KB
TimeTrial.class 6KB
Example9.class 5KB
escapeeCanvas.class 5KB
Example2.class 5KB
SpotLightDemoCanvas.class 5KB
CounterArea.class 5KB
Example9.class 5KB
SpotLightDemoCanvas.class 5KB
Example9.class 5KB
ExampleCanvas.class 5KB
ScrollCanvas.class 5KB
escapeeCanvas.class 5KB
TimeTrial.class 5KB
Maze.class 5KB
ExampleCanvas.class 5KB
MyCanvas.class 5KB
Reg.class 5KB
Example2.class 5KB
CounterArea.class 5KB
ScrollCanvas.class 5KB
RPGCanvas.class 5KB
Example2.class 5KB
Table.class 5KB
MyCanvas.class 5KB
MidpStub.class 5KB
MyCanvas.class 5KB
ExampleCanvas.class 5KB
Example8.class 5KB
MyCanvas.class 5KB
Reg.class 5KB
Options.class 5KB
ExampleCanvas.class 5KB
Example8.class 5KB
DateFieldItemStateListenerDemo.class 4KB
MidpStub.class 4KB
M3GCanvas.class 4KB
MidpStub.class 4KB
Base64.class 4KB
Example8.class 4KB
AlertDemo.class 4KB
MyCanvas.class 4KB
M3GCanvas.class 4KB
MyCanvas.class 4KB
Example8.class 4KB
AlertDemo.class 4KB
ImageCanvas.class 4KB
ImageCanvas.class 4KB
MeshCreator.class 4KB
LPDrawManage.class 4KB
MidpStub.class 4KB
Maze.class 4KB
Options.class 4KB
DateFieldItemStateListenerDemo.class 4KB
Base64.class 4KB
共 1340 条
- 1
- 2
- 3
- 4
- 5
- 6
- 14
资源评论
- 小七柒72012-11-09只有书的代码
- 板砖横飞2011-11-09好像不是电子书,是代码。
xiaobing030640
- 粉丝: 2
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 简单的Linux C代码,实现链表功能
- 汇编语言探索之旅:从基础到实践,解锁底层奥秘-markdown材料.zip
- Fortran语言:经典与现代交织的编程之旅-markdown材料.zip
- 基于python编写的appium自动化框架,采用PO模式,并集成了日志以及测试报告通过邮件发送的功能
- csdn.apk
- spleeter模型下载
- 微信小程序 - 图书管理系统源码.zip
- 微信小程序 - 图片自适应 ,富文本解析源码.zip
- 微信小程序 - 同乐居商城:购物车合算源码
- 1、根据输入的三条边值判断能组成何种三角形,并设计测试数据进行判定覆盖测试 三条边为变量a、b、c,范围为1≤边值≤10,不在范
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功