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

📄 gameupdate.java

📁 学习j2me写的,虽然在碰撞上处理的不好!但其中的技巧还是可以学习的1
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
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 + -