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

📄 menu.java

📁 为公司开发的打企鹅小游戏
💻 JAVA
字号:
package penguin;

import java.io.*;
import java.lang.Class;
import java.util.*;
import javax.microedition.lcdui.*;

public class Menu {
    private MenuNode[] array_menu;
    private int showType;
    private MenuNode menuArrow;

    public int menuSelect;

    public final static int SCREENWIDTH = 128;
    public final static int SCREENHEIGHT = 128;

    public final static int LIST = 0;
    public final static int SCROLL = 1;
    public final static int RADIO = 2;

    public int MENUITEMCELL;
    public final static int LEVLUPBLOCK = 100;

    private int MENUITEMLEFT;
    private int MENUITEMTOP;

    private int[] showMenu = new int[20];

    public Menu(MenuNode[] array_menu, MenuNode menuArrow,int MENUITEMLEFT,int MENUITEMTOP,int showType) {
        this.array_menu = array_menu;
        this.menuArrow = menuArrow;
        this.showType = showType;
        this.MENUITEMLEFT = MENUITEMLEFT;
        this.MENUITEMTOP = MENUITEMTOP;
        MENUITEMCELL = 4;
        menuSelect = 0;
    }

    public void MenuBack() {
        int parent = array_menu[menuSelect].parent;
        if (parent != 8) {
            menuSelect = parent;
        }
        else {
            PenguinScreen.state = PenguinScreen.END;
        }
        return;
    }

    public void MenuUp() {
        int parent, i;
        int start = 0, end = 0;

        parent = array_menu[menuSelect].parent;
        for (i = 0; i < array_menu.length; i++) {
            if (array_menu[i].parent == parent) {
                if (start == end) {
                    start = i;
                    end = start;
                }
                end++;
            }
        }
        if (menuSelect == start) {
            menuSelect = end - 1;
        }
        else {
            menuSelect--;
        }
        return;
    }

    public void MenuDown() {
        int parent, i;
        int start = 0, end = 0;

        parent = array_menu[menuSelect].parent;
        for (i = 0; i < array_menu.length; i++) {
            if (array_menu[i].parent == parent) {
                if (start == end) {
                    start = i;
                    end = start;
                }
                end++;
            }
        }

        if (menuSelect == end - 1) {
            menuSelect = start;
        }
        else {
            menuSelect++;
        }
    }

    public int MenuOK() {
        int i;
        int parent;
        int re_state = array_menu[menuSelect].state;
        parent = array_menu[menuSelect].parent;
        for (i = 0; i < array_menu.length; i++) {
            if (array_menu[i].parent == menuSelect) {
                menuSelect = i;
                break;
            }
        }

        if (i == array_menu.length) {
            re_state = array_menu[menuSelect].state;
            menuSelect = 0;
        }
        return (re_state);
    }

    public static void drawImageEx(Graphics g, Image image, int destX,
                                   int destY, int srcX, int srcY, int width,
                                   int height) {
        g.setClip(destX, destY, width, height);
        g.drawImage(image, destX - srcX, destY - srcY, 0);
    }

