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

📄 mainmenu.java

📁 这是一款功能完备的横版闯关手机游戏
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
//package bushfighting;

import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Canvas;
import com.nokia.mid.ui.FullCanvas;

public class MainMenu extends FullCanvas implements Runnable {
    private int mCanvasWidth, mCanvasHeight;
    private int mItemIndex = 0; //当前的菜单索引
    private int mItemWidth, mItemHeight;
    private Image mBufferImage; //用作双缓冲的图片
    private Graphics mBGraphics;
    private Image mBGImage = null; //用作菜单背景
    
    private BushFighting mMIDlet = null;
    protected Display mDisplay = null;
    public MainCanvas mGameCanvas = null; //游戏的主界面
    private NetDataForm mDataForm = null; //用于进行数据处理和信息显示
    private Score mScore = null;
    private DisplayManager mDisplayManager = null;
    private boolean mShowMenu = false; //菜单是否弹出的标志
    private MainMenu menu = this;
    private boolean mLoadFinished = false;//是否加载完毕的标志
    
    protected Media title = new Media("/sound/title.mid","audio/midi",false);
    
/*    private boolean stopSplash=false;
    private int splashX=0;
    private int splashY=0;
    private int clipY=0;
    private int splashStep=1;
    private Image textImg=null;//文字介绍图片
 */
    
    private final int mProgressBar = 80; //进度条的长度
    private int mCurrentValue = 0; //当前的进度条位置
    private int mState = 1; //用于表示当前显示的是启动画面还是菜单画面,0,表示启动,1表示菜单
    
    private static final String[] mMenuItems = {"开始游戏","游戏帮助","音乐 ","关于游戏","退出游戏"};
    public final String STR_ABOUT = "开发商:&  广州奥创信息技术有&限公司。&开发商:&北京飒美&网络有限公司。&如果您有什么建议的话&请致电& 010-58695258&或Email:&  service@sammy-net.com.cn& &非常感谢您的使用。";
    public final String STR_PRODUCTINFO = "游戏名称:&三国志-黄忠霸业&版本号:1.0.0&程序大小:80K&占用内存:160K&资费:7元/次下载&发行商:广州奥创&信息技术有限&公司开发商:&北京飒美网络有限公司&如果有什么建议&请致电:&010-58695258-322& 邮箱:&service@sammy-net.com.cn & 非常感谢您的使用";
    private final String STR_HELPINFO = "在乱世的三国世界里&"+
            "董卓挟天子以令诸侯&"+
            "黄巾势力独霸一方&"+
            "在这混沌的世界里&"+
            "流传着一本野史&"+
            "记载着黄忠的英雄事迹&"+
            "平乱黄巾贼&"+
            "三英战吕布&"+
            "长板桥之役&"+
            "火烧连环船&"+
            "辅助刘备入驻西蜀&"+
            "玩家需要操作黄忠&"+
            "重新演绎这段野史&"+
            "成就霸业!&"+
            "导航键上/数字键2:&"+
            " 操作角色向上移动 &"+
            "导航键下/数字键8:&"+
            " 操作角色向下移动 &"+
            "导航键左/数字键4:&"+
            " 操作角色向左移动 &"+
            "导航键右/数字键6:&"+
            " 操作角色向右移动 &"+
            "导航键中/数字键5:&"+
            " 发射弓箭";
    
    public MainMenu(BushFighting midlet, Display display) {
        mMIDlet = midlet;
        mDisplay = display;
        mCanvasWidth = getWidth();
        mCanvasHeight = getHeight();
        mBufferImage = Image.createImage(mCanvasWidth, mCanvasHeight);
        mBGraphics = mBufferImage.getGraphics();
        mDisplayManager = new DisplayManager(mDisplay, this);
        try {
            mBGImage = HF.loadImage("mlogo2.png");
            mBGraphics.drawImage(mBGImage, 0, 0, Graphics.LEFT | Graphics.TOP); //先将
            //mBGImage = HF.loadImage("mlogo2.png");
        } catch (Exception e) {
            System.out.println("error loading the logo");
        }
    }
    
    //初始化数据数据
    public void initGame() {
        //使用一个内嵌的线程去加载
        //Thread thread = new Thread()
        //{
        //public void run()
        //{
        mScore = new Score();
        mDataForm = new NetDataForm(mDisplayManager, mScore, mBufferImage);
        mGameCanvas = new MainCanvas(menu, mDataForm, mScore, mBufferImage);
        mGameCanvas.init();
        mGameCanvas.setDisplayManager(mDisplayManager);
        mLoadFinished = true;
        //}
        //};
        //thread.start();
    }
    
    //显示启动画面
    public void showSplashWindow() {
        mState = 2; //显示启动画面
        Thread thread = new Thread(this);
        thread.start();
    }
    
    //绘制启动画面
    private void drawSplashWindow(Graphics g) {
        clearScreen(mBGraphics,0);
/*    	  mBGraphics.setClip(0,mCanvasHeight/2-clipY,mCanvasWidth,clipY<<1);
          clipY+=splashStep;
        mBGraphics.drawImage(mBGImage, splashY>=0?0:splashY,mCanvasHeight>>1, Graphics.VCENTER | Graphics.LEFT);
        mBGraphics.setClip(0,mCanvasHeight+mBGImage.getHeight()>>1,mCanvasWidth,mCanvasHeight);
        mBGraphics.drawImage(textImg,0,splashX,Graphics.LEFT|Graphics.TOP);
        mBGraphics.setClip(0,0,mCanvasWidth,mCanvasHeight);
 */
        mBGraphics.setColor(HF.COLOR_WHITE);
        int x = (mCanvasWidth - mProgressBar) / 2;
        int y = 150;
        mBGraphics.fillRect(x, y, mProgressBar, 10);
        mBGraphics.setColor(HF.COLOR_BLUE);
        mBGraphics.fillRect(x, y, mCurrentValue, 10);
        
        g.drawImage(mBufferImage, 0, 0, Graphics.LEFT | Graphics.TOP);
    }
    
    //用于处理显示启动画面
    public void run() {
        System.out.println("线程运行");
        int step = 8;
        // try {
        if (mState == 2) {
            repaint(0, 0, mCanvasWidth, mCanvasHeight);
            System.gc();
            try{
                Thread.sleep(1000);
            }catch(Exception e){}
            //转去显示公司的logo,并且加载游戏启动完毕后的logo
            try{
                mBGraphics.drawImage(mBGImage, 0, 0, Graphics.LEFT | Graphics.TOP); //先将
                //mBGImage = HF.loadImage("logo.png");
                mBGImage=HF.loadImage("splash.png");
                //textImg=HF.loadImage("text.png");
            } catch(Exception e){
            }
            //mState = 0;
        }
        if(mState == 2){
            System.out.println("循环中前");
            repaint(0,0,mCanvasWidth,mCanvasHeight);
            System.gc();
            try{
                Thread.sleep(500);
            }catch(Exception e){}
            //stopSplash=false;
            //splashX=mCanvasHeight+textImg.getHeight();
            //splashY=10;
            //clipY=0;
            //HF.title.load();
            mState = 0;
            //mLoadFinished=false;
        }
        while (mLoadFinished== false/*||!stopSplash&&(splashX+textImg.getHeight())>(mCanvasHeight/2)*/ ||mCurrentValue < mProgressBar) {
            //System.out.println("循环中"+(splashX+textImg.getHeight()));
                  /*splashX-=splashStep;
                  if(splashY+mBGImage.getWidth()>mCanvasWidth)
                  splashY--;
                mCurrentValue += step;
                   */
            if (mCurrentValue >= mProgressBar)
                mCurrentValue = mProgressBar - 2;
            if (mLoadFinished == true)
                mCurrentValue = mProgressBar;
            repaint(0, 0, mCanvasWidth, mCanvasHeight);
            try{
                Thread.sleep(50);
            }catch(Exception e){}
        }
        //   }
        //  catch (Exception e) {
        //   }
        try{
            //textImg=null;
            mBGImage=HF.loadImage("logo.png");
            System.gc();
        }catch(Exception e){}
        mState = 1; //切换为显示菜单画面
        //HF.title.play();
        repaint(0, 0, mCanvasWidth, mCanvasHeight);
        if(HF.sound)
            title.play();
    }
    
    //执行绘制菜单的工作
    public void paint(Graphics g) {
        
        if (mState == 2) {
            g.drawImage(mBufferImage, 0, 0, Graphics.LEFT | Graphics.TOP);
        } else if (mState == 0) {
            drawSplashWindow(g);
        } else {
            clearScreen(mBGraphics, HF.COLOR_LIGHTBLUE);
            mBGraphics.drawImage(mBGImage, 0, 0, Graphics.LEFT | Graphics.TOP);
            mBGraphics.setFont(HF.SMALL_FONT);
            drawMenu(mBGraphics);
            g.drawImage(mBufferImage, 0, 0, Graphics.LEFT | Graphics.TOP);

⌨️ 快捷键说明

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