📄 engine.java
字号:
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
// 游戏引擎类
public class Engine
extends Thread {
// 状态常量
protected static final int STATE_SPLASH = 0; //显示闪屏
protected static final int STATE_LOAD = 1; //继续游戏
protected static final int STATE_INTRO = 2; //说明
// 菜单
protected static final int STATE_MENU = 3; //主菜单
protected static final int STATE_ISDIE=4444;
// 玩游戏
// protected static final int STATE_PLAYING = 5; //游戏中
//protected static final int STATE_STAGE1 = 51;
//protected static final int STATE_STAGE2 = 52;
protected static final int STATE_WIN = 53; //胜利
protected static final int STATE_GAMEOVER = 54; //失败
//protected static final int STATE_HELP = 6;//
//protected static final int STATE_SETTING = 7;
//protected static final int STATE_ABOUT = 8;
//protected static final int STATE_GAMEOVER = 9;
protected static final int STATE_RESTARTGAME = 11;
protected static final int STATE_PAUSE = 12;
protected static final int STATE_OPEN = 13;
protected static final int STATE_NEW = 14; //开始游戏
protected static final int STATE_PLAY = 15;
protected static final int STATE_SAVE = 16;
protected static final int STATE_PLAYMENU = 17; //游戏中途菜单
protected static final int STATE_MENUSELECT = 18;
protected static final int STATE_COPYRIGHT = 19;
protected static final int STATE_PLAYINTRO = 20;
protected static final int STATE_PLAYCOPYRIGHT = 21;
protected static final int STATE_VOLUME = 22;
//protected static final int STATE_NEXT = 23;
protected static final int STATE_PASS = 24;
protected static final int STATE_SCORE = 25; //得分记录score
protected static final int STATE_GRADE = 26; //游戏的难度
protected static final int STATE_LOSE=27;
// 主线程
private Thread threadRunner;
private CanoeingMIDlet canoeingMIDlet;
private StageCanvas stageCanvas;
private int runSleep=100;//线程值
// 当前状态变量
public int gameState = 0;
// 上一个状态变量
public int lastGameState = 0;
// 第一次暂停的时间
private long lStopWatchStartTime = 0;
// 游戏主人公
// private Sprite player;
// 载入游戏的上一个状态变量
public int lastLoadGameState = 0;
// 构造函数
public Engine() {
gameState = STATE_SPLASH; //打开游戏 进度条
threadRunner = new Thread(this);
}
public void setStageCanvas(StageCanvas canvas) {
stageCanvas = canvas;
}
/**
public Engine(StageCanvas canvas) {
}
*/
// 设置游戏当前状态
private void setGameState(int state) {
gameState = state;
}
// 取得游戏的当前状态
public int getGameState() {
return this.gameState;
}
// 取得游戏的上一个状态
public int getLastGameState() {
return this.lastGameState;
}
// 重置停止等待的时间
protected void resetStopWatch() {
lStopWatchStartTime = System.currentTimeMillis();
}
// 取得停止的时间
protected long getStopWatchTime() {
return System.currentTimeMillis() - lStopWatchStartTime;
}
// 线程休眠mS
protected void runnerSleep(int ms) {
try {
threadRunner.sleep(ms);
}
catch (Exception exception) {}
}
// 开始游戏
public void start() {
if (threadRunner == null) {
threadRunner = new Thread(this); //this
}
threadRunner.start();
}
// 按键控制
protected void keyController(int key_code) { //, int game_action) {
switch (gameState) {
case STATE_SPLASH: //Bbmf-image
break;
case STATE_INTRO: // 在游戏介绍
// if (key_code == 53) {
if (key_code == -7) {
if (lastLoadGameState == Engine.STATE_PLAYMENU) {//游戏中途菜单介绍
gameState = Engine.STATE_PLAYMENU;
}
else {
gameState = Engine.STATE_MENU;
}
this.stageCanvas.isRepaint = true;
}
break;
case STATE_SCORE: //得分记录
// if (key_code == 53) {
if (key_code == -7) {
if (lastLoadGameState == Engine.STATE_PLAYMENU) {
gameState = Engine.STATE_PLAYMENU;
}
else {
gameState = Engine.STATE_MENU;
}
this.stageCanvas.isRepaint = true;
}
break;
case STATE_COPYRIGHT: // 厂商咨询
// if (key_code == 53) {
if (key_code == -7) {
if (lastLoadGameState == Engine.STATE_PLAYMENU) {
gameState = Engine.STATE_PLAYMENU;
}
else {
gameState = Engine.STATE_MENU;
}
this.stageCanvas.isRepaint = true;
}
break;
//********************************************************************************************
case STATE_MENU: //按上下方向键移动菜单,按确定键选择菜单项
// this.lastLoadGameState = STATE_MENU;
int menuSelected = stageCanvas.getMenuIndex();
switch (key_code) {
case -1: //key_up
if (menuSelected == 0)
stageCanvas.setMenuIndex(5);
else {
menuSelected--;
stageCanvas.setMenuIndex(menuSelected);
}
break;
case -2: //key_down
if (menuSelected == 5)
stageCanvas.setMenuIndex(0);
else {
menuSelected++;
stageCanvas.setMenuIndex(menuSelected);
// System.out.println("menuSelected is :" + menuSelected);
}
break;
// case 53: // 5号键
case -6://左软键
switch (menuSelected) {
case 0:
gameState = Engine.STATE_GRADE;
break;
case 1: //
gameState = Engine.STATE_INTRO; //介绍说明
break;
case 2: //
gameState = Engine.STATE_SCORE; //得分记录
break;
case 3: //
gameState = Engine.STATE_VOLUME; //声音开关
break;
case 4:
gameState = Engine.STATE_COPYRIGHT; //厂商咨询
break;
case 5: //退出游戏
CanoeingMIDlet.quitApp();
break;
}
break;
}
this.stageCanvas.isRepaint = true;
break;
//*******************************************************************************************************
case STATE_NEW: //开始游戏
switch (key_code) {
case -7://右软键
gameState = Engine.STATE_PLAYMENU; //游戏中途副菜单
break;
// case 53:
// gameState=Engine.STATE_NEW;
/// System.out.println("this is moving stone!");
// break;
}
// this.stageCanvas.stoneY=120;
this.stageCanvas.isRepaint = true;
break;
case STATE_PLAY: //游戏进行中
switch (key_code) {
// case 52://4号键
case -3:
stageCanvas.canKey = 1;
break;
// case 54://6号键
case -4:
stageCanvas.canKey = 2;
break;
case -7://右软键
gameState = Engine.STATE_PLAYMENU; //游戏中途副菜单
break;
case 35://# --pause
gameState=Engine.STATE_PAUSE;
break;
}
this.stageCanvas.isRepaint = true;
break;
//*****************************************************
//# pause
case STATE_PAUSE:
switch (key_code) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -