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

📄 mycanvas.java

📁 这个是早期学习时写的RPG游戏 包括地图相关 战斗相关 NPC与 存储等 功能
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
            this.AUTO1();
            break;
        case FIGHT_SKILL:
            this.F_SKILL();
            break;
        case PLAY_FIGHT:
            this.P_FIGHT();
            break;
        case GAME_MENU:
            this.MENU();
            break;
        case GAME_START:
            switch (key) {
            case LEFT_KEY:
                gameState = PLAY_MENU;
                break;
            case FIRE:
                enter = true;
                break;
            }
            break;
        case PLAY_MENU:
            switch (key) {
            case RIGHT_KEY:
                gameState = GAME_START;
                break;
            case KEY_NUM8:
            case DOWN:
                menuPoint++;
                if (menuPoint == 4) {
                    menuPoint = 3;
                }
                break;
            case KEY_NUM2:
            case UP:
                menuPoint--;
                if (menuPoint == -1) {
                    menuPoint = 0;
                }
                break;
            case FIRE:
                switch (menuPoint) {
                case 0:
                    gameState = PLAY_STATE;
                    break; //角色状态
                case 1:
                    gameState = PLAY_EQUAL;
                    break; //武器装备
                case 2:
                    gameState = PLAY_BAG;
                    break; //使用道具
                case 3:

                    dr.saveFile();

                    gameState = GAME_START;
                    break; //保存游戏
                }
                break;
            }
            break;

        }

    }


    protected void paint(Graphics g) {
//System.out.println("heroX==========="+hero.x);
// System.out.println("heroY=========="+hero.y);

        Graphics tg = g;
        g = gg;
        //PAINT**********************************************************************
        if (gameState == PLAY_FIGHT) { //戰斗場景
            String hp, mp, maxHP, maxMP;
            map.paintMap(g);
            hp = "" + hero.hp + "/" + hero.maxHP;
            mp = "" + hero.mp + "/" + hero.maxMP;
            g.drawImage(img_emenyBattle, emeny_battleX, emeny_battleY,
                        g.TOP | g.LEFT);

            tools.drawPartImage(g, image.hero1_fight, hero_battleX,
                                hero_battleY, hero_battlePoint * 40, 0, 40, 40);
            g.drawImage(image.rect, 0, 135, 20);
            tools.drawPartImage(g, image.hero1_fight, 5, 145, 0, 0, 40, 40);
            g.drawImage(image.fight_menu, 140, 140, 20);

            switch (battleMenuPoint) { //战斗菜单效果
            case 0:
                tools.drawPartImage(g, image.fight_menu1, 140, 140, 0, 0, 26,
                                    15);
                break;
            case 1:
                tools.drawPartImage(g, image.fight_menu1, 140, 155, 0, 15, 26,
                                    15);
                break;
            case 2:
                tools.drawPartImage(g, image.fight_menu1, 140, 170, 0, 30, 26,
                                    15);
                break;
            case 3:
                tools.drawPartImage(g, image.fight_menu1, 140, 185, 0, 45, 26,
                                    15);
                break;

            }
            if (heroFightState) { //英雄技能动画
                switch (skillPoint) {
                case 0:
                    hero.attack = 150;
                    tools.drawPartImage(g, image.effect45, 20, 60,
                                        effectPoint * 38, 0, 38, 45);
                    break;
                case 1:
                    hero.attack = 300;
                    tools.drawPartImage(g, image.effect46, 20, 60,
                                        effectPoint * 49, 0, 49, 28);
                    break;
                case 2:
                    hero.attack = 500;
                    tools.drawPartImage(g, image.effect47, 20, 60,
                                        effectPoint * 50, 0, 50, 40);
                    break;
                case 3:
                    hero.attack = 1000;
                    tools.drawPartImage(g, image.effect48, 20, 60,
                                        effectPoint * 27, 0, 27, 50);
                    break;
                }
            }
            if (emenyFightState) {

                if (img_Eeffect == image.effect45) {
                    tools.drawPartImage(g, img_Eeffect, 100, 60,
                                        effectPoint * 38, 0, 38, 45);

                }
            }

            if (sufferNumState) {
                tools.drawNumber(g, image.heroHP, heroHpVeriable, HeroVariableX,
                                 HpVariableY, 10, 10);
                tools.drawNumber(g, image.emenyHP, emenyHpVeriable,
                                 EmenyVariableX, HpVariableY, 10, 10);
            }
            g.drawImage(image.fight_hpmp, 5, 180, 20);

            g.drawString(hp, 13, 175, 20);
            g.drawString(mp, 13, 185, 20);
        }
        if (gameState == FIGHT_SKILL) {

            tools.drawPartImage(g, image.rect, 20, 20, 20, 10, 136, 48); //技能选项背景框
            tools.drawPartImage(g, image.rect, 20, 68, 20, 10, 136, 48); //技能选项背景框
            tools.drawPartImage(g, image.sign, 60, 30, 17 * 12, 0, 12, 12); //技能前面的装饰物
            tools.drawPartImage(g, image.sign, 60, 50, 17 * 12, 0, 12, 12); //技能前面的装饰物
            tools.drawPartImage(g, image.sign, 60, 70, 17 * 12, 0, 12, 12); //技能前面的装饰物
            tools.drawPartImage(g, image.sign, 60, 90, 17 * 12, 0, 12, 12); //技能前面的装饰物
            g.drawString("半月斩", 75, 27, 20);
            g.drawString("赤炎斩", 75, 47, 20);
            g.drawString("剑囵舞", 75, 67, 20);
            g.drawString("青龙升", 75, 87, 20);
            switch (skillPoint) {
            case 0:
                g.drawImage(image.point, 40, 30, 20);
                break;
            case 1:
                g.drawImage(image.point, 40, 50, 20);
                break;
            case 2:
                g.drawImage(image.point, 40, 70, 20);
                break;
            case 3:
                g.drawImage(image.point, 40, 90, 20);
                break;
            }

        }

        if (gameState == GAME_LOGO) {
            g.drawImage(image.logo1, 40, 40, g.LEFT | g.TOP);
        } //LOGO自動播放
        if (gameState == GAME_AUTORUN) {
            g.setColor(0x0);
            g.fillRect(0, 0, this.screenWidth, this.screenHeight);
            g.setColor(0xffffff);
            g.drawString("东汉末年,汉室衰微,群雄逐", logo1X, logo1Y, g.LEFT | g.TOP);
            g.drawString("鹿中原,四世三公出身的袁绍", logo1X, logo1Y + 10, g.LEFT | g.TOP);
            g.drawString("为扩大地图,与北平太守公孙", logo1X, logo1Y + 20, g.LEFT | g.TOP);
            g.drawString("瓒展开一场厮杀,公孙瓒手下", logo1X, logo1Y + 30, g.LEFT | g.TOP);
            g.drawString("大将常山赵云与河北名奖战在", logo1X, logo1Y + 40, g.LEFT | g.TOP);
            g.drawString("一处。。。。。。。。。。。", logo1X, logo1Y + 50, g.LEFT | g.TOP);
        } //LOGO1开头背景介绍
        if (gameState == GAME_AUTORUN1) { //片头对话场景

            map.paintMap(g);
            map.paintMapShelter(g);
            boss1.paint(g);
            hero.paintHero(g);
            boss1.npc_talk(g, this);
        }
        if (gameState == GAME_MENU) {

        } //進入游戲主目錄
        switch (gameState) {
        case PLAY_STATE:

            break;
        case GAME_MENU:
            paint_menu(g);
            break;
        case GAME_START:
            map.paintMap(g);
            hero.paintHero(g);
            if (map.Data_Map_Shelter != null) {
                map.paintMapShelter(g);
            }
            break; //游戲狀態:開始游戲
        case GAME_CONTINUE:
            break; //讀取存檔
        case GAME_SET:
            break; //設置音量
        case GAME_HELP:
            if (!helpPoint) {
                g.drawImage(image.Help, 0, 0, 20);
            } else {
                g.drawImage(image.Help2, 0, 0, 20);
            }
            break; //幫助
        case GAME_STOP:
            break;
        case PLAY_MENU:
            tools.drawPartImage(g, image.rect, 40, 50, 5, 5, 88, 50);
            tools.drawPartImage(g, image.rect, 40, 100, 5, 5, 88, 50);
            g.drawString("角色属性", 60, 55, 20);
            g.drawString("武器装备", 60, 75, 20);
            g.drawString("使用道具", 60, 95, 20);
            g.drawString("保存游戏", 60, 115, 20);
            switch (menuPoint) {
            case 0:
                g.drawImage(image.point, 40, 55, 20);
                break;
            case 1:
                g.drawImage(image.point, 40, 75, 20);
                break;
            case 2:
                g.drawImage(image.point, 40, 95, 20);
                break;
            case 3:
                g.drawImage(image.point, 40, 115, 20);
                break;

            }
            break; //退出游戲

        }

        //PAINT END******************************************************************
        g = tg;
        g.drawImage(this.imgBuffer, 0, 0, 20);
    }

    /**
     * 画菜单
     * @param g Graphics
     */
    public void paint_menu(Graphics g) {

        g.drawImage(image.logoback, 0, 0, g.LEFT | g.TOP);
        g.setColor(0xffffff);
        switch (mainMenuPoint) {
        case 0:
            g.drawString("開始游戲", 70, 180, g.LEFT | g.TOP);
            break;
        case 1:
            g.drawString("继续游戏", 70, 180, g.LEFT | g.TOP);
            break;
        case 2:
            g.drawString("游戏关于 ", 70, 180, g.LEFT | g.TOP);
            break;
        case 3:
            g.drawString("游戏设置 ", 70, 180, g.LEFT | g.TOP);
            break;
        case 4:
            g.drawString("退出游戏 ", 70, 180, g.LEFT | g.TOP);
            break;
        }

    }

    protected void keyReleased(int keyCode) {
        key = 0;
        this.countKey = 0;
        enter = false;

    }


    public void run() {

        while (running) {
            long start = System.currentTimeMillis();
            try {
                this.game_logic();
                this.repaint();
                this.serviceRepaints();
            } catch (Exception e) {
                e.printStackTrace();
            }
            ;
            long end = System.currentTimeMillis();
            if ((70 - (end - start)) > 0) {
                try {
                    thread.sleep(70 - (end - start));
                } catch (InterruptedException ex) {
                }
            }
        }
    }
}


⌨️ 快捷键说明

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