简易[Java]个人项目_文字版格斗游戏

个人写作项目:文字版格斗游戏

(1) 定义角色(Role)类,成员变量中定义姓名(name),血量(blood或hp(horsepower)),属性私有,生成空参、有参构造方法,生成set/get方法;
(2) 定义测试类,在main方法中创建该类的对象并给属性赋值(set方法);
(3) 调用成员方法,打印如下:
郭靖打了欧阳克一拳,造成失血XX点,欧阳克还剩XX点血。
欧阳克打了郭靖一拳,造成失血XX点,郭靖还剩XX点血。
郭靖(欧阳克)K.O.了欧阳克(郭靖)。

【提示】编写攻击(attack)的成员方法,方法中对成员变量进行使用,如r1.attack(r2);

测试类:

public static void main(String[] a) {

        String name;
        int HP;
        Role r1 = new Role();
        Role r2 = new Role();
        Scanner input = new Scanner(System.in);
        System.out.print("请输入一号玩家姓名:");
        name = input.next();
        r1.setName(name);
        System.out.print("请输入一号玩家姓名血量:");
        HP = input.nextInt();
        r1.setHP(HP);
        System.out.print("请输入二号玩家姓名:");
        name = input.next();
        r2.setName(name);
        System.out.print("请输入二号玩家姓名血量:");
        HP = input.nextInt();
        r2.setHP(HP);
        r1.attack(r2);
    }

参与类:


/**
 * @program: Day01
 * @ClassName Role
 * @description(类信息): 定义角色
 * @author: honor
 * @create: 2024-04-11 16:24
 * @Version 1.0
 **/
public class Role {
    private String name;
    private int HP;
    private int hurt;

    public Role() {

    }

    public Role(String name, int HP) {
        this.name = name;
        this.HP = HP;
    }

    public String getName() {
        return name;
    }

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

    public int getHP() {
        return HP;
    }

    public void setHP(int HP) {
        this.HP = HP;
    }

    /**
     * @return void
     * @ClassName Role
     * @anthor 上善若水
     * @description (方法信息):生成一个1-100的随机数
     * @Date 2024/4/11 20:24
     * @Param []
     */
    public void RandomInt() {
        this.hurt = (int) (Math.random() * 100 + 1);

    }

    /**
     * @return void
     * @ClassName Role
     * @anthor 上善若水
     * @description (方法信息):用来计算战斗血条
     * @Date 2024/4/11 20:21
     * @Param [role]
     */
    public void attack(Role role) {
        int Hp = 0;
        Hp = role.getHP();
        while (true) {
            RandomInt();
            if (Hp > 0 && this.HP > 0) {
                Hp = Hp - hurt;
                System.out.println(getName() + "打了" + role.getName() + "一拳,造成失血" + hurt + "点," + role.getName() + "还剩" + Hp + "点血。");
                if (Hp > 0) {
                    RandomInt();
                    this.HP = this.HP - hurt;
                    System.out.println(role.getName() + "打了" + getName() + "一拳,造成失血" + hurt + "点," + getName() + "还剩" + this.HP + "点血。");
                }
            } else if (Hp < 1) {
                System.out.print(getName() + "K.O.了" + role.getName());
                break;
            } else {
                System.out.print(role.getName() + "K.O.了" + getName());
                break;
            }
        }
    }
}

思路:

使用Role类进行运算,分别输入俩个值进入俩个Role类,在Main中调用其中一个Role中的attack方法进行计算,输出结果

问题:

调用过程中指向不明,if else叠加较长

总结:

总体思路较为直接,完成预期目标功能。
但是因为多用相同名字变量,代码可读性差,细小功能集中,没有将代码块分开,显得极为臃肿,对于功能并没有做0血显示,输出伤害会显示负血,不够美观。调用类较为生疏,需要加强熟练。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值