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

📄 menuscreen.java

📁 J2ME的游戏原代码!希望能帮助有需要帮助的师兄弟们!
💻 JAVA
字号:
package com.centerscore.game;

import javax.microedition.lcdui.*;

class MenuScreen extends Canvas {

    final static byte MENU_RESUME = 0;
    final static byte MENU_PLAY = 1;
    final static byte MENU_MENU = 2;
    final static byte MENU_QUIT = 3;
    final static byte MENU_HIGHSCORES = 4;
    final static byte MENU_AUDIO = 5;
    // SD final static byte MENU_LANGUAGE = 6;
    // final static byte MENU_CREDITS = 7;
    // final static byte MENU_HELP = 8;
    // final static byte MENU_MAIN = 9;
    // final static byte MENU_AUDIOON = 10;
    // final static byte MENU_AUDIOOFF = 11;
    final static byte MENU_CREDITS = 6;
    final static byte MENU_HELP = 7;
    final static byte MENU_MAIN = 8;
    final static byte MENU_AUDIOON = 9;
    final static byte MENU_AUDIOOFF = 10;

    int level1Index;
    int level2Index;
    int level3Index;
    boolean level2Active;
    boolean level3Active;
    boolean preSplashScreenDone;
    Image m_pImgPreSplash;

    private final int QBERT_TEXT_OFFSET_X = 14;
	/* Start	Modified		23-04-2003		for chinese support	*/
    private final int QBERT_TEXT_OFFSET_Y = 5;
    //private final int QBERT_TEXT_OFFSET_Y = -1;
    /* End		Modified		23-04-2003	*/

    private final int LEVEL_1_X = 66;
    private final int[] LEVEL_1_Y = { 62, 76, 90, 104 };

    private final int LEVEL_2_X = 15;  // selection gets drawn here
    // SD private final int[] LEVEL_2_Y = { 14, 24, 34, 44, 54, 64 };  // selection gets drawn here
	/* Start	Modified		23-04-2003		for chinese support	*/
    private final int[] LEVEL_2_Y = { 14, 31, 48, 65, 82 };  // selection gets drawn here

//    private final int[] LEVEL_2_Y = { 14, 24, 34, 44, 54 };  // selection gets drawn here
	/* End		Modified		23-04-2003	*/
    private final int LEVEL2_MENU_OFFSET = 4;
    private final int LEVEL_2_WINDOW_X = 10;
    private final int LEVEL_2_WINDOW_Y = 8;
    private final int LEVEL_2_WINDOW_W = 100;
    /* Start	Modified		23-04-2003		for chinese support	*/
    private final int LEVEL_2_WINDOW_H = 94;
    //private final int LEVEL_2_WINDOW_H = 58;
    /* End		Modified		23-04-2003	*/
    // SD private String[] LEVEL2_STRINGS = { "hiscores", "audio", "language", "credits", "help", "main screen" };

    /*	Start	Commented		23-04-2003		for chinese support	*/
    //private String[] LEVEL2_STRINGS = { "hiscores", "audio", "credits", "help", "main screen" };
    /* End		Commented		23-04-2003	*/

    private final int LEVEL_3_X = 45;
	/* Start	Modified		23-04-2003		for chinese support	*/
    private final int[] LEVEL_3_Y = { 35, 50 };
    //private final int[] LEVEL_3_Y = { 35, 45 };
    /* End		Modified		23-04-2003	*/
    // SD private final int LEVEL3_MENU_OFFSET = 10;
    private final int LEVEL3_MENU_OFFSET = 9;
    private final int LEVEL_3_WINDOW_X = 40;
    private final int LEVEL_3_WINDOW_Y = 30;
	/* Start	Modified		23-04-2003		for chinese support	*/
    private final int LEVEL_3_WINDOW_W = 44;
    //private final int LEVEL_3_WINDOW_W = 40;
    private final int LEVEL_3_WINDOW_H = 40;
    //private final int LEVEL_3_WINDOW_H = 30;
    /* End		Modified		23-04-2003	*/
    private String[] LEVEL3_STRINGS = { "on", "off" };

    private boolean level2SelectionChanged;
    private boolean level3SelectionChanged;
    private GameMidlet m_pMidlet;

    private int[] m_arrKeyInputs = new int[6];


    MenuScreen(GameMidlet midlet) {
        m_pMidlet = midlet;
        setCommandListener(m_pMidlet);

        try {
            m_pImgPreSplash = Image.createImage("/presplash.png");
        } catch (Exception ex) {}
    }


    int getMenuAction() {
        if (level3Active) {
            return (level3Index + LEVEL3_MENU_OFFSET);
        } else  if (level2Active) {
            return (level2Index + LEVEL2_MENU_OFFSET);
        } else {
            return (level1Index);
        }
    }


    protected void paint(Graphics g) {
        if (preSplashScreenDone) {

            if (!level2SelectionChanged  & !level3SelectionChanged) {
                drawLevel1(g);
            }

            if (level2Active & !level3SelectionChanged) {
                drawLevel2(g);
            }

            if (level3Active) {
                drawLevel3(g);
            }
        } else {
            g.drawImage(m_pImgPreSplash, 0, 0, Globals.GFX_TOPLEFT);
        }
    }


    private void drawLevel1(Graphics g) {
        g.drawImage(Sprite.IMG_SPLASH, 0, 0, Globals.GFX_TOPLEFT);

        if (m_pMidlet.m_bSavedGame) {
			/* Start	Modified	08-05-2003		for chinese support	*/
			//VALLI MR2 y 57 - 56
            g.drawImage(Sprite.IMG_RESUME, 74, 56, Globals.GFX_TOPLEFT);
            //g.drawImage(Sprite.IMG_RESUME, 75, 60, Globals.GFX_TOPLEFT);
            /* End		Modified	08-05-2003	*/
        }
		/* Start	Modified		18-03-2003		transparency	*/
		//VALLI MR2
		g.drawImage(Sprite.IMG_SELECT, LEVEL_1_X, LEVEL_1_Y[level1Index], Globals.GFX_TOPLEFT);
		//Sprite.drawClipped(g, Sprite.IMG_ALL, LEVEL_1_X, LEVEL_1_Y[level1Index], Sprite.g_arr2ClipInfoStuff, 9, 1);
        //g.drawImage(Sprite.selector, LEVEL_1_X, LEVEL_1_Y[level1Index], Globals.GFX_TOPLEFT);
        /* End		Modified		18-03-2003	*/
    }


    private void drawLevel2(Graphics g) {
        if (level2SelectionChanged) {
            // just clear Q*Bert selector space
            g.setColor(0x000000);
            g.fillRect(LEVEL_2_WINDOW_X, LEVEL_2_WINDOW_Y, QBERT_TEXT_OFFSET_X, LEVEL_2_WINDOW_H);
            level2SelectionChanged = false;
        } else {
            // draw menu texts
            g.setColor(0x0000ff);
            g.drawRect(LEVEL_2_WINDOW_X - 2, LEVEL_2_WINDOW_Y - 2, LEVEL_2_WINDOW_W + 3, LEVEL_2_WINDOW_H + 3);

            g.setColor(0xff0000);
            g.drawRect(LEVEL_2_WINDOW_X - 1, LEVEL_2_WINDOW_Y - 1, LEVEL_2_WINDOW_W + 1, LEVEL_2_WINDOW_H + 1);

            g.setColor(0x000000);
            g.fillRect(LEVEL_2_WINDOW_X, LEVEL_2_WINDOW_Y, LEVEL_2_WINDOW_W, LEVEL_2_WINDOW_H);

			/* Start		Modified		23-04-2003		for chineese support	*/
			g.setColor(250,250,4);
		    g.setFont( Globals.font);
            for (int i = 0; i < 5; i++) {
                g.drawString(Globals.chineseString[Globals.MENU_TXT_OFFSET+i],
                		LEVEL_2_WINDOW_X + QBERT_TEXT_OFFSET_X, LEVEL_2_Y[i],
                		g.TOP | g.LEFT );
            }
            /* End		Modified		23-04-2003	*/
        }

        // in any case: draw Q*Bert selector
        /* Start	Modified	18-03-2003		transparency	*/
		Sprite.drawClipped(g, Sprite.IMG_ALL, LEVEL_2_X, LEVEL_2_Y[level2Index]+ QBERT_TEXT_OFFSET_Y, Sprite.g_arr2ClipInfoStuff, 9, 1);
        //g.drawImage(Sprite.selector, LEVEL_2_X, LEVEL_2_Y[level2Index] + QBERT_TEXT_OFFSET_Y, Globals.GFX_TOPLEFT);
        /* End		Modified	18-03-2003	*/
    }


    private void drawLevel3(Graphics g) {
        if (level3SelectionChanged) {
            // just clear Q*Bert selector space
            g.setColor(0x000000);
            g.fillRect(LEVEL_3_WINDOW_X, LEVEL_3_WINDOW_Y, QBERT_TEXT_OFFSET_X, LEVEL_3_WINDOW_H);
            level3SelectionChanged = false;
        } else {
            // draw menu texts
            g.setColor(0x0000ff);
            g.drawRect(LEVEL_3_WINDOW_X - 2, LEVEL_3_WINDOW_Y - 2, LEVEL_3_WINDOW_W + 3, LEVEL_3_WINDOW_H + 3);

            g.setColor(0xff0000);
            g.drawRect(LEVEL_3_WINDOW_X - 1, LEVEL_3_WINDOW_Y - 1, LEVEL_3_WINDOW_W + 1, LEVEL_3_WINDOW_H + 1);

            g.setColor(0x000000);
            g.fillRect(LEVEL_3_WINDOW_X, LEVEL_3_WINDOW_Y, LEVEL_3_WINDOW_W, LEVEL_3_WINDOW_H);

			/* Start		Modified		23-04-2003		for chineese support	*/
			g.setColor(250,250,4);
		    g.setFont( Globals.font);
            for (int i = 0; i < 2; i++) {
                g.drawString(Globals.chineseString[Globals.MENU_TXT_OFFSET+i+5],
                		LEVEL_3_WINDOW_X + QBERT_TEXT_OFFSET_X,
                		LEVEL_3_Y[i], g.TOP | g.LEFT);
            }
            /* End		Modified		23-04-2003	*/
        }

        // in any case: draw Q*Bert selector
        /* Start	Modified		18-03-2003		transparency	*/
		Sprite.drawClipped(g, Sprite.IMG_ALL, LEVEL_3_X, LEVEL_3_Y[level3Index]+ QBERT_TEXT_OFFSET_Y, Sprite.g_arr2ClipInfoStuff, 9, 1);
        //g.drawImage(Sprite.selector, LEVEL_3_X, LEVEL_3_Y[level3Index] + QBERT_TEXT_OFFSET_Y, Globals.GFX_TOPLEFT);
        /* End		Modified	18-03-2003	*/
    }


    private boolean checkCheatKey(int key) {
        int i;
        for (i = 1; i <= 5; i++) {
            m_arrKeyInputs[i-1] = m_arrKeyInputs[i];
        }
        m_arrKeyInputs[5] = key;

        for (i = 0; i < 6; i++) {
            if (m_arrKeyInputs[i] != Globals.CHEAT_KEY_ARRAY[i]) {
                return false;
            }
        }
        return true;
    }


    protected void keyPressed(int key) {
        if (preSplashScreenDone) {

            if (checkCheatKey(key)) {
                m_pMidlet.g_bCheatOn = true;
            }

            switch (getGameAction(key)) {
            case Canvas.FIRE :
                m_pMidlet.commandAction(m_pMidlet.m_cmdSelect, this);
            break;
            case Canvas.UP :
                if (level3Active) {
                    level3Index--;
                    if (level3Index == -1) {
                        level3Index = LEVEL_3_Y.length - 1;
                    }
                    level3SelectionChanged = true;
                } else if (level2Active) {
                    level2Index--;
                    if (level2Index == -1) {
                        level2Index = LEVEL_2_Y.length - 1;
                    }
                    level2SelectionChanged = true;
                } else {
                    level1Index--;
                    if (level1Index == -1) {
                        level1Index = LEVEL_1_Y.length - 1;
                    }
                    if ((level1Index == 0) && (!m_pMidlet.m_bSavedGame)) {
                        level1Index = LEVEL_1_Y.length - 1;
                    }
                }
                repaint();
                serviceRepaints();
            break;
            case Canvas.DOWN :
                if (level3Active) {
                    if (level3Index == LEVEL_3_Y.length  - 1) {
                        level3Index = 0;
                    } else {
                        level3Index++;
                    }
                    level3SelectionChanged = true;
                } else if (level2Active) {
                    if (level2Index == LEVEL_2_Y.length  - 1) {
                        level2Index = 0;
                    } else {
                        level2Index++;
                    }
                    level2SelectionChanged = true;
                } else {
                    if (level1Index == LEVEL_1_Y.length  - 1) {
                        if (m_pMidlet.m_bSavedGame) {
                            level1Index = 0;
                        } else {
                            level1Index = 1;
                        }
                    } else {
                        level1Index++;
                    }
                }
                repaint();
                serviceRepaints();
            break;
            }
        }
    }

	/* Start	Modified	21-03-2003		for external events	*/
    protected void showNotify() {
        try {
			repaint();
			serviceRepaints();
        } catch (Exception ex) {}
    }
	/* End		Modified	21-03-2003	*/
}

⌨️ 快捷键说明

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