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

📄 helpaboutcanvas.java

📁 格斗类型的游戏
💻 JAVA
字号:

import com.nokia.mid.ui.FullCanvas;

import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Font;
import java.util.Vector;


public class HelpAboutCanvas extends FullCanvas {
    //菜单的索引值
    private int selectedIndex = 0;
    private int page = 0;
    //菜单状态值
    private int canvasFlg = 0;

    //帮助菜单
    private String[] helpMenu = {
        "故事介绍",
        "游戏规则",
        "按键响应",
        "客户服务"
    };
    private String[][] help = null;
    private static final String _fldgoto[] = {
        "发行:数字鱼移动娱乐", "www.digifun.cn", "", "制作:伊雄数码", "www.ebds.cn"
    };
    /**
     * 帮助内容
     * [0] : 游戏故事文字
     * [1] : 游戏规则
     * [2] : 按键响应
     * [3] : 客户服务
     */
    private static final String[] helpContents = {
       "一年一度的世界武术大赛在中国开战。来自世界各地的8位武术家汇" +
       "集嵩山为争夺龙魂的称号展开殊死搏杀...\n\n" +
       "人物介绍\n陈龙 \n男 中国少林俗家弟子\n\n权向珍\n" +
       "女 韩国跆拳道高手\n\n冯\n男  德国拳王\n\n" +
       "迪奥\n男 美国街头冠军\n\n简方\n女 中国南拳手\n\n" +
       "克拉克\n男 智利游侠\n\n山川\n男 日本相扑手\n\n" +
       "巴多夫\n男 俄国大力士",
       "根据设置选择的回合数,游戏时间,游戏难度,进行游戏。\n" +
       "每回合游戏中,根据击中对手的招数(拳打脚踢绝招)减少对手的生" +
       "命值。在规定时间内哪一方生命值先减为0就被判负。\n" +
       "如果生命值都没有减为0则为超时,超时则增加一个的回合,直至分出输赢。" + "" +
       "哪一方赢得所设置的回合数(1回3回或5回)即赢得比赛胜利。\n" +
       "训练模式中,没有时间和生命值的限制。\n" +
           "对战模式中,可以直接选择挑战任何一位选手。\n" +
       "在故事模式中,将其他7位选手都击败,则赢得龙魂称号。\n" +
           "生存模式中,玩家以一定的生命值接受其他7位选手的车轮挑战。",
       "[方向左和按键4]向左移动或蓄力\n[方向右和按键6]向右移动或蓄力\n[方向下和按键8]向下移动或防守\n" +
       "[方向上和按键2]向上移动或跳跃\n[按键1]勾拳\n[按键2]跳跃\n[按键3]直拳\n" +
       "[按键5](当蓄力完全后玩家的血槽下方会有一个闪动的铁拳时)绝招波动拳\n" +
       "[按键7]扫堂腿\n[按键8]防守\n[按键9]回旋踢\n" +
       "[*键]声音开关\n" +
       "[功能右键]返回\n[功能左键]返回主菜单",
        "客服电话:\n0755-26978118\n客服邮件:\nhelp@digifun.cn"
    };

    /**
     * 设定菜单状态
     * @param i1 int,菜单状态值
     */
    public void setMenuState(int i1) {
        canvasFlg = i1;
        selectedIndex = 0;
        page = 0;
    }

    /**
     * 显示游戏画面
     */
    protected void showNotify() {
        DragonSoul.inc.loadLights();
    }

    /**
     * 按键响应函数
     * @param keyCode 按键响应代码
     */
    protected void keyPressed(int keyCode) {
        if (canvasFlg > 1 )  {      //help canvas
            if ( keyCode == -1) {       //up and 2 key
                page = page <= 0 ? page : page - 1;
                repaint();
            } else if ( keyCode == -2) {     //down and 8 key
                //int lines = 60/Font.getFont(64, 1, 8).getHeight();
                page = page >= help.length - 1 ? page : page + 1;
                repaint();
            }
        } else if (canvasFlg == 0) {//help menu canvas
            if ( keyCode == -1) {       //up and 2 key
                selectedIndex = selectedIndex <= 0 ? selectedIndex : selectedIndex - 1;
                repaint();
            } else if ( keyCode == -2) {     //down and 8 key
                selectedIndex = selectedIndex >= helpMenu.length - 1 ? selectedIndex : selectedIndex + 1;
                repaint();
            } else if (keyCode == 53 || keyCode == -6 || keyCode == getKeyCode(8)) {
//                    System.out.println("-- = " + ValueClass.helpContents[selectedIndex]);
                String[] temp = format(helpContents[selectedIndex], getWidth() - 10);
                int lines = (getHeight() - 65)/Font.getFont(64, 1, 8).getHeight();
                int i = 0;
                page = 0;
                help = new String[(temp.length - 1)/lines + 1][lines];
                while (i < temp.length) {
                    if (page < (temp.length - 1)/lines) {
                        System.arraycopy(temp, i, help[page++], 0, lines);
                        i += lines;
                    } else {

                        System.arraycopy(temp, i, help[page++], 0, temp.length - i);
                        i += temp.length - i;
                    }
//                        System.out.println("--pauseGame = " + pauseGame);
                }
                page = 0;
                canvasFlg = 2 + selectedIndex;
                repaint();
            }
        }
        if (keyCode == -7) {         //soft2([back] button)
            if (canvasFlg < 2) {
                if (DragonSoul.inc.bGameHelp)
                    DragonSoul.inc.backToGame();
                else
                    DragonSoul.inc.backToMenu();
            } else {
                canvasFlg = 0;
                repaint();
            }
        }
    }

    /**
     * 绘制帮助信息画面
     * @param g1 Graphics
     */
    protected void paint(Graphics g1)
    {
        for(int i1 = 0; i1 < (getWidth() - 1) / DragonSoul.inc.menuBk.getWidth() + 1; i1++)
            g1.drawImage(DragonSoul.inc.menuBk, i1 * DragonSoul.inc.menuBk.getWidth(), 0, 0x10 | 0x4);

        if (canvasFlg == 0) {
            g1.setFont(Font.getFont(64, 1, 8));

             for(int j1 = 0; j1 < helpMenu.length; j1++) {
                if (j1 == selectedIndex) {
                    g1.drawImage(DragonSoul.inc.fistImage, getWidth() / 3 - 21, 36 + j1 * (g1.getFont().getHeight() + 3), 0);
                }
                g1.setColor(0);
                g1.drawString(helpMenu[j1], getWidth() / 3 - 3, 35 + j1 * (g1.getFont().getHeight() + 4), 0);
                g1.setColor(0x993300);
                g1.drawString(helpMenu[j1], getWidth() / 3 - 3, 34 + j1 * (g1.getFont().getHeight() + 4), 0);
            }
        } else if(canvasFlg > 1) {
        	g1.setFont(Font.getFont(64, 1, 0));
            g1.setColor(0);
            g1.drawString(helpMenu[selectedIndex], getWidth() / 2 + 1, 5, 0x10 | 0x1);
            g1.setColor(0xffff00);
            g1.drawString(helpMenu[selectedIndex], getWidth() / 2, 4, 0x10 | 0x1);
            g1.setFont(Font.getFont(64, 1, 8));
            if(page > 0)
            {
                g1.setColor(0);
                g1.drawString("上一页", getWidth() / 2 + 1, 24, 0x10 | 0x1);
                g1.setColor(0xffff00);
                g1.drawString("上一页", getWidth() / 2, 23, 0x10 | 0x1);
            }
//             int lines = 60/Font.getFont(64, 1, 8).getHeight();
//System.out.println("help.length:"+help.length);
//System.out.println("page:"+page);
//System.out.println("lines:"+lines);
            if(page < help.length - 1)
            {
                g1.setColor(0);
                g1.drawString("下一页", getWidth() / 2 + 1, getHeight() - 26, 0x10 | 0x1);
                g1.setColor(0xffff00);
                g1.drawString("下一页", getWidth() / 2, getHeight() - 25, 0x10 | 0x1);
            }
            for(int j1 = 0; j1 < help[page].length && help[page][j1] != null; j1++) {
                //g1.setColor(0);
                //g1.drawString(help[page][j1], getWidth() / 2 + 1, 39 + j1 * g1.getFont().getHeight(), 0x10 | 0x1);
                g1.setColor(0x993300);
                g1.drawString(help[page][j1], getWidth() / 2, 38 + j1 * g1.getFont().getHeight(), 0x10 | 0x1);
            }
        } else  if(canvasFlg == 1) {
            g1.setFont(Font.getFont(64, 1, 8));
            g1.setColor(0x993300);
            for(int k1 = 0; k1 < _fldgoto.length; k1++)
            {
                //g1.setColor(0);
                //g1.drawString(_fldgoto[k1], getWidth() / 2 + 1, 40 + g1.getFont().getHeight() * k1 + 1, 0x10 | 0x1);
                g1.drawString(_fldgoto[k1], getWidth() / 2, 40 + (g1.getFont().getHeight() + 2) * k1, 0x10 | 0x1);
            }

        }
//            g1.setClip(0, 0, getWidth(), getHeight());
//            if (canvasFlg > 1) {
//                g1.drawImage(DragonSoul.inc._fldchar, 0, getHeight(), 0);
//            }
//            g1.drawImage(DragonSoul.inc._fldif, getWidth(), getHeight(), 0x20 | 0x8);
    }

     /**
     * 格式化显示的文本
     * @param text String,每行的文本
     * @param maxWidth int,限制的最大宽度
     * @return result String[],格式化后的文本
     */
    private String[] format(String text, int maxWidth) {
        Font textFont = Font.getFont(64, 1, 8);
        /* return string array */
        String[] result = null;
        /* temp string array */
        Vector tempR = new Vector();
        int lines = 0;
        int len = text.length();
        int index0 = 0;
        int index1 = 0;
        boolean wrap;
        while (true) {
            int widthes = 0;
            wrap = false;
            for(index0 = index1; index1 < len; index1++) {
                if (text.charAt(index1) == '\n') {
                    index1++;
                    wrap = true;
                    break;
                }
                widthes = textFont.stringWidth("" + text.charAt(index1)) +
                        widthes;

                if (widthes > maxWidth) {
                    break;
                }
            }
            lines++;
            if (wrap) {
                tempR.addElement(text.substring(index0, index1 - 1));
            } else {
                tempR.addElement(text.substring(index0, index1));
            }
            if (index1 >= len) {
                break;
            }
        }
        result = new String[lines];
        tempR.copyInto(result);
        return result;
    }
}

⌨️ 快捷键说明

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