📄 gameupdate.java
字号:
package Snowball;
import Creature.*;
import javax.microedition.lcdui.*;
public class GameUpdate
{
private GameStatus gs; //游戏世界状态
private ObjectManage om; //游戏对象管理器
private GameImage gi; //游戏图片资源
private int Number; //计数器
/** Creates a new instance of GameUpdate **/
public GameUpdate(GameStatus gs, ObjectManage om,GameImage gi)
{
this.gs = gs;
this.om = om;
this.gi = gi;
GameNewHero();
GameNewBall();
}
/*
*
* 游戏总逻辑更新 Process()
*
*/
public void Process(){
switch(gs.gameState){
case 0://LOGO
gs.drawState = gs.LOGO;
if(gs.logoState>15){
gs.gameState = 1;
//背景音效
gs.gMusic.bgMusicStart();
}
else
gs.gameState = 0;
//gameState = 2;
break;
case 1://首页主菜单
gs.drawState = gs.INDEX;
break;
case 2://新游戏
gs.drawState = gs.GAME;
GameLogic();
break;
case 3://游戏结束
if(0 == Number){
gs.drawState = gs.GAME_OVER;
gs.gameState = 4;
Number++;
}
break;
case 4://游戏结束进入游戏排行榜
gs.drawState = gs.SHOW_SCORE;
break;
case 5://帮助
gs.drawState = gs.HELP;
break;
case 6://关于
gs.drawState = gs.ABOUT;
break;
case 7://首页进入游戏排行榜
gs.drawState = gs.SHOW_SCORE;
break;
}
}
/*
*
* 游戏对象更新GameCreature()
*
*/
private void GameCreature()
{
Creature co = null;
//更新对象管理器中的对象
co = (Creature)om.Search(co);
while(co != null )
{
if(co.State){
co.Process(gs.TickCount);
}
//检索下一个对象
co = (Creature)om.Search(co);
}
//帧记数器累加
gs.TickCount++;
}
/*
*
* 游戏内部逻辑GameLogic()
*
*/
private void GameLogic(){
switch(gs.logicState) {
case 0://关卡界面
gs.drawState = gs.NEW_LEVEL;//关卡显示
GameLevel();//关卡数据加载
gs.logicState++;
break;
case 1: //游戏过程
//游戏对象更新
GameCreature();
//碰撞检测 , 物品显示
Check();
//检测是否等到物品
if(gs.gp.GainGoods() ){
if( 2 == gs.gp.GoodsType){//射程
if(gs.ball.BallDistance >= 100){
gs.gp.Scores += 500;
}
else{
gs.ball.BallDistance = gs.ball.BallDistance + 10;
}
}
if( 1 == gs.gp.GoodsType){//能量
if(gs.ball.BallPower >= 10){
gs.gp.Scores += 500;
}
else{
gs.ball.BallPower = gs.ball.BallPower + 10;
}
}
gs.gp.GoodsState = false;
}
//过关检测
if( CheckLevel() ){
gs.gp.FlyProc();
if(gs.gp.y + 30 < 0){
gs.Wait(500);
GameNewLevel();
}
}
//英雄复活
if(gs.gp.HeroRelive){
gs.gp.HeroRelive();
gs.ball.BallDistance = 50;
}
//游戏结束
if(gs.gp.GameOver){
gs.gameState = 3;
}
break;
}
}
/*
*
* 游戏关卡选择GameLevel()
*
*/
private void GameLevel(){
switch(gs.gl.getGreatLevel()){
case 1://第一大关
switch(gs.gl.getShareLevel()){
case 1: //第一小关
gs.gm.changeMapData(1,1);
//向游戏对象管理器里添加对象
gs.ms1 = new Monster(52, 144, 1, gi.Monster1L, gi.Monster1R, 1,3,gs.gp,gs.ball );
gs.ms2 = new Monster(66, 108, 0, gi.Monster1L, gi.Monster1R, 1,3,gs.gp,gs.ball);
gs.ms3 = new Monster(170, 58, 0, gi.Monster1L, gi.Monster1R, 1, 3,gs.gp,gs.ball);
gs.ms4 = new Monster(0, 29, 1, gi.Monster1L, gi.Monster1R, 1,3,gs.gp,gs.ball);
om.Append(gs.ms1); //玩家
om.Append(gs.ms2); //玩家
om.Append(gs.ms3); //玩家
om.Append(gs.ms4); //玩家
break;
case 2://第二小关
gs.gm.changeMapData(1,2);
//向游戏对象管理器里添加对象
gs.ms1 = new Monster(0, 142, 1, gi.Monster1L, gi.Monster1R, 1,3,gs.gp,gs.ball );
gs.ms2 = new Monster(168, 105 , 1, gi.Monster1L, gi.Monster1R, 1,3,gs.gp,gs.ball );
gs.ms3 = new Monster(24, 69, 1, gi.Monster1L, gi.Monster1R, 1,3,gs.gp,gs.ball );
gs.ms4 = new Monster(106, 40, 1, gi.Monster2L, gi.Monster2R, 2,3,gs.gp,gs.ball );
om.Append(gs.ms1); //玩家
om.Append(gs.ms2); //玩家
om.Append(gs.ms3); //玩家
om.Append(gs.ms4); //玩家
break;
case 3:
gs.gm.changeMapData(1,3);
//向游戏对象管理器里添加对象
gs.ms1 = new Monster(0, 146, 1, gi.Monster1L, gi.Monster1R, 1,3,gs.gp,gs.ball );
gs.ms2 = new Monster(49, 38 , 1, gi.Monster1L, gi.Monster1R, 1,3,gs.gp,gs.ball );
gs.ms3 = new Monster(40, 109, 1, gi.Monster3L, gi.Monster3R, 2,4,gs.gp,gs.ball );
gs.ms4 = new Monster(107, 80, 1, gi.Monster2L, gi.Monster2R, 2,3,gs.gp,gs.ball );
om.Append(gs.ms1); //玩家
om.Append(gs.ms2); //玩家
om.Append(gs.ms3); //玩家
om.Append(gs.ms4); //玩家
break;
case 4://需要加BOSS
gs.gm.changeMapData(1,4);
//向游戏对象管理器里添加对象
gs.ms1 = new Monster(90, 148, 1, gi.Monster1L, gi.Monster1R, 1,3,gs.gp,gs.ball );
gs.ms2 = new Monster(75, 118, 0, gi.Monster3L, gi.Monster3R, 2,4,gs.gp,gs.ball );
gs.ms3 = new Monster(96, 81, 1, gi.Monster2L, gi.Monster2R, 2,3,gs.gp,gs.ball );
gs.ms4 = new Monster(171, 24, 0, gi.Monster2L, gi.Monster2R, 2, 3,gs.gp,gs.ball );
gs.boss = new Boss(100, 186, 0, gi.Boss1L, gi.Boss1R ,40);
om.Append(gs.ms1); //玩家
om.Append(gs.ms2); //玩家
om.Append(gs.ms3); //玩家
om.Append(gs.ms4); //玩家
om.Append(gs.boss); //玩家
break;
}break;
case 2://第二大关
switch(gs.gl.getShareLevel()){
case 1:
gs.gm.changeMapData(2,1);
//向游戏对象管理器里添加对象
gs.ms1 = new Monster(62, 157, 1, gi.Monster4L, gi.Monster4R, 2,3,gs.gp,gs.ball );
gs.ms2 = new Monster(95, 120, 0, gi.Monster4L, gi.Monster4R, 2,3,gs.gp,gs.ball );
gs.ms3 = new Monster(138, 84, 0, gi.Monster4L, gi.Monster4R, 2,3,gs.gp,gs.ball );
gs.ms4 = new Monster(129, 46, 1, gi.Monster4L, gi.Monster4R, 2, 3,gs.gp,gs.ball );
om.Append(gs.ms1); //玩家
om.Append(gs.ms2); //玩家
om.Append(gs.ms3); //玩家
om.Append(gs.ms4); //玩家
break;
case 2:
gs.gm.changeMapData(2,2);
//向游戏对象管理器里添加对象
gs.ms1 = new Monster(94, 152, 0, gi.Monster4L, gi.Monster4R, 2,3,gs.gp,gs.ball );
gs.ms2 = new Monster(104, 115, 1, gi.Monster4L, gi.Monster4R, 2,3,gs.gp,gs.ball );
gs.ms3 = new Monster(37, 44, 0, gi.Monster4L, gi.Monster4R, 2,3,gs.gp,gs.ball );
gs.ms4 = new Monster(157, 43 , 1, gi.Monster5L, gi.Monster5R, 2, 4,gs.gp,gs.ball );
om.Append(gs.ms1); //玩家
om.Append(gs.ms2); //玩家
om.Append(gs.ms3); //玩家
om.Append(gs.ms4); //玩家
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -