📄 game.java
字号:
break;
case BONUS_BANANA:
bonusVector.addElement(new Bonus(imgBonus[5],
BONUS_BANANA, i, j));
break;
case TOOL_BAT:
toolVector.addElement(new Tool(imgTool[0],
TOOL_BAT, i, j));
break;
case TOOL_BOTTLE:
toolVector.addElement(new Tool(imgTool[1],
TOOL_BOTTLE, i, j));
break;
case TOOL_MOTOHAT:
toolVector.addElement(new Tool(imgTool[2],
TOOL_MOTOHAT, i, j));
break;
case ENEMY_PIG:
enemyVector.addElement(new Enemy(imgxEnemy[0],
ENEMY_PIG, i, j));
break;
case ENEMY_PANDA:
enemyVector.addElement(new Enemy(imgxEnemy[1],
ENEMY_PANDA, i, j));
break;
case ENEMY_FROG:
enemyVector.addElement(new Enemy(imgxEnemy[2],
ENEMY_FROG, i, j));
break;
case FRAISE_DB:
fraiseVector.addElement(new Fraise(imgFraise[0],
FRAISE_DB, i, j));
break;
case FRAISE_KXT:
fraiseVector.addElement(new Fraise(imgFraise[1],
FRAISE_KXT, i, j));
break;
case FRAISE_LG:
fraiseVector.addElement(new Fraise(imgFraise[2],
FRAISE_LG, i, j));
break;
case FRAISE_LJT:
fraiseVector.addElement(new Fraise(imgFraise[3],
FRAISE_LJT, i, j));
break;
case FRAISE_LT:
fraiseVector.addElement(new Fraise(imgFraise[4],
FRAISE_LT, i, j));
break;
case FRAISE_XZ:
fraiseVector.addElement(new Fraise(imgFraise[5],
FRAISE_XZ, i, j));
break;
case FRAISE_XSD:
fraiseVector.addElement(new Fraise(imgFraise[6],
FRAISE_XSD, i, j));
break;
case FRAISE_GGP:
fraiseVector.addElement(new Fraise(imgFraise[7],
FRAISE_GGP, i, j));
break;
}
}
}
}
System.out.println("OK4");
loadingGuage2++;
}
else if (loadingGuage2 == 4) {
if (m_ReadyAnimation == null) {
m_ReadyAnimation = new PieceSprite(loadImage(IMAGE_READY),
RES_PATH + "ready.bin",
(short) 100, true);
m_ReadyAnimation.setAnimation(0, false);
}
//初始值
MacroSpeed = 5; // 地图移动速度恢复为5
totalBonus = 0; // 总得分为0
isPass = false; // 未过关
SaveData = new byte[2]; //初始化存储数组
mapBase = 0; // 基准为0
fgRockWidth = 2 * SCREEN_WIDTH;
//三朵云彩的初始值
bgCloudWidth[0] = 20;
bgCloudWidth[1] = 80;
bgCloudWidth[2] = 150;
currentSnow = randSnowCount.nextInt();
bgBuildWidth = 0;
wordWidth = 0;
System.out.println("OK5");
loadingGuage2++;
}
}
/**
* 系统方法:paint()
* @param g Graphics
*/
long timePassed, m_prevFrameTime;
long beginTime = System.currentTimeMillis();
protected void paint(Graphics g) {
//#if MOTO_E680
//#else
backG = g;
//#endif
timePassed = System.currentTimeMillis() - m_prevFrameTime;
switch (gameState) {
case STATE_LOGO1:
drawLogo1(backG);
break;
case STATE_LOGO2:
drawLogo2(backG);
break;
case STATE_COVER:
drawCover(backG);
break;
case STATE_LOADING:
drawLoading(backG);
break;
case STATE_DEMO:
drawDemo(backG);
break;
case STATE_MAINMENU:
doMainMenuState(backG);
break;
case STATE_GAMEMENU:
doGameMenuState(backG);
break;
case STATE_PAUSE:
doPauseMenu(backG);
break;
case STATE_GAME_SAVING:
doGameSaving(backG);
break;
case STATE_OPTIONSMENU:
doOptionsMenuState(backG);
break;
case STATE_HELP:
doHelpState(backG);
break;
case STATE_CREDITS:
doCreditsState(backG);
break;
case STATE_GAMEREADY:
drawReady(backG);
break;
case STATE_GAME:
doGameState(backG);
break;
case STATE_INIT:
doInitState(backG);
break;
case STATE_END:
doEndState(backG);
break;
}
// m_prevFrameTime += timePassed;
//
// int POSY = 160;
// backG.setClip(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
// backG.setColor(0x00FF00);
// backG.drawString("F: " + (1000 / (timePassed + 1)), 65, POSY, 20);
// backG.drawString("M: " + Runtime.getRuntime().freeMemory() / 1024, 0, POSY, 20);
// backG.drawString("TIME:" + (System.currentTimeMillis() - beginTime) / 1000, 100,
// POSY + 20, 20);
//#if MOTO_E680
//# g.drawRegion(backImage, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, PieceSprite.TRANS_ROT270, 0, 0,
//# Graphics.TOP | Graphics.LEFT);
//#endif
}
public void doInitState(Graphics g) {
g.setColor(0);
g.fillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
g.setColor(115, 200, 6);
g.fillArc(SCREEN_WIDTH / 2 - 40, SCREEN_HEIGHT / 2 - 40, 80, 80, 0,
72 * loadingGuage2);
g.setColor(0);
g.fillArc(SCREEN_WIDTH / 2 - 20, SCREEN_HEIGHT / 2 - 20, 40, 40, 0,
72 * loadingGuage2);
g.setColor(0xFFFFFF);
ToolBox.drawOutlinedText(g, m_MenuFont, HINT[12],
SCREEN_WIDTH / 2,
SCREEN_HEIGHT / 2,
Graphics.VCENTER | Graphics.HCENTER);
// try {
// Thread.sleep(1000);
// } catch (InterruptedException ex) {
// ex.printStackTrace();
// }
}
public void drawDemo(Graphics g) {
g.setColor(0);
g.setFont(m_CreditsFont);
g.fillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
drawDemoAnimation(g);
g.setColor(COLOR_ACTIVE);
if (m_DemoAnimation.currentFrameNr <= 6) {
g.drawString(HINT[4], SCREEN_WIDTH / 2, 10,
Graphics.HCENTER | Graphics.TOP);
}
else if (m_DemoAnimation.currentFrameNr >= 7
&& m_DemoAnimation.currentFrameNr <= 17) {
g.drawString(HINT[5], SCREEN_WIDTH / 2, 10,
Graphics.HCENTER | Graphics.TOP);
}
else if (m_DemoAnimation.currentFrameNr >= 18) {
g.drawString(HINT[6],
SCREEN_WIDTH / 2, 10, Graphics.HCENTER | Graphics.TOP);
}
}
public void doGameState(Graphics g) {
if (bSelectKeyDown == false && bGameMenuAnimationOver()) {
drawBackground(g); // 画背景
drawBonus(g); // 画奖品
drawTool(g); // 画工具
drawFraise(g); // 画障碍物
drawEnemy(g); // 画敌人
drawRole(g); // 画角色
drawSkateboard(g); // 画滑板
drawForeground(g); // 画前景
drawSnow(g); //画雨雪
drawDecoration(g); // 画装饰
drawString(g); // 画提示语
}
if (bSelectKeyDown && bGameMenuAnimationOver()) {
changeState(STATE_PAUSE);
}
}
public void doEndState(Graphics g) {
g.setClip(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
g.setColor(0);
g.fillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
thisRole.player.setNextFrame();
thisRole.player.paint(g, 0, SCREEN_HEIGHT / 2, PieceSprite.TRANS_NONE);
g.setColor(0xFFFFFF);
ToolBox.drawOutlinedText(g, m_CreditsFont, HINT[3],
SCREEN_WIDTH / 2, 20,
Graphics.HCENTER | Graphics.VCENTER);
}
public void drawString(Graphics g) {
if (thisRole.getRoleStatus() == ROLESTATUS_INJURE) {
g.setClip(SCREEN_WIDTH / 2 - wordWidth,
(SCREEN_HEIGHT - m_MenuFont.getHeight()) / 2 - 2,
wordWidth * 2, m_MenuFont.getHeight() + 4);
wordWidth += 4;
ToolBox.drawOutlinedText(g, m_MenuFont, HINT[0], SCREEN_WIDTH / 2,
SCREEN_HEIGHT / 2,
Graphics.HCENTER | Graphics.VCENTER);
}
else {
if (MacroSpeed == 0) {
if (totalBonus < EVERYBONUS[currentScreen][currentRole]) {
g.setClip(SCREEN_WIDTH - 20 - wordWidth,
(SCREEN_HEIGHT - m_MenuFont.getHeight()) / 2 - 2,
wordWidth, m_MenuFont.getHeight() + 4);
wordWidth += 6;
ToolBox.drawOutlinedText(g, m_MenuFont, HINT[1], SCREEN_WIDTH / 2,
SCREEN_HEIGHT / 2,
Graphics.HCENTER | Graphics.VCENTER);
}
else {
g.setClip(20, (SCREEN_HEIGHT - m_MenuFont.getHeight()) / 2 - 2,
wordWidth, m_MenuFont.getHeight() + 4);
wordWidth += 6;
ToolBox.drawOutlinedText(g, m_MenuFont, HINT[2], SCREEN_WIDTH / 2,
SCREEN_HEIGHT / 2,
Graphics.HCENTER | Graphics.VCENTER);
}
}
}
g.setClip(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
}
/**
* 画右键菜单
* @param g Graphics
*/
protected void doPauseMenu(Graphics g) {
int currPosition = 0;
g.setClip(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
g.setColor(0);
g.fillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
g.setColor(COLOR_ACTIVE);
drawGameMenuAnimation(g);
if (bSelectKeyDown == false && bGameMenuAnimationOver()) {
drawSelector(MENU_GAME_PAUSE, g);
/* menu options */
/// PORTING - #graphics
for (int i = 0; i < MENU_GAME_PAUSE.length; i++) {
ToolBox.drawOutlinedText(g, m_MenuFont, MENU_GAME_PAUSE[i],
SCREEN_WIDTH / 2,
MENU_Y +
(currPosition++ * MENU_GAP));
}
}
if (bSelectKeyDown && bGameMenuAnimationOver()) {
switch (m_Position) {
case 0:
WriteData();
changeState(STATE_GAME_SAVING);
break;
case 1:
changeState(STATE_GAME);
m_Paused = false;
break;
case 2:
m_Position = 0;
exit();
changeState(STATE_MAINMENU);
break;
}
}
}
/**
* 存储完毕
* @param g Graphics
*/
protected void doGameSaving(Graphics g) {
int currPosition = 0;
g.setClip(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
g.setColor(0);
g.fillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
g.setColor(COLOR_ACTIVE);
drawGameMenuAnimation(g);
if (bSelectKeyDown == false && bGameMenuAnimationOver()) {
ToolBox.drawOutlinedText(g, m_MenuFont, MSG_SAVING,
SCREEN_WIDTH / 2,
(SCREEN_HEIGHT / 2) +
(currPosition++ * SAVERESUME_GAP));
}
if (bSelectKeyDown && bGameMenuAnimationOver()) {
changeState(STATE_PAUSE);
}
}
/**
* bGameMenuAnimationOver
* 检测菜单动画是否播放完成
*
* @return boolean
*/
public boolean bGameMenuAnimationOver() {
if (m_MenuFrameAnimation.currentFrameNr ==
m_MenuFrameAnimation.currentAnimation.length - 1) {
return true;
}
else {
return false;
}
}
public boolean bCoverAnimationOver() {
if (m_CoverAnimation.currentFrameNr ==
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -