📄 frozengame.java
字号:
{
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 + -