⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainsprite.java

📁 基于J2ME 开发的冒险类手机游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			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 + -