Java编写一个小游戏

一、首先创建一个玩家类,里边有相对应的属性值

闪避率和暴击率同理但是没有写

/**
 * 玩家类
 * 属性 名字 类型 生命值 防御值 攻击力
 * 方法 自我介绍 pk 斗殴
 */
public class Player {
    //分装:把属性设为private,提供公共的get和set方法,提高安全性
    private String name; //姓名
    private String type; //类型 战士 法师
    private int hp; //生命值
    private int defense; //防御值
    private int attack; //攻击力
    private int baoji;  //暴击率
    private double miss; //闪避率
    private String[] zhuanbei;



    // 一般定义了有参的构造器,一定也要定义一个无参的
    //有参

    public Player(String name, String type, int hp, int defense, int attack, int baoji, double miss, String[] zhuanbei) {
        this.name = name;
        this.type = type;
        this.hp = hp;
        this.defense = defense;
        this.attack = attack;
        this.baoji = baoji;
        this.miss = miss;
        this.zhuanbei = zhuanbei;
    }

    //无参
    public Player() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public int getHp() {
        return hp;
    }

    public void setHp(int hp) {
        this.hp = hp;
    }

    public int getDefense() {
        return defense;
    }

    public void setDefense(int defense) {
        this.defense = defense;
    }

    public int getAttack() {
        return attack;
    }

    public void setAttack(int attack) {
        this.attack = attack;
    }

    public double getBaoji() {
        return baoji;
    }

    public void setBaoji(int baoji) {
        this.baoji = baoji;
    }

    public double getMiss() {
        return miss;
    }

    public void setMiss(double miss) {
        this.miss = miss;
    }

    public String[] getZhuanbei() {
        return zhuanbei;
    }

    public void setZhuanbei(String[] zhuanbei) {
        this.zhuanbei = zhuanbei;
    }

二、定义方法

1、定义介绍方法,该方法输出对应玩家的属性值

    /**
     *  描述自己的属性
     */
    public void introduce(){
        System.out.println("我叫" + name + ",是一个" + type);
        System.out.println(",生命值高达" + hp + ",防御值" + defense + ",攻击力" + attack);
    }

2、创建Rate类,并创建计算暴击率和掉落率的方法

        1、创建rateCheck方法,判断是否触发暴击和掉落

    public boolean rateCheck(int rate){
        float ran = random.nextFloat() * 101; //[0,101)
        if (ran < rate)     //当随机的数小于既定的rate则判定触发
            return true; 
        else
            return false;
    }

        2、创建暴击伤害计算方法

        

    public int baojishanghai(int baojilv, int attack){
        int bjtest = 0; //暴击伤害
        boolean isBaojilv = rateCheck(baojilv); //判断是否触发暴击
        if (isBaojilv){
            System.out.println("触发暴击");
            bjtest = attack * 2; //当触发暴击时,伤害为2倍的基伤并无视防御
        }
        return bjtest; //返回暴击伤害
    }

 

        3、创建随机掉落物品计算方法

        

    /**
     *  掉落并不是百分百掉落
     */
    public void fall(int fallRate, int len, String arr[]){
        int i = 0;
        Boolean fall = rateCheck(fallRate); //每个玩家都有自己的掉落率,判断是否触发掉落
        if (fall){
            i = (int)random.nextFloat() * len; //如果掉落,则在装备数组里随机掉落一个
            System.out.println("掉落" + arr[i]);
        }
    }

3、定义PK方法

 /**
     *  pk
     *  我方开始的战斗
     * @param p 敌对玩家
     */
    public void pk(Player p){
        int flag = 0; //标识
        Rate bj = new Rate(); //new一个计算暴击掉落的类的对象
        while(true){
            //显示当前战斗人员的信息
            this.introduce();
            p.introduce();
            int bjsh = 0; //暴击伤害
            // 定义一个标记 0 我方攻击 1 敌方攻击
            if (flag == 0){
                //战斗 我方攻击力减去敌方防御力
                int harm = this.attack - p.defense;
                bjsh = bj.baojishanghai(this.baoji,this.attack); //判断是否暴击,如果发生暴击则计算暴击伤害
                if (bjsh > 0) //上一步如果发生暴击,则暴击伤害>0
                    harm = bjsh; //造成的伤害为暴击伤害
                System.out.println(p.name + "掉血" + harm);
                p.hp -= harm; //让敌方生命值-伤害值
                flag = 1; //改变标记
            }else {
                //战斗 敌方攻击力减去我方防御力
                int harm = p.attack - this.defense;
                bjsh = bj.baojishanghai(p.baoji,p.attack);
                if (bjsh > 0)
                    harm = bjsh;
                System.out.println(this.name + "掉血" + harm);
                this.hp -= harm; //让敌方生命值-伤害值
                flag = 0; //改变标记
            }

            /**
             * 死亡机制 当一个人血量为零,则pk结束
             */
                if (p.hp <= 0){
                    System.out.println("我方击败" + p.name);
                    bj.fall(50,p.zhuanbei.length,p.zhuanbei);
                    break;
                }
                if (this.hp <= 0){
                    System.out.println(p.name + "击败" + this.name);
                    bj.fall(50,this.zhuanbei.length,this.zhuanbei);
                    break;

                }

  • 8
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值