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

📄 bnb_game.java

📁 手机版本的泡泡堂 用j2me写的 大家可以参考下
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.TiledLayer;

/*******************************************************************************
 * 类名:BnB_Game 功能:游戏逻辑处理 和 游戏流程处理
 */
public final class BnB_Game extends GameCanvas implements Runnable
{
    public static final int W = 128;//屏幕宽。
    public static final int H = 160;//屏幕高。
    public static final byte OFFSET = 32;//屏幕偏移量
    public static final byte width = 16;//地图Tile的宽度
    public static final byte rest = 100;//线程休眠时间
    public static final int GRAPHICS_TL = (Graphics.TOP | Graphics.LEFT);
    public static final int GRAPHICS_TR = (Graphics.TOP | Graphics.RIGHT);
    private static boolean isStart;//游戏逻辑状态
    private static boolean isPause;//游戏逻辑状态
    public static final byte UI_LOGO = 1;//LOGO界面
    public static final byte UI_MENU = 2;//主菜单界面
    public static final byte UI_GAME = 3;//游戏界面
    public static final byte UI_HELP = 4;//帮助界面
    public static final byte UI_SCORE = 5;//排行榜界面
    public static final byte UI_SETUP = 6;//设置音乐截面
    public static final byte UI_EXIT = 7;//退出界面
    public static final byte UI_PUASE = 8;//暂停界面
    public static final byte UI_PASS = 9;//过关界面
    public static final byte UI_ENDING = 10;//游戏胜利结束界面
    public static final byte UI_OVER = 11;//游戏失败结束界面
    public static final byte UI_SETNAME = 12;//设置名字截面
    public static byte stage;//游戏状态
    public static final Font FONT1 = Font.getFont(64, 1, 16);
    public static final Font FONT2 = Font.getFont(64, 0, 0);
    public static final Font FONT3 = Font.getFont(64, 0, 8);
    public static boolean isOK = true;
    public static byte menupage;
    public static byte pausepage;
    public static int pausetime;
    public static boolean isMusic;
    public static Record rms;
    public static byte pass = 1;// 关卡
    public static int cols;
    public static int[] rows = new int[4];
    public static StringBuffer name;
    // /////////////////////////////////////////////////////////
    // 游戏中的对象
    public static BnB_Player player, npc;
    public static TiledLayer map, box;
    public static long time;
    public static long totalizescore;
    public static Graphics g;

    public BnB_Game()
    {
        super(false);
        setFullScreenMode(true);
        rms = new Record("BnB_Game", 5);
        menupage = 1;
        isStart = true;
        isPause = false;
        stage = UI_LOGO;
        pausepage = 2;
        pausetime = 0;
        g = getGraphics();
        (new Thread(this)).start();
    }

    public static final void clear(Graphics cg)
    {
        cg.setColor(255, 255, 255);
        cg.fillRect(0, 0, W, H);
    }

    public final void run()
    {
        long st = 0;
        long et = 0;
        while (isStart)
        {
            st = System.currentTimeMillis();
            while (isPause)
            {
                mypaint();
                flushGraphics(0, 0, W, H);
                try
                {
                    Thread.sleep(100);
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
            }
            mypaint();
            et = System.currentTimeMillis() - st;
            if (et < rest)
            {
                try
                {
                    Thread.sleep(rest - et);
                }
                catch (Exception e)
                {
                }
            }
            flushGraphics(0, 0, W, H);
        }
    }

    protected void keyPressed(int key)
    {
        switch (stage)
        {
            case UI_LOGO:
                break;
            case UI_MENU:
                switch (getGameAction(key))
                {
                    case LEFT:
                        menupage--;
                        if (menupage < 1)
                        {
                            menupage = 5;
                        }
                        break;
                    case RIGHT:
                        menupage++;
                        if (menupage > 5)
                        {
                            menupage = 1;
                        }
                        break;
                }
                if (key == -6)
                {
                    switch (menupage)
                    {
                        case 1:
                            if (!isOK)
                            {
                                isOK = true;
                                stage = UI_SETNAME;
                                Tools.releaseMenu();
                            }
                            break;
                        case 2:
                            if (!isOK)
                            {
                                isOK = true;
                                stage = UI_HELP;
                                Tools.releaseMenu();
                            }
                            break;
                        case 3:
                            isMusic = !isMusic;
                            break;
                        case 4:
                            if (!isOK)
                            {
                                isOK = true;
                                stage = UI_SCORE;
                                Tools.releaseMenu();
                            }
                            break;
                        case 5:
                            if (!isOK)
                            {
                                isOK = true;
                                stage = UI_EXIT;
                                Tools.releaseMenu();
                            }
                            break;
                    }
                }
                break;
            case UI_SETNAME:
                switch (key)
                {
                    case -3:// 左
                    case 52:
                        cols--;
                        if (cols < 0)
                        {
                            cols = 0;
                        }
                        break;
                    case -4:// 右
                    case 54:
                        cols++;
                        if (cols > 3)
                        {
                            cols = 3;
                        }
                        break;
                    case -1:// 上
                    case 50:
                        switch (cols)
                        {
                            case 0:
                                rows[0]--;
                                if (rows[0] < 0)
                                {
                                    rows[0] = 0;
                                }
                                break;
                            case 1:
                                rows[1]--;
                                if (rows[1] < 0)
                                {
                                    rows[1] = 0;
                                }
                                break;
                            case 2:
                                rows[2]--;
                                if (rows[2] < 0)
                                {
                                    rows[2] = 0;
                                }
                                break;
                            case 3:
                                rows[3]--;
                                if (rows[3] < 0)
                                {
                                    rows[3] = 0;
                                }
                                break;
                        }
                        break;
                    case -2:// 下
                    case 56:
                        switch (cols)
                        {
                            case 0:
                                rows[0]++;
                                if (rows[0] > 25)
                                {
                                    rows[0] = 25;
                                }
                                break;
                            case 1:
                                rows[1]++;
                                if (rows[1] > 25)
                                {
                                    rows[1] = 25;
                                }
                                break;
                            case 2:
                                rows[2]++;
                                if (rows[2] > 25)
                                {
                                    rows[2] = 25;
                                }
                                break;
                            case 3:
                                rows[3]++;
                                if (rows[3] > 25)
                                {
                                    rows[3] = 25;
                                }
                                break;
                        }
                        break;
                    case -6:// 确定
                        name = new StringBuffer("");
                        name.append((char) (rows[0] + 65));
                        name.append((char) (rows[1] + 65));
                        name.append((char) (rows[2] + 65));
                        name.append((char) (rows[3] + 65));
                        BnB_Game.stage = BnB_Game.UI_GAME;
                        BnB_Game.isOK = true;
                        Tools.releaseSetName();
                        cols = 0;
                        rows[0] = 0;
                        rows[1] = 0;
                        rows[2] = 0;
                        rows[3] = 0;
                        break;
                    case -7:// 返回
                        if (!isOK)
                        {
                            isOK = true;
                            stage = UI_MENU;
                            Tools.releaseSetName();
                            cols = 0;
                            rows[0] = 0;
                            rows[1] = 0;
                            rows[2] = 0;
                            rows[3] = 0;
                        }
                }
                break;
            case UI_SETUP:
                break;
            case UI_HELP:
                if (key == -7)
                {
                    if (!isOK)
                    {
                        isOK = true;
                        Tools.releaseBackGround();
                        stage = UI_MENU;
                    }
                }
                break;
            case UI_SCORE:
                if (key == -7)
                {
                    if (!isOK)
                    {
                        try
                        {
                            rms.closeRecordStore();
                        }
                        catch (Exception e)
                        {
                            e.printStackTrace();
                        }
                        isOK = true;
                        Tools.releaseBackGround();
                        stage = UI_MENU;
                    }
                }
                break;
            case UI_EXIT:
                if (key == -6)
                {
                    if (!isOK)
                    {
                        isOK = true;
                        Tools.releaseBackGround();
                        Tools.releaseGame();
                        BnB_MIDlet.midlet.notifyDestroyed();
                    }
                }
                if (key == -7)
                {
                    if (!isOK)
                    {
                        isOK = true;
                        Tools.releaseBackGround();
                        stage = UI_MENU;
                    }
                }
                break;
            case UI_PUASE:
                switch (getGameAction(key))
                {
                    case UP:

⌨️ 快捷键说明

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