📄 mainsprite.java
字号:
bloodCount = 4;
if(lifeCount > 0){
lifeCount --;
} else {
isVisible = false;
}
isDeading = true;
setFrameSequence(0,0);
frameIndex = 20;
return true;
}else if(isDeading){
inDeadingCount ++;
isVisible = true;
if(inDeadingCount == 3)
frameIndex = 21;
else if(inDeadingCount == 5)
frameIndex = 22;
else if(inDeadingCount == 7)
frameIndex = 23;
if(inDeadingCount == 9){
isVisible = false;
frameIndex = 0;
}
if(inDeadingCount > 9 ){//&& lifeCount != 0){
isVisible = false;
isDeading = false;
inDeadingCount = 0;
//map.reDraw = true;
setDeathOffset();
moveDirection = MOVEDIRECTION_RIGHT;
clearKeyStatus();
}
return true;
}
//reuse inDeadingCount
if(lifeCount == 0){
isVisible = false;
if(inDeadingCount++ == 30){
ZonCanvas.appState = ZonCanvas.APPSTATE_TITLE;
ZonCanvas.gameStage = ZonCanvas.GAMESTAGE_FAILED;
return true;
}
//bloodCount = 0;
setFrameSequence(0, 0);
nextFrame();
return true;
}
return false;
}
private final void setDeathOffset(){
if(lifeCount > 0){
isVisible = true;
switch(ZonCanvas.gameStage){
case ZonCanvas.GAMESTAGE_ONE:
if(worldOffsetX > 16 * 85 && worldOffsetX < 16 * 98){
setWorldOffset(16 * 87 - frameWidth, map.getMapHeight() * map.getTileHeight() - 16 * 3 - frameHeight - 32);
} else if(worldOffsetX > 16 * 81 && worldOffsetX < 16 * 84 ){
setWorldOffset(16 * 81 - frameWidth, map.getMapHeight() * map.getTileHeight() - 16 * 2 - frameHeight - 32);
} else if(worldOffsetX > 16 * 62 && worldOffsetX < 16 * 74 ){
setWorldOffset(16 * 61 - frameWidth + 10, map.getMapHeight() * map.getTileHeight() - 16 * 2 - frameHeight - 32);
} else if(worldOffsetX > 16 * 23 && worldOffsetX < 16 * 37){
setWorldOffset(16 * 23 - frameWidth, map.getMapHeight() * map.getTileHeight() - 16 * 2 - frameHeight - 32);
} else {
}
break;
case ZonCanvas.GAMESTAGE_TWO:
if(worldOffsetX > 16 * 95 && worldOffsetX < 16 * 106 + 4){
setWorldOffset(16 * 96 - frameWidth, map.getMapHeight() * map.getTileHeight() - 16 * 3 - frameHeight - 32);
} else if(worldOffsetX > 16 * 67 && worldOffsetX < 16 * 70){
setWorldOffset(16 * 68 - frameWidth, map.getMapHeight() * map.getTileHeight() - 16 * 4 - frameHeight - 32);
} else if(worldOffsetX > 16 * 49 && worldOffsetX < 16 * 60 + 8){
setWorldOffset(16 * 50 - frameWidth + 10, map.getMapHeight() * map.getTileHeight() - 16 * 2 - frameHeight - 32);
} else if(worldOffsetX > 16 * 18 && worldOffsetX < 16 * 30){
setWorldOffset(16 * 19 - frameWidth , map.getMapHeight() * map.getTileHeight() - 16 * 2 - frameHeight - 32);
} else {
// bChanged = false;
}
break;
case ZonCanvas.GAMESTAGE_THREE:
if(worldOffsetX > 16 * 109 && worldOffsetX < 16 * 113){
setWorldOffset(16 * 111 - frameWidth, map.getMapHeight() * map.getTileHeight()- 16 * 4 - frameHeight - 16);
} else if(worldOffsetX > 16 * 101 && worldOffsetX < 16 * 105){
setWorldOffset(16 * 103 - frameWidth, map.getMapHeight() * map.getTileHeight() - 16 * 4 - frameHeight - 16);
} else if(worldOffsetX > 16 * 97 - 4 && worldOffsetX < 16 * 99 + 10){
setWorldOffset(16 * 98 - frameWidth + 10, map.getMapHeight() * map.getTileHeight() - 16 * 3 - frameHeight - 16);
} else if(worldOffsetX > 16 * 90 && worldOffsetX < 16 * 92){
setWorldOffset(16 * 91 - frameWidth , map.getMapHeight() * map.getTileHeight() - 16 * 2 - frameHeight - 16);
} else if(worldOffsetX > 16 * 69 && worldOffsetX < 16 * 75){
setWorldOffset(16 * 70 - frameWidth , map.getMapHeight() * map.getTileHeight() - 16 * 2 - frameHeight - 16);
} else if(worldOffsetX > 16 * 56 && worldOffsetX < 16 * 61 + 5){
setWorldOffset(16 * 57 - frameWidth , map.getMapHeight() * map.getTileHeight() - 16 * 2 - frameHeight - 16);
} else if(worldOffsetX > 16 * 41 + 8 && worldOffsetX < 16 * 49){
setWorldOffset(16 * 43 - frameWidth , map.getMapHeight() * map.getTileHeight() - 16 * 2 - frameHeight - 16);
} else if(worldOffsetX > 16 * 28 && worldOffsetX < 16 * 35){
setWorldOffset(16 * 29 - frameWidth , map.getMapHeight() * map.getTileHeight() - 16 * 2 - frameHeight - 16);
} else if(worldOffsetX > 16 * 4 && worldOffsetX < 16 * 15){
setWorldOffset(16 * 6 - frameWidth, map.getMapHeight() * map.getTileHeight() - 16 * 2 - frameHeight - 16);
} else {
}
break;
}
setPosition(worldOffsetX + map.getOffsetX(), worldOffsetY + map.getOffsetY());
}
}
public final void mainAction() {
if(!isOnFloat)
vVelocity += 2;
if (vVelocity > VELOCITY_MAX)
vVelocity = VELOCITY_MAX;
if(checkDeath()){
for(int i = 0; i < 3; i++)
spriteBullet[i].isVisible = false;
return;
}
spriteMove();
if(inVincible){
inVincibleCount++;
if(inVincibleCount < INVINCIBLE_COUNT){
if(inVincibleCount % 2 == 0){
setVisible(false);
}else{
setVisible(true);
}
}else{
inVincibleCount = 0;
inVincible = false;
}
}
if(!isOnStone && !isOnFloat){
//collides with map
int collidesResult = collidesWith(map, false);
if ((collidesResult & COLLIDES_HORIZONTAL) == COLLIDES_HORIZONTAL) {
hVelocity = hVelTemp;
}
if ((collidesResult & COLLIDES_VERTICAL) == COLLIDES_VERTICAL) {
// 刚下落到地面
/* if (!isStanding && vVelocity > 0) {
if ((keyStatus & KEY_LEFT) == KEY_LEFT) {
setFrameSequence(11, 14);
} else if ((keyStatus & KEY_RIGHT) == KEY_RIGHT) {
setFrameSequence(0, 3);
} else {
if (moveDirection == MOVEDIRECTION_LEFT) {
setFrameSequence(11, 11);
} else if (moveDirection == MOVEDIRECTION_RIGHT) {
setFrameSequence(0, 0);
}
}
}*/
//isStanding = true;
vVelocity = vVelTemp;
} else {
isStanding = false;
}
if ((collidesResult & COLLIDES_DEAD) == COLLIDES_DEAD) {
//坠落死亡
bloodCount = 0;
suddenDeath = true;
}
} else {
//collides with stone
//hVelocity = hVelTemp;
if((keyStatus & KEY_UP) == 0)
vVelocity = vVelTemp;
}
// simulate hero reach the bound of map
if (offsetX + hVelocity < 0
|| offsetX + hVelocity > scrWidth - frameWidth) {
hVelocity = 0;
} else if (offsetY + vVelocity > scrHeight
|| offsetY + vVelocity < 0 ) {
vVelocity = 0;
}
if (offsetX + hVelocity > scrWidth - frameWidth - 10){
ZonCanvas.appState = ZonCanvas.APPSTATE_PASS;
}
// No animation when sprite is in the sky;
if (isStanding || isOnStone || isOnFloat) {
nextFrame();
}
move(hVelocity, vVelocity);
changeWorldOffset(hVelocity, vVelocity);
}
public final void clearKeyStatus() {
keyStatus = 0;
}
public final void pressKey(int key) {
switch (key) {
case KEY_LEFT:
if ((keyStatus & KEY_LEFT) == 0) {
keyStatus |= (KEY_LEFT | KEY_LEFT_MASK);
keyStatus &= ~(KEY_RIGHT | KEY_RIGHT_MASK);
if ((keyStatus & KEY_FIRE) == 0 && isStanding) {
setMoveDirection(MOVEDIRECTION_LEFT);
setFrameSequence(11, 14);
}
}
break;
case KEY_RIGHT:
if ((keyStatus & KEY_RIGHT) == 0) {
keyStatus |= (KEY_RIGHT | KEY_RIGHT_MASK);
keyStatus &= ~(KEY_LEFT | KEY_LEFT_MASK);
if ((keyStatus & KEY_FIRE) == 0 && isStanding) {
setMoveDirection(MOVEDIRECTION_RIGHT);
setFrameSequence(0, 3);
}
}
break;
case KEY_UP:
if ((keyStatus & KEY_UP) == 0 && (keyStatus & KEY_UP_MASK) == 0) {
keyStatus |= (KEY_UP | KEY_UP_MASK);
if (isStanding && ((keyStatus & KEY_FIRE) == 0)) {
if (moveDirection == MOVEDIRECTION_LEFT) {
setFrameSequence(15, 15);
} else if (moveDirection == MOVEDIRECTION_RIGHT) {
setFrameSequence(4, 4);
}
setVelocity(DIRECTION_VERTICAL, JUMP_HEIGHT);
}
}
break;
case KEY_DOWN:
break;
case KEY_FIRE:
if ((keyStatus & KEY_FIRE) == 0 | (keyStatus & KEY_FIRE_MASK) == 0) {
// keyStatus = 0;
keyStatus |= (KEY_FIRE | KEY_FIRE_MASK);
hVelocity = 0;
}
break;
}
}
public final void releaseKey(int key) {
switch (key) {
case KEY_LEFT:
if ((keyStatus & KEY_LEFT) == KEY_LEFT) {
keyStatus &= ~KEY_LEFT;
}
break;
case KEY_RIGHT:
if ((keyStatus & KEY_RIGHT) == KEY_RIGHT) {
keyStatus &= ~KEY_RIGHT;
}
break;
case KEY_UP:
if ((keyStatus & KEY_UP) == KEY_UP) {
keyStatus &= ~KEY_UP;
}
break;
case KEY_DOWN:
break;
case KEY_FIRE:
if ((keyStatus & KEY_FIRE) == KEY_FIRE) {
keyStatus &= ~KEY_FIRE;
}
break;
}
}
public final void setInVincible(boolean b){
inVincible = b;
}
public final boolean getInVincible(){
return inVincible;
}
public final void setStanding(boolean b){
isStanding = b;
}
public final void incScore(int i){
score += i;
}
public final void decScore(int i){
score -= i;
}
public final int getScore(){
return score;
}
public final void setScore(int score){
this.score = score;
}
public final void incBloodCount(int i){
if(bloodCount + i > 4){
bloodCount = 4;
score ++;
}
else
bloodCount += i;
}
public final void decBloodCount(){
bloodCount --;
}
public final boolean getOnStone() {
return isOnStone;
}
public final void setOnStone(boolean isOnStone) {
this.isOnStone = isOnStone;
}
public final int getKeySymbol() {
return keySymbol;
}
public final void setKeySymbol(int keySymbol) {
this.keySymbol = keySymbol;
}
public final boolean isObstructed() {
return isObstructed;
}
public final void setObstructed(boolean isObstructed) {
this.isObstructed = isObstructed;
}
public final int getStepType() {
return stepType;
}
public final void setStepType(int stepType) {
this.stepType = stepType;
}
public final boolean isOnFloat() {
return isOnFloat;
}
public final void setOnFloat(boolean isOnFloat) {
this.isOnFloat = isOnFloat;
}
public final int getLifeCount() {
return lifeCount;
}
public final void setLifeCount(int lifeCount) {
this.lifeCount = lifeCount;
}
public final int getBloodCount() {
return bloodCount;
}
public final void setBloodCount(int bloodCount) {
this.bloodCount = bloodCount;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -