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

📄 ge.java

📁 一个j2me游戏代码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
	//}
	/* handle the problem ------------------------------------------------------
	static void handleException(String info, Exception e)
	{
		System.out.println( info + " error: " + e.getMessage() );
		m_midlet.notifyDestroyed();
	}*/

	//==========================================================================
	// Game State
	//==========================================================================
	void levelFinished(boolean pass)
	{
		if (pass)
		{
			m_levelPassed[m_levelSelected] = 1;
			m_levelPassTime = (m_curFrameTime - m_levelPassTime)/1000;
			m_levelScore[m_levelSelected] = (short)(500 - m_levelPassTime - m_levelPassHurt*30 + LEVEL_SCORE[m_levelLoad]);//(m_levelPassHurt+2)/3;
			if (m_levelScore[m_levelSelected] < 0) m_levelScore[m_levelSelected] = 0;
			playSound(Def.SOUND_LEVELCLEARED_MID, 1);
			saveRecord();
            m_gameState = Def.STATE_END_LEVEL;
		}
		else
		{
			m_gameState = Def.STATE_GAMEOVER;
		}
		freeImages(false);
	}
    // update keys pressed
    static void updateKeys()
    {
        m_inputTime++;
        for (int key = 0; key <= Def.KEY_ATTACK; key++)
        {
            if (m_inputBuf[key] == Def.Up_Continuous)
            {
                if (m_input[key] == Def.Dn_Instant)
                    m_input[key] = Def.Dn_Continuous;
                else if (m_input[key] == Def.Up_Instant)
                    m_input[key] = Def.Up_Continuous;
            }
            else
            {
                m_input[key] = m_inputBuf[key];
                m_inputBuf[key] = Def.Up_Continuous;
            }
        }
		m_input[Def.KEY_SOFT1] = Def.Up_Continuous;
		m_input[Def.KEY_SOFT2] = Def.Up_Continuous;
		m_input[Def.KEY_SOFT3] = Def.Up_Continuous;
    }
	// Update game state for each frame ----------------------------------------
	void updateState()
	{
		if (m_blockKey)    m_blockKey = false;
		switch(m_gameState)
		{
		case Def.STATE_RUN:
			if (m_msgIndex < 0)
			{
				if (m_input[Def.KEY_SOFT1] >= Def.Dn_Instant || m_input[Def.KEY_SOFT2] >= Def.Dn_Instant || m_input[Def.KEY_SOFT3] >= Def.Dn_Instant)
				{
					pauseGame();
				}
				else
				{
					m_player.updatePlayer();
				}
			}
			break;
		case Def.STATE_PAUSE:
			if (m_input[Def.KEY_SOFT2] >= Def.Dn_Instant)
			{
				switch(m_pauseIndex)
				{
				case 0: // resume
					m_pauseIndex = -1;
					m_gameState = Def.STATE_RUN;
					m_levelPassTime = m_curFrameTime - m_levelPassTime;
					break;
                case 1: // hint
                    m_playHint = (byte)(1-m_playHint);
                    saveRecord();
                    break;
                case 2: // sound
                    //m_playSound = (byte)(1-m_playSound);
                    m_playSound = (byte)((m_playSound + 2) % 3);
                    if (m_playSound == 0) stopSound();
                    saveRecord();
                    break;
				case 3: // Menu
					m_pauseIndex = -1;
					freeImages(false);
					m_gameState = Def.STATE_MENU;
                    playSound(Def.SOUND_TITLE_MID, 1);
					break;
                case 4: // Exit
                    m_gameState = Def.STATE_EXIT;
					break;
				}
				//playSound(Def.SOUND_SWITCHOPTIONS_MID, 1);
				resetKey();
			}
			else if (m_input[Def.KEY_U] == Def.Dn_Instant || m_input[Def.KEY_L] == Def.Dn_Instant)
			{
				//playSound(Def.SOUND_SELECT_MID, 1);
				m_pauseIndex = (m_pauseIndex+PAUSE_ITEM_NUM-1) % PAUSE_ITEM_NUM;
			}
			else if (m_input[Def.KEY_D] == Def.Dn_Instant || m_input[Def.KEY_R] == Def.Dn_Instant)
			{
				//playSound(Def.SOUND_SELECT_MID, 1);
				m_pauseIndex = (m_pauseIndex+1) % PAUSE_ITEM_NUM;
			}
			break;
		case Def.STATE_MENU:
			if (m_input[Def.KEY_SOFT2] >= Def.Dn_Instant)
			{
				switch(m_menuIndex)
				{
				case 0: // new game
				    if (m_levelPassed[0] > 0)
					{
						m_gameState = Def.STATE_NEW_GAME;
					}
		            else
				    {
						m_textCounter = 0;
						m_gameState = Def.STATE_BEGIN_SCREEN;
					}
					break;
			    case 1: // continue
				    for (int i = 0; i < Def.LEVEL_NUMBER; i++)
					    if (m_levelPassed[i] == 0)
						{
			 			    m_levelSelected = i;
							break;
						}
					m_gameState = Def.STATE_INIT_LEVEL;
				    //setCommands("", "");
					break;
				case 2: // free tour
					m_gameState = Def.STATE_FREE_TOUR;
                    //setCommands("Menu", "Select");
					break;
				case 3: // option
                    m_optionIndex = 0;
					m_gameState = Def.STATE_MENU_OPTION;
					break;
				case 4: // about
					m_textCounter = 0;
					m_gameState = Def.STATE_ABOUT;
					break;
				case 5: // Exit
					m_gameState = Def.STATE_EXIT;
                    //setCommands("No", "Yes");
					break;
				}
				//playSound(Def.SOUND_SWITCHOPTIONS_MID, 1);
				resetKey();
			}
			else if (m_input[Def.KEY_U] == Def.Dn_Instant || m_input[Def.KEY_L] == Def.Dn_Instant)
			{
				//playSound(Def.SOUND_SELECT_MID, 1);
				m_menuIndex = (m_menuIndex+MENU_ITEM_NUM-1) % MENU_ITEM_NUM;
				if (m_menuIndex == 1 && (m_levelPassed[Def.LEVEL_NUMBER-1] > 0 || m_levelPassed[0] == 0)) // no continue when all level passed
				    m_menuIndex = 0;
			}
			else if (m_input[Def.KEY_D] == Def.Dn_Instant || m_input[Def.KEY_R] == Def.Dn_Instant)
			{
				//playSound(Def.SOUND_SELECT_MID, 1);
				m_menuIndex = (m_menuIndex+1) % MENU_ITEM_NUM;
                if (m_menuIndex == 1 && (m_levelPassed[Def.LEVEL_NUMBER-1] > 0 || m_levelPassed[0] == 0)) // no continue when all level passed
				    m_menuIndex = 2;
			}
			break;

        case Def.STATE_MENU_OPTION:
            if (m_input[Def.KEY_SOFT2] >= Def.Dn_Instant)
            {
                switch(m_optionIndex)
                {
                case 0: // resume
                    m_optionIndex = -1;
                    m_gameState = Def.STATE_MENU;
                    break;
                case 1: // hint
                    m_playHint = (byte)(1-m_playHint);
                    saveRecord();
                    break;
                case 2: // sound
                    //m_playSound = (byte)(1-m_playSound);
                    m_playSound = (byte)((m_playSound + 2) % 3);
                    if (m_playSound == 0) stopSound();
                    saveRecord();
                    break;
                case 3: // controls
					m_textCounter = 0;
                    m_gameState = Def.STATE_CONTROL;
                    break;
                }
                //playSound(Def.SOUND_SWITCHOPTIONS_MID, 1);
                resetKey();
            }
            else if (m_input[Def.KEY_U] == Def.Dn_Instant || m_input[Def.KEY_L] == Def.Dn_Instant)
            {
                //playSound(Def.SOUND_SELECT_MID, 1);
                m_optionIndex = (m_optionIndex+OPTION_ITEM_NUM-1) % OPTION_ITEM_NUM;
            }
            else if (m_input[Def.KEY_D] == Def.Dn_Instant || m_input[Def.KEY_R] == Def.Dn_Instant)
            {
                //playSound(Def.SOUND_SELECT_MID, 1);
                m_optionIndex = (m_optionIndex+1) % OPTION_ITEM_NUM;
            }
            break;

		case Def.STATE_INIT_LEVEL:
            try {
                switch(++m_progress)
                {
                    case 1:
                        freeImages(false);
                        freeLevelData();
                        switchImage(Def.SWITCH_NONE);
                        break;
                    case 2:
                        if (loadPlayfield() == 0)
                        {
                            m_progress = 0;
                            m_mapBuf = null;
                            m_gameState = Def.STATE_MENU;
                        }
                        break;
                    case 3:
                        if (loadScene() == 0)
                        {
                            m_progress = 0;
                            m_player.freePlayer();
                            m_gameState = Def.STATE_MENU;
                        }
                        break;
                    case 4:
                    case 5:
                    case 6:
                    case 7:
                    case 8:
                        loadImages(false);
                        break;
                    case 9:
                        switchImage(Def.SWITCH_BG);
                        break;
                    case 10:
                        m_player.initPlayer();
                        break;
                    case 11:
                        m_gameState = Def.STATE_RUN;
                        // init variables
                        m_progress = 0;
                        m_msgIndex = -1;
                        m_msgLine = -1;
                        m_msgTime = 0;
                        m_levelPassHurt = 0;
                        m_levelPassTime = m_curFrameTime;
                        m_levelLoad = m_levelSelected;
                        resetKey();
                        playSound(Def.SOUND_LEVELBEGIN_MID, 1);
                        break;
                }
                System.gc();
            } catch (Exception e) {
                m_progress = 0;
                freeImages(false);
                freeLevelData();
				m_gameState = Def.STATE_MENU;
            }
			break;

		case Def.STATE_BEGIN_SCREEN:
		    if (m_textOver && m_lastInput != Def.KEY_NONE)
			{
				resetRecord();
				m_levelSelected = 0;
				m_gameState = Def.STATE_INIT_LEVEL;
			}
			break;

		case Def.STATE_END_SCREEN:
		    if (m_textOver && m_lastInput != Def.KEY_NONE)
			{
				m_gameState = Def.STATE_SPLASH;
				m_menuIndex = 2; // free tour
			}
			break;

		case Def.STATE_END_LEVEL:
			if (m_input[Def.KEY_SOFT2] >= Def.Dn_Instant)
			{
				if (m_levelSelected == Def.LEVEL_NUMBER-1)
				{
					m_levelSelected = 0;
					m_textCounter = 0;
					resetKey();
					m_gameState = Def.STATE_END_SCREEN;
					playSound(Def.SOUND_ENDING_MID, 1);
				}
				else
				{
					m_levelSelected++;
					m_gameState = Def.STATE_INIT_LEVEL;
					//setCommands("", "");
				}
			}
			else if (m_input[Def.KEY_SOFT1] >= Def.Dn_Instant)
			{
				if (m_levelSelected != Def.LEVEL_NUMBER-1)
				{
					m_levelSelected++;
				    m_gameState = Def.STATE_MENU;
				    //setCommands("", "Select");
                    playSound(Def.SOUND_TITLE_MID, 1);
				}
			}
			break;
		case Def.STATE_GAMEOVER:
			if (m_input[Def.KEY_SOFT2] >= Def.Dn_Instant)
			{
				m_gameState = Def.STATE_INIT_LEVEL;
				//setCommands("", "");
			}
			else if (m_input[Def.KEY_SOFT1] >= Def.Dn_Instant)
			{
				m_gameState = Def.STATE_MENU;
				//setCommands("", "Select");
                playSound(Def.SOUND_TITLE_MID, 1);
			}
		    break;
		case Def.STATE_NEW_GAME:
			if (m_input[Def.KEY_SOFT2] >= Def.Dn_Instant)
			{
				m_textCounter = 0;
				m_gameState = Def.STATE_BEGIN_SCREEN;
				resetKey();
			}
            else if (m_input[Def.KEY_SOFT1] >= Def.Dn_Instant)
				m_gameState = Def.STATE_MENU;
			break;
		case Def.STATE_CONTROL:
            if (m_textOver && m_lastInput != Def.KEY_NONE)
            {
                m_gameState = Def.STATE_MENU_OPTION;
            }
			break;
		case Def.STATE_ABOUT:
		    if (m_textOver && m_lastInput != Def.KEY_NONE)
			{
				m_gameState = Def.STATE_MENU;
			}
			break;
		case Def.STATE_FREE_TOUR:
			if (m_input[Def.KEY_SOFT1] >= Def.Dn_Instant)
			{
				//GE.playSound(Def.SOUND_SWITCHOPTIONS_MID, 1);
				m_gameState = Def.STATE_MENU;
				//setCommands("", "Select");
			}
			else if (m_input[Def.KEY_SOFT2] >= Def.Dn_Instant)
			{
				if (m_levelPassed[m_levelSelected] > 0)
				{
					//playSound(Def.SOUND_SWITCHOPTIONS_MID, 1);
					m_gameState = Def.STATE_INIT_LEVEL;
				}
			}
            else if (m_input[Def.KEY_U] == Def.Dn_Instant)
			{
				//GE.playSound(Def.SOUND_SELECT_MID, 1);
				m_levelSelected = (m_levelSelected+Def.LEVEL_NUMBER-1) % Def.LEVEL_NUMBER;
			}
            else if (m_input[Def.KEY_D] == Def.Dn_Instant)
			{
				//GE.playSound(Def.SOUND_SELECT_MID, 1);
				m_levelSelected = (m_levelSelected+1) % Def.LEVEL_NUMBER;
			}
			break;
		case Def.STATE_EXIT:
			if (m_input[Def.KEY_SOFT1] >= Def.Dn_Instant)
			{
			    m_gameState = (m_pauseIndex < 0) ? Def.STATE_MENU : Def.STATE_PAUSE;
				//setCommands("", "Select");
			}
	        else if (m_input[Def.KEY_SOFT2] >= Def.Dn_Instant)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -