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

📄 mycanvas.java

📁 这是个功能比较多的RPG 但是也存在比较多的BUG 有待完善中
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package Game;

/////////////////////////////
//屏幕寬180
//屏幕高196
/////////////////////////////
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import java.io.*;
import javax.microedition.lcdui.Font;

public class MyCanvas extends Canvas implements Runnable {

//////////////////////////////////////////////////////宏定義
    public static final int GAME_LOGO = 0;
    public static final int UP = -1;
    public static final int DOWN = -2;
    public static final int LEFT = -3;
    public static final int RIGHT = -4;
    public static final int FIRE = -5;
    public static final int LEFT_KEY = -6;
    public static final int RIGHT_KEY = -7;
//////////////////////////////////////////////////////mc變量
    DataRMS dr;

    int viewX; //屏幕左上角坐标
    int viewY; //屏幕左上角坐标


    int screenWidth; //屏幕寬
    int screenHeight; //屏幕高

    Image imgBuffer; //雙緩沖圖片
    Thread thread; //線程
    Graphics gg; //雙緩沖畫筆
    Font font;
    Mymidlet midlet; //移動信息驅動描述
    Tools tools; //工具


///////////////////////////////////////////////////////狀態變量
    int gameState; //游戏總狀態   0--菜单页  1--游戏页
    int scene; //游戏进行中的场景号:  0--战斗页 其它代表各场景的序号
    int sceneAfterFight; //记录战斗之后应该回到的场景
    boolean keyState; //按键狀態!!!!!!!
    int switchFightState; //场景画面与战斗画面的切换状态:
    boolean running; //游戲開始
    int toScene; //即将要切换去的场景号
    int SlideState;


///////////////////////////////////////////////////////指針變量
    int mainMenuPoint; //游戲主目錄指針

//////////////////////////////////////////////////////計時器變量

    int logoCount; //LOGO計時器

///////////////////////////////////////////////////////坐标变量



///////////////////////////////////////////////////////游戲變量
    MyImage image; //圖片類
    Map map; //地圖
    Hero hero;
    Menu menu; //菜单
    Text text; //显示信息
    boolean confirm = false; //是否按下确定
    boolean dialogOn; //是否处于对话状态
    int dialogID; //对话ID号,随着剧情增加
    boolean firstBoot; //是否第一次游戏
    int process = 0; //游戏进度,与同一个 NPC 说不同的话时用到

////////////////////////////////////////////////////////////////////////////////
    public MyCanvas(Mymidlet midlet) { //構造!!!!!, 系統構造
        this.setFullScreenMode(true); //設置全屏
        this.dr = new DataRMS(this); //生成一个存储对象
        gameState = GAME_LOGO;
        image = new MyImage(this);
        tools = new Tools(this);
        this.midlet = midlet;
        this.screenHeight = this.getHeight();
        this.screenWidth = this.getWidth();
        thread = new Thread(this);
        imgBuffer = Image.createImage(this.getWidth(), this.getHeight());
        gg = imgBuffer.getGraphics();
        font = Font.getFont(0, 0, 16);

        menu = new Menu(this);
        hero = new Hero(this);
        text = new Text(this);

    }

////////////////////////////////////////////////////////////////////////////
//自定義方法

    public void gamestart() { //游戲開始

        thread.start();
        running = true;

    }

    public void ClearScreen(Graphics g) {
        g.setColor(0);
        g.fillRect(0, 0, this.screenWidth, this.screenHeight);
    }

    public void game_logic() { /////////////邏輯!!!!!邏輯!!!!!邏輯!!!!!

    }

    public void checkTalk() {
        if (text.getTextState() == 0 && confirm) { //没有对话时,并且按下确定时
            switch (hero.getNextCollideNPC()) {
            case 4: //与阿美对话时
                dialogOn = true;
                switch (process) {
                case 1: //与阿美第一次对话完后
                    dialogID = 14;
                    break;
                case 2: //与霍恩第一次对话完后
                case 3: //与胡尔第一次对话完后
                    dialogID = 26;
                    break;
                }
                break;
            case 2: //与霍恩对话
                dialogOn = true;
                switch (process) {
                case 1: //与阿美第一次对话完后
                    dialogID = 15;
                    break;
                case 2: //与霍恩第一次对话完后
                case 3: //与胡尔第一次对话完后
                    dialogID = 25;
                    break;
                }
                break;
            case 1: //与胡尔对话
                dialogOn = true;
                switch (process) {
                case 1: //还没到与此 NPC 对话的时候
                    dialogID = 44;
                    break;
                case 2: //与霍恩第一次对话完后
                    dialogID = 27;
                    break;
                case 3: //与胡尔第一次对话完后
                    dialogID = 37;
                    break;
                }
                break;
            case 0: //与萨耶对话
                dialogOn = true;
                switch (process) {
                case 1:
                case 2: //还没发展到此情节
                    dialogID = 44;
                    break;
                case 3: //与胡尔第一次对话完后
                    dialogID = 38;
                    break;
                }
                break;
            }
        }
    }


    public void setDialog() {
        if (dialogOn) {
            text.emptyText();
            switch (dialogID) {
            case 1: //========= 与阿美第一次对话
                text.setText(0, "阿美:你终于醒了!");
                text.show();
                break;
            case 2:
               text.setText(0, "诺齐奥尼:这是什么地");
                text.setText(1, "方?");
                break;
            case 3:
                text.setText(0, "阿美:我的家啊!你已");
                text.setText(1, "经昏睡了3天啦!");
                break;
            case 4:
                text.setText(0, "诺齐奥尼:……");
                break;
            case 5:
                text.setText(0, "阿美:你和你的朋友倒");
                text.setText(1, "在海边,是我爸爸把你");
                text.setText(2, "们救回来的。");
                break;
            case 6:
                text.setText(0, "诺齐奥尼:露娜,露娜");
                text.setText(1, "……她在哪?");
                break;
            case 7:
                text.setText(0, "阿美:哦。是那个女孩");
                text.setText(1, "吗?");
                break;
            case 8:
                text.setText(0, "诺齐奥尼:嗯……");
                break;
            case 9:
                text.setText(0, "阿美:她还在昏迷当中");
                text.setText(1, "……");
                break;
            case 10:
                text.setText(0, "诺奇奥尼:那我怎么才");
                text.setText(1, "能救她啊……");
                break;
            case 11:
                text.setText(0, "阿美:这个我也不知道");
                text.setText(1, "……你去门口找我爸爸");
                text.setText(2, "问问吧,他就在这附近");
                break;
            case 12:
                text.setText(0, "卖装备呢!");
                break;
            case 13:
                text.setText(0, "诺奇奥尼:嗯,好的…");
                text.setText(1, "…");
                text.setCanEnd(true); //第一对话结束!
                process = 1;
                break;
            case 14: //========= 与阿美第二次对话
                text.setText(0, "阿美:快去问问我爸爸");
                text.setText(1, "吧,他就在外边附近。");
                text.show();
                text.setCanEnd(true); //此次对话结束
                break;
            case 15: //========= 与霍恩第一次对话
                text.setText(0, "霍恩:小伙子你醒啦?");
                text.show();
                break;
            case 16:
                text.setText(0, "诺奇奥尼:谢谢您的救");
                text.setText(1, "命之恩!我的朋友还没");
                text.setText(2, "醒,能帮我救救他吗?");
                break;
            case 17:
                text.setText(0, "霍恩:我已经尽力了,");
                text.setText(1, "她中了一种很奇怪的毒");
                text.setText(2, ",我从来没有见过……");
                break;
            case 18:
                text.setText(0, "诺奇奥尼:那……那怎");
                text.setText(1, "么办?");
                break;
            case 19:
                text.setText(0, "霍恩:村子附近有个男");
                text.setText(1, "孩叫胡尔,他性格很孤");
                text.setText(2, "僻,但是精通医术,你");
                break;
            case 20:
                text.setText(0, "试着去找他问问吧。");
                break;
            case 21:
                text.setText(0, "诺奇奥尼:嗯…好的。");
                break;
            case 22:
                text.setText(0, "霍恩:等一下……自从");
                text.setText(1, "你们的岛被破坏后,村");
                text.setText(2, "子附近有了许多奇怪的");
                break;
            case 23:
                text.setText(0, "怪物,这是一把我精心");
                text.setText(1, "打造的剑,你先拿去防");
                text.setText(2, "身用。");
                break;
            case 24:
                text.setText(0, "诺奇奥尼:嗯,谢谢,");
                text.setText(1, "我会注意的。");
                text.setCanEnd(true); //与霍恩第一次对话结束
                process = 2;
                break;
            case 25: //========= 与霍恩第二次对话
                text.setText(0, "霍恩:快去吧,救人要");
                text.setText(1, "紧。");
                text.show();
                text.setCanEnd(true); //此次对话结束
                break;
            case 26: //========= 与阿美第三次对话
                text.setText(0, "阿美:胡尔那人性格虽");
                text.setText(1, "然孤僻,但是他内心里");
                text.setText(2, "挺善良的。");
                text.show();
                text.setCanEnd(true); //此次对话结束
                break;
            case 27: //========= 与胡尔第一次对话
                text.setText(0, "诺奇奥尼:请问你是胡");
                text.setText(1, "尔吗?");
                text.show();
                break;
            case 28:
                text.setText(0, "胡尔:小子,问这个干");
                text.setText(1, "嘛?想打架吗?");
                break;
            case 29:
                text.setText(0, "诺奇奥尼:误会误会,");
                text.setText(1, "我是请你帮我救人的…");
                text.setText(2, "…");
                break;
            case 30:
                text.setText(0, "胡尔:救人?天天都有");
                text.setText(1, "人要我帮他们救人!我");
                text.setText(2, "为什么要帮你?");
                break;
            case 31:
                text.setText(0, "诺奇奥尼:求求你了,");
                text.setText(1, "她对我非常重要!你想");
                text.setText(2, "要什么我都能答应!");
                break;
            case 32:
                text.setText(0, "胡尔:她?又是个痴情");
                text.setText(1, "的人!好吧,看你那么");
                text.setText(2, "痴情就帮你吧!");

⌨️ 快捷键说明

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