    void paint(Graphics g,Image menuImage) {
        int nowParent = array_menu[menuSelect].parent;
        switch (showType) {
            case LIST:
                int menuNum = 0;
                int arrowNum = 0;
                int menuHeight=-1;
                boolean arrowFlag = true;
                for (int i = 0; i < array_menu.length; i++) {
                    if (array_menu[i].parent == nowParent) {
                            if(menuHeight==-1) menuHeight=array_menu[i].h;
                        drawImageEx(g, menuImage, MENUITEMLEFT,
                                    MENUITEMTOP +
                                    (array_menu[i].h + MENUITEMCELL) *
                                    menuNum,
                                    array_menu[i].x, array_menu[i].y,
                                    array_menu[i].w,
                                    array_menu[i].h);
                        menuNum++;
                        if (arrowFlag) {
                            if (i != menuSelect) {
                                arrowNum++;
                            }
                            else {
                                arrowFlag = false;
                            }
                        }
                    }
                }
                drawImageEx(g, menuImage, MENUITEMLEFT - menuArrow.w-5,
                            MENUITEMTOP +
                            (menuHeight + MENUITEMCELL) *
                            arrowNum,
                            menuArrow.x, menuArrow.y, menuArrow.w,
                            menuArrow.h);

                break;
            case SCROLL:
                int countMenu = 0;
                int maxMenu;
                for (int i = 0; i < array_menu.length; i++) {
                    if (array_menu[i].parent == nowParent) {
                        showMenu[countMenu] = i;
                        countMenu++;
                    }
                }
                maxMenu = countMenu;

                                int i;
                int firstMenu = -1;
                int lastMenu = -1;
                int nowMenu = -1;
                int max_width = 0;
                try {
                    for (i = 0; i < maxMenu; i++) {
                        if (showMenu[i] == menuSelect) {
                            nowMenu = i;
                            break;
                        }
                    }

                    firstMenu = nowMenu - 1;
                    lastMenu = nowMenu + 1;
                    if (nowMenu == 0) {
                        firstMenu = maxMenu - 1;
                    }
                    if (nowMenu == maxMenu - 1) {
                        lastMenu = 0;
                    }

                    firstMenu = showMenu[firstMenu];
                    lastMenu = showMenu[lastMenu];
                    nowMenu = showMenu[nowMenu];

                    if (array_menu[firstMenu].w > max_width) {
                        max_width = array_menu[firstMenu].w;
                    }
                    if (array_menu[nowMenu].w > max_width) {
                        max_width = array_menu[nowMenu].w;
                    }
                    if (array_menu[lastMenu].w > max_width) {
                        max_width = array_menu[lastMenu].w;
                    }
                    MENUITEMLEFT = (SCREENWIDTH - max_width) / 2;

                    g.setColor(18, 166, 255);
                    g.fillRect(MENUITEMLEFT,
                               MENUITEMTOP,
                               array_menu[firstMenu].w,
                               array_menu[firstMenu].h);

                    g.setColor(69, 187, 255);
                    g.fillRect(MENUITEMLEFT,
                               MENUITEMTOP + array_menu[firstMenu].h +
                               MENUITEMCELL + array_menu[nowMenu].h +
                               MENUITEMCELL,
                               array_menu[lastMenu].w,
                               array_menu[lastMenu].h);

                    if ( (firstMenu != -1) && (lastMenu != -1)) {
                        drawImageEx(g, menuImage,
                                    MENUITEMLEFT -
                                    (menuArrow.w - max_width) / 2,
                                    MENUITEMTOP + array_menu[firstMenu].h +
                                    MENUITEMCELL -
                                    (menuArrow.h - array_menu[nowMenu].h) / 2,
                                    menuArrow.x, menuArrow.y, menuArrow.w,
                                    menuArrow.h);

                        drawImageEx(g, menuImage, MENUITEMLEFT, MENUITEMTOP,
                                    array_menu[firstMenu].x,
                                    array_menu[firstMenu].y,
                                    array_menu[firstMenu].w,
                                    array_menu[firstMenu].h);

                        drawImageEx(g, menuImage, MENUITEMLEFT,
                                    MENUITEMTOP + array_menu[firstMenu].h +
                                    MENUITEMCELL,
                                    array_menu[nowMenu].x, array_menu[nowMenu].y,
                                    array_menu[nowMenu].w, array_menu[nowMenu].h);

                        drawImageEx(g, menuImage, MENUITEMLEFT,
                                    MENUITEMTOP + array_menu[firstMenu].h +
                                    MENUITEMCELL + array_menu[nowMenu].h +
                                    MENUITEMCELL,
                                    array_menu[lastMenu].x,
                                    array_menu[lastMenu].y,
                                    array_menu[lastMenu].w,
                                    array_menu[lastMenu].h);
                    }
                }
                catch (Exception e) {}
                break;
            case RADIO:
                for (i=0; i<array_menu.length; i++){
                    drawImageEx(g, menuImage, MENUITEMLEFT+i*MENUITEMCELL,
                                    MENUITEMTOP,
                                    array_menu[i].x + (menuSelect*array_menu[i].w),
                                    array_menu[i].y,
                                    array_menu[i].w,
                                    array_menu[i].h);
                }
                drawImageEx(g, menuImage, (MENUITEMLEFT-(menuArrow.w-array_menu[menuSelect].w)/2)+(1-menuSelect)*MENUITEMCELL,
                                MENUITEMTOP-(menuArrow.h-array_menu[menuSelect].h)/2,
                                menuArrow.x, menuArrow.y, menuArrow.w, menuArrow.h);//方框
                break;
            default:
                break;
        }
    }
}

class MenuNode {
    int parent;
    int x;
    int y;
    int w;
    int h;
    int state;
    public MenuNode(int parent, int x, int y, int w, int h, int state) {
        this.parent = parent;
        this.x = x;
        this.y = y;
        this.w = w;
        this.h = h;
        this.state = state;
    }
}

⌨️ 快捷键说明

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