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

📄 frozengame.java

📁 本代码为java编写的泡泡龙游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		{
			if (levelManager.getLevelIndex() == 1) 
			{
                 this.getGameApplet().setCurrentScreen(new SplashScreen(getGameApplet()));
			}
			else 
			{
                if (this.getGameApplet().getParameter(this.PARAMETER_OFFLINE) == null && !this.getGameApplet().isApplication()) 
                {
                    String playerName = this.getGameApplet().getParameter(this.PARAMETER_PLAYER);
                    
                    if (playerName == null) 
                    {
                        this.getGameApplet().setCurrentScreen(new EnterNameScreen(getGameApplet()));
                    }
                    else 
                    {
                        playerName = playerName.trim();
                        
                        if (!"".equals(playerName)) 
                        {
                            ((HighscoreManager)this.getGameApplet().getGameContext().getObject("highscoreManager")).sendRecord(playerName);
                            // The following line is only reached when an error occurs
                            this.getGameApplet().setCurrentScreen(new SplashScreen(getGameApplet()));
                        }
                    }
                }
                else 
                {
                   this.getGameApplet().setCurrentScreen(new HighscoreScreen(getGameApplet()));
                }          
			}
		}		
		else
		{
			addToBackground(background, new Point(0, 0));
			
			highscoreManager.startLevel();
		}
	}
	
	//处理事件的代码
	public void play(int[] keyCodes, Point mouseCoord, boolean leftButton, boolean rightButton) 
	{
		int[] move = new int[2];
		boolean newModeKeyState = false;
        boolean newSoundKeyState = false;
        
        //解析事件
		for (int i=0 ; i<keyCodes.length ; i++)
		{
			int current = keyCodes[i];

            if (current == KEY_M) //模式切换
            {
                newModeKeyState = true;
            }

            if (current == KEY_S) //声音切换
            {
                newSoundKeyState = true;
            }                        
                        
			if (current == KEY_LEFT || current == KEY_RIGHT)//左右移动
			{
				if (move[HORIZONTAL_MOVE] == 0)
				{
					move[HORIZONTAL_MOVE] = current;
				}
				else
				{
					move[HORIZONTAL_MOVE] = 0;
				}
			}
			
			if (current == KEY_UP || current == KEY_SHIFT)//发射
			{
				move[FIRE] = KEY_UP;
			}
		}
		//处理模式切换事件
        if (newModeKeyState != modeKeyPressed) //进行切换模式
        {
            if (newModeKeyState) 
            {
                FrozenBubble.switchMode();
                // Redraw nextBubble
                if (FrozenBubble.getMode() == FrozenBubble.GAME_NORMAL) 
                {
                    nextBubble.changeImage(bubbles[nextColor]);
                }
                else 
                {
                    nextBubble.changeImage(bubblesBlind[nextColor]);
                }                        
            }
            
            modeKeyPressed = newModeKeyState;
        }
        
        //处理声音切换事件       
        if (newSoundKeyState != soundKeyPressed) //切找声音
        {
            if (newSoundKeyState) 
            {
                soundManager.setSoundState(!soundManager.getSoundState());
            }
            
            soundKeyPressed = newSoundKeyState;
        }                
                
		if (move[FIRE] == 0)
		{
			readyToFire = true;
		}
		
		if (endOfGame)//游戏结束了
		{
			if (move[FIRE] == KEY_UP && readyToFire)//重新开始游戏
			{
				if (frozenify)
				{
					lifeManager.decrease();
				}
				
				if (levelManager.getCurrentLevel() == null)
				{
					getGameApplet().setCurrentScreen(new EnterNameScreen(getGameApplet()));
				}
				else
				{
					getGameApplet().setCurrentScreen(new FrozenGame(getGameApplet()));
				}
			}
			else//冻结游戏
			{
				penguin.updateState(PenguinSprite.STATE_VOID);
			
				if (frozenify)
				{
					frozenify();
				}
			}
		}
		else
		{						
			if (move[FIRE] == KEY_UP || hurryTime > 480)//发射一个泡泡
			{
				if (movingBubble == null && readyToFire)
				{
					nbBubbles++;
					
					movingBubble = new BubbleSprite(new Rectangle(302, 390, 32, 32), launchBubblePosition, bubbles[currentColor], bubblesBlind[currentColor], 
													frozenBubbles[currentColor], targetedBubbles, bubbleBlink, bubbleManager, soundManager, this);
					this.addSprite(movingBubble);
				
					currentColor = nextColor;
					nextColor = bubbleManager.nextBubbleIndex(random);
                                        
                    if (FrozenBubble.getMode() == FrozenBubble.GAME_NORMAL) {
                        nextBubble.changeImage(bubbles[nextColor]);
                    }
                    else {
                        nextBubble.changeImage(bubblesBlind[nextColor]);
                    }
                    
					launchBubble.changeColor(currentColor);
					penguin.updateState(PenguinSprite.STATE_FIRE);
					
					soundManager.playSound(FrozenBubble.SOUND_LAUNCH);
					
					readyToFire = false;
					hurryTime = 0;
					removeSprite(hurrySprite);
				}	
				else
				{
					penguin.updateState(PenguinSprite.STATE_VOID);
				}
			}
			else if (move[HORIZONTAL_MOVE] == KEY_LEFT)//向左摆动
			{
				if (launchBubblePosition>1)
				{
					launchBubblePosition--;
				}
				launchBubble.changeDirection(launchBubblePosition);
				penguin.updateState(PenguinSprite.STATE_TURN_LEFT);
			}
			else if (move[HORIZONTAL_MOVE] == KEY_RIGHT)//向右摆动
			{
				if (launchBubblePosition<39)
				{
					launchBubblePosition++;
				}
				launchBubble.changeDirection(launchBubblePosition);
				penguin.updateState(PenguinSprite.STATE_TURN_RIGHT);
			}
			else
			{
				penguin.updateState(PenguinSprite.STATE_VOID);
			}
		}
		
		//移动当前的泡泡
		if (movingBubble != null)
		{
			movingBubble.move();
			if (movingBubble.fixed())//当有一个泡泡固定的话,进行如下的操作
			{
				if (movingBubble.getSpritePosition().y>=380 && !movingBubble.released())//游戏失败
				{
					penguin.updateState(PenguinSprite.STATE_GAME_LOST);
					endOfGame = true;
					initFrozenify();
					
					soundManager.playSound(FrozenBubble.SOUND_LOST);
				}
				else if (bubbleManager.countBubbles() == 0)//游戏成功
				{
					penguin.updateState(PenguinSprite.STATE_GAME_WON);
					this.addSprite(new ImageSprite(new Rectangle(152, 190, 337, 116), gameWon));
					highscoreManager.endLevel(nbBubbles);
					levelManager.goToNextLevel();
					endOfGame = true;
					
					soundManager.playSound(FrozenBubble.SOUND_WON);
				}
				else
				{
					fixedBubbles++;
					blinkDelay = 0;
					
					if (fixedBubbles == 8)//每增加8个固定的泡泡,则向下压一行
					{
						fixedBubbles = 0;
						sendBubblesDown();
					}					
				}
				
				movingBubble = null;
			}
			//使用两次,提高一些速度
			if (movingBubble != null)
			{
				movingBubble.move();
				if (movingBubble.fixed())
				{					
					if (movingBubble.getSpritePosition().y>=380 && !movingBubble.released())
					{
						penguin.updateState(PenguinSprite.STATE_GAME_LOST);
						endOfGame = true;
						initFrozenify();
						
						soundManager.playSound(FrozenBubble.SOUND_LOST);
					}
					else if (bubbleManager.countBubbles() == 0)
					{
						penguin.updateState(PenguinSprite.STATE_GAME_WON);
						this.addSprite(new ImageSprite(new Rectangle(152, 190, 337, 116), gameWon));
						highscoreManager.endLevel(nbBubbles);
						levelManager.goToNextLevel();
						endOfGame = true;
						
						soundManager.playSound(FrozenBubble.SOUND_WON);
					}
					else
					{
						fixedBubbles++;
						blinkDelay = 0;
						
						if (fixedBubbles == 8)
						{
							fixedBubbles = 0;
							sendBubblesDown();
						}
					}
					
					movingBubble = null;
				}
			}			
		}
		
		//发射延时处理
		if (movingBubble == null && !endOfGame)
		{
			hurryTime++;
			
			if (hurryTime>=240)
			{
				if (hurryTime % 40 == 10)
				{
					addSprite(hurrySprite);
					soundManager.playSound(FrozenBubble.SOUND_HURRY);
				}
				else if (hurryTime % 40 == 35)
				{
					removeSprite(hurrySprite);
				}
			}
		}
		
		//闪亮延时处理,fixedBubbles代表当前固定泡泡的个数
		if (fixedBubbles == 6)
		{
			if (blinkDelay < 15)
			{
				blinkLine(blinkDelay);
			}

			blinkDelay++;
			if (blinkDelay == 40)
			{
				blinkDelay = 0;
			}
		}
		else if (fixedBubbles == 7)
		{
			if (blinkDelay < 15)
			{
				blinkLine(blinkDelay);
			}

			blinkDelay++;
			if (blinkDelay == 25)
			{
				blinkDelay = 0;
			}
		}
			
		//移动向下掉的泡泡
		for (int i=0 ; i<falling.size() ; i++)
		{
			((BubbleSprite)falling.elementAt(i)).fall();
		}
		
		//移动向上跳的泡泡
		for (int i=0 ; i<jumping.size() ; i++)
		{
			((BubbleSprite)jumping.elementAt(i)).jump();
		}	
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -