📄 bosstiger.java
字号:
package game;
import lib.*;
import javax.microedition.lcdui.*;
//老虎
public class BossTiger extends Sprite{
private Resource resource=Resource.getResource();
//老虎所有的动作切片
private static Rectangle[][] tigerRect=new Rectangle[2][4];
static{
//面向左走1
tigerRect[0][0]=new Rectangle(0,2,45,33);
//面向左走2
tigerRect[0][1]=new Rectangle(46,0,45,35);
//面向左走3
tigerRect[0][2]=new Rectangle(92,2,45,33);
//面向左死
tigerRect[0][3]=new Rectangle(138,2,45,33);
//面向右走1
tigerRect[1][0]=new Rectangle(0,38,45,33);
//面向右走2
tigerRect[1][1]=new Rectangle(46,36,45,35);
//面向右走3
tigerRect[1][2]=new Rectangle(92,38,45,33);
//面向右死
tigerRect[1][3]=new Rectangle(138,38,45,33);
}
private int currAnimIndex;
private boolean needRemove;
private int num;
private int life=10;
//老虎在ACT_RUN状态下帧的变换顺序
private int[] runAnimOrder={0,2,0,2};
private int runOrderIndex;
private Time animTime=new Time(280);
private Time deadTime=new Time(280);
public BossTiger(int x,int y,int faceTo,int num){
this.x=x;
this.y=y;
this.width=45;
this.height=33;
this.faceTo=faceTo;
this.num=num;
vx=(faceTo==0?-1:1);
setAct(ACT_RUN);
}
public void paint(Graphics g,int offsetX,int offsetY){
switch(getAct()){
case ACT_RUN:
{
int ox=x;
if(faceTo==FACETO_RIGHT)
ox=x+(width-tigerRect[FACETO_RIGHT][runAnimOrder[runOrderIndex]].width);
int oy=y+(height-tigerRect[faceTo][runAnimOrder[runOrderIndex]].height);
Toolkit.drawRegion(g,resource.imgTiger,tigerRect[faceTo][runAnimOrder[runOrderIndex]],ox+offsetX,oy+offsetY);
}
break;
case ACT_DEAD:
{
int ox=x;
if(faceTo==FACETO_RIGHT)
ox=x+(width-tigerRect[FACETO_RIGHT][currAnimIndex].width);
int oy=y+(height-tigerRect[faceTo][currAnimIndex].height);
Toolkit.drawRegion(g,resource.imgTiger,tigerRect[faceTo][currAnimIndex],ox+offsetX,oy+offsetY);
}
break;
}
}
public void update(int elapsedTime){
switch(getAct()){
case ACT_RUN:
if(animTime.update(elapsedTime)){
runOrderIndex=(runOrderIndex+1)%4;
}
break;
case ACT_DEAD:
if(deadTime.update(elapsedTime)){
needRemove=true;
}
break;
}
}
public void collideHorizontal(){
vx=-vx;
faceTo=(vx==-1?FACETO_LEFT:FACETO_RIGHT);
}
public boolean isAlive(){
return getAct()!=ACT_DEAD;
}
public void setAct(int act){
super.setAct(act);
if(act==ACT_DEAD){
currAnimIndex=3;
}
}
public boolean isNeedRemove(){
return needRemove;
}
public int removeLife(){
life--;
return life;
}
public int getLife(){
return life;
}
public int getNum(){
return num;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -