java打怪物小游戏代码怎么写?实例讲解

Java 不但可以用来开发网站后台、PC 客户端和 Android APP,还在数据分析、网络爬虫、云计算领域大显身手,所以java应用的领域还是很多的,那java打怪物小游戏代码怎么写?下面来我们就来给大家讲解一下。

怪物分为四个类型:

超级丧尸/变异丧尸/普通丧尸/吸血鬼.

不同类别的怪物具有不同的攻击力,防御力,躲避以及特殊属性等等.

人类杀死僵尸后会获得经验升级,升级会回复血量,提高攻击力.

下面是代码:

game.java

public class game
{
    public static void main(String[] args)
    {
        new GameStart()
            .start();
    }
}
GameStart.java
package one;
public class GameStart
{
    Hunter hunter;
    Monster m1, m2, m3, m4, m5;
    public GameStart()
    {
        hunter = new Hunter("小何佩", "大冰棒");
        m1 = new Monster(3);
        m2 = new Monster(3);
        m3 = new Monster(3);
        m4 = new Monster(2);
        m5 = new Monster(4);
    }
    public void start()
    {
        while (hunter.isLive && (m1.isLive || m2.isLive || m3.isLive || m4.isLive || m5.isLive))
        {
            System.out.println("------------------对手寻找中---------------------");
            /**让程序休息3秒钟**/
            try
            {
                Thread.sleep(3000);
            }
            catch (Exception e)
            {}
            int ran = GameUtil.randomaRange(1, 6); // 产生随机数,随机寻找僵尸进行战斗
            switch (ran)
            {
            case 1:
                hunter.fight(m1);
                break;
            case 2:
                hunter.fight(m2);
                break;
            case 3:
                hunter.fight(m3);
                break;
            case 4:
                hunter.fight(m4);
                break;
            case 5:
                hunter.fight(m5);
                break;
            default:
                System.out.println("拜托啊!你要找个正常一点的战斗");
                break; //rand到不存在的僵尸;
            }
        }
        end();
    }
    public void end()
    {
        if (hunter.isLive == true)
        {
            System.out.println("来自李俊标的祝贺,恭喜你!过关啦");
        }
        else
        {
            System.out.println("哈哈哈哈哈哈,被僵尸打死了吧");
        }
    }
}

GameUtil.java

package one;
public class GameUtil
{
    public static int randomaRange(int start, int end)
    {
        return (int)(Math.random() * (end - start) + start);
    }
    public static boolean hidden(int agile, int hideRate)
    {
        int sucRate = agile * hideRate / 100;
        int ran = GameUtil.randomaRange(1, 101);
        if (ran < sucrate)
        {
            < p = "" >
                return true;
        }
        return false;
    }
    static int lostBasicLife = 10;
    public static int calLostLife(int attack, int defend)
    {
        int lostLife = attack - defend;
        int rel = 0;
        if (lostLife <= 0)
        {
            rel = lostBasicLife;
        }
        else
        {
            rel = (lostLife + lostBasicLife);
        }
        return rel;
    }
}

Hunter.java

package one;
public class Hunter
{ //爱丽丝
    String name;
    int maxLife;
    int curLife;
    boolean isLive;
    String weapon;
    int attack; //攻击力
    int defend; //防御力
    int level;
    int exp;
    int agile;
    int hideRate;
    public Hunter(String name, String weapon)
    {
        this.name = name;
        this.weapon = weapon;
        maxLife = 100;
        curLife = maxLife;
        isLive = true;
        attack = 25;
        defend = 8;
        level = 1;
        exp = 0;
        agile = 35;
        hideRate = 60;
    }
    public void fight(Monster monster)
    { //战斗
        if (monster.isLive)
        {
            if (isLive)
            {
                System.out.println("--------->" + name + "无情的拿起" + weapon + "杀向" + monster.type + "<----------------");
                monster.injured(this);
            }
            else
            {
                System.out.println("--------->" + "我们的主角" + name + "已经牺牲了" + "<----------------");
            }
        }
        else
        {
            System.out.println("拜托啊!这个丧尸已经被你打死啦!");
        }
    }
    public void injured(Monster monster)
    { //掉血
        //增加躲避的判断
        if (monster.type == "吸血鬼")
        {
            if (GameUtil.hidden(this.agile, this.hideRate))
            {
                System.out.println("--------" + name + ":小样,打不到我");
                show();
                fight(monster);
                return;
            }
            System.out.println("--------->" + name + ":疼死了,打死你个龟孙" + "<---------");
            int lostLife = GameUtil.calLostLife(monster.attack, this.defend);
            curLife -= lostLife;
            if (curLife < 0)
            {
                curLife = 0;
                died();
                return;
            }
            monster.curLife += this.curLife / 10;
            show();
            fight(monster);
        }
        else
        {
            if (GameUtil.hidden(this.agile, this.hideRate))
            {
                System.out.println("--------" + name + ":小样,打不到我");
                show();
                fight(monster);
                return;
            }
            System.out.println("--------->" + name + ":疼死了,打死你个龟孙" + "<---------");
            int lostLife = GameUtil.calLostLife(monster.attack, this.defend);
            curLife -= lostLife;
            if (curLife < 0)
            {
                curLife = 0;
                died();
                return;
            }
            show();
            fight(monster);
        }
    }
    public void expAdd(Monster monster)
    {
        this.exp += monster.maxLife;
        int needExp = 0;
        for (int i = 1; i <= level; i++)
        {
            needExp += i * 50;
        }
        if (exp >= needExp)
        {
            upgrade();
        }
    }
    public void upgrade()
    {
        attack += 4;
        defend += 3;
        maxLife += 20;
        curLife += maxLife;
        level++;
        System.out.println("--------------------------分割线-------------------------");
        System.out.println("系统提示:升级啦,目前等级" + level + "血量" + curLife + "攻击力" + attack + "防御力" + defend);
    }
    public void died()
    {
        System.out.println("**********" + name + "被丧尸咬死了" + "**********");
        isLive = false;
        show();
    }
    public void show()
    {
        System.out.println("---------->" + name + " " + "生命值:" + curLife + " " +
            "生命状态" + isLive + " " + "等级" + level + " " +
            "<-------------");
    }
}

Monster.java

package one;
public class Monster
{
    int curLife;
    int maxLife;
    String type;
    boolean isLive = true;
    int attack; //攻击力
    int defend; //防御力
    int agile; //敏捷
    int hideRate; //躲避率
    public Monster(int mt)
    {
        switch (mt)
        {
        case 1:
            type = "超级丧尸";
            maxLife = 80;
            curLife = 80;
            attack = 25;
            defend = 15;
            agile = 30;
            hideRate = 80;
            break;
        case 2:
            type = "变异丧尸";
            maxLife = 80;
            curLife = 60;
            attack = 28;
            defend = 10;
            agile = 40;
            hideRate = 70;
            break;
        case 3:
            type = "普通丧尸";
            maxLife = 80;
            curLife = 40;
            attack = 10;
            defend = 5;
            agile = 30;
            hideRate = 60;
            break;
        case 4:
            type = "吸血鬼";
            maxLife = 80;
            curLife = 60;
            attack = 20;
            defend = 8;
            agile = 30;
            hideRate = 60;
        }
    }
    public void injured(Hunter hunter)
    { //掉血
        //增加躲避的判断
        if (GameUtil.hidden(this.agile, this.hideRate))
        {
            System.out.println("*********" + type + ":lueluelue,砍不到我");
            show();
            kill(hunter);
            return;
        }
        System.out.println("**********" + type + "又被砍了一刀" + "***********");
        int lostLife = GameUtil.calLostLife(hunter.attack, this.defend);
        curLife -= lostLife;
        if (curLife < 0)
        {
            curLife = 0;
            died(hunter);
            return;
        }
        show();
        kill(hunter);
    }
    public void died(Hunter hunter)
    {
        this.isLive = false;
        System.out.println("**********" + type + "被砍的四分五裂了" + "**********" + isLive);
        hunter.expAdd(this); //this
    }
    public void kill(Hunter hunter)
    {
        if (isLive)
        {
            System.out.println("**********>" + type + "冲上去咬了" + hunter.name + "一大口" + "***********");
            hunter.injured(this);
        }
        else
        {
            System.out.println("**********" + type + "已经被砍的四分五裂了" + "**********");
        }
    }
    public void show()
    {
        System.out.println("**********" + type + " " + "生命值" + curLife + " " + "生命状态" + isLive + "***************");
    }
}

这些就是java打怪物小游戏代码,整体来说还是比较复杂的,毕竟每一个功能开发者都要考虑全面,这样才能写出一个完成的游戏代码。最后大家如果想要了解更多java实例知识,敬请关注奇Q工具网。

推荐阅读:

mysql基础面试题有哪些?mysql基础面试题及答案

比较好的java开发课程有哪些?如何学好java课程?

java编译后自动导入什么文件?Java文件不能编译怎么办?