首页 > 其他分享 >类与对象练习_自动回合制对战

类与对象练习_自动回合制对战

时间:2024-09-27 10:22:44浏览次数:6  
标签:二郎神 int hp 练习 齐天大圣 对战 回合制 伤害 public

Hero

public class Hero {
    private final String heroName; // 英雄名称
    private int hp; // 血条、生命值
    private final int maxDamage; // 表示角色能够造成的最大伤害值

    public Hero(String heroName, int hp, int maxDamage) {
        this.heroName = heroName;
        this.hp = hp;
        this.maxDamage = maxDamage;
    }

    public String getHeroName() {
        return heroName;
    }

    public int getHp() {
        return hp;
    }

    public void attack(Hero otherHero) {
        int damage = (int)(Math.random() * maxDamage); // 生成伤害值,随机造成0~maxDamage的伤害
        // 对应英雄承受该伤害
        otherHero.takeDamage(damage);
        System.out.printf("%s 对 %s 造成了 %d 点伤害", this.heroName, otherHero.heroName, damage);
        System.out.printf("(%s 还剩 %d 生命值)\n", otherHero.heroName, otherHero.hp);

    }

    public void takeDamage(int damage) {
        this.hp -= damage;
        if (this.hp < 0) {
            this.hp = 0;
        }
    }

    public boolean isAlive() {
        return this.hp > 0;
    }
}

HeroTest

public class HeroTest {
    public static void main(String[] args) {
        Hero hero1 = new Hero("齐天大圣", 100, 55);
        Hero hero2 = new Hero("二郎神", 180, 45);

        int round = 1;
        while (hero1.isAlive() && hero2.isAlive()) {
            System.out.printf("********* 回合 %d *********\n", round++);
            hero1.attack(hero2);
            hero2.attack(hero1);
        }

        if (hero1.isAlive()) {
            System.out.printf("%s 胜出\n", hero1.getHeroName());
        } else if (hero2.isAlive()) {
            System.out.printf("%s 胜出\n", hero2.getHeroName());
        } else {
            System.out.printf("%s 与 %s 同归于尽\n", hero1.getHeroName(), hero2.getHeroName());
        }
    }
}

输出示例

********* 回合 1 *********
齐天大圣 对 二郎神 造成了 47 点伤害(二郎神 还剩 133 生命值)
二郎神 对 齐天大圣 造成了 24 点伤害(齐天大圣 还剩 76 生命值)
********* 回合 2 *********
齐天大圣 对 二郎神 造成了 40 点伤害(二郎神 还剩 93 生命值)
二郎神 对 齐天大圣 造成了 25 点伤害(齐天大圣 还剩 51 生命值)
********* 回合 3 *********
齐天大圣 对 二郎神 造成了 45 点伤害(二郎神 还剩 48 生命值)
二郎神 对 齐天大圣 造成了 10 点伤害(齐天大圣 还剩 41 生命值)
********* 回合 4 *********
齐天大圣 对 二郎神 造成了 22 点伤害(二郎神 还剩 26 生命值)
二郎神 对 齐天大圣 造成了 30 点伤害(齐天大圣 还剩 11 生命值)
********* 回合 5 *********
齐天大圣 对 二郎神 造成了 50 点伤害(二郎神 还剩 0 生命值)
二郎神 对 齐天大圣 造成了 41 点伤害(齐天大圣 还剩 0 生命值)
齐天大圣 与 二郎神 同归于尽

标签:二郎神,int,hp,练习,齐天大圣,对战,回合制,伤害,public
From: https://www.cnblogs.com/xkxf/p/18434833

相关文章

  • 9.27 代码练习,以及教你写自己的qsort函数
    学生成绩系统代码include<stdio.h>typedefstructStudent{intnum;charname[50];intgrade[10];}stu;intcmp(intcount[],int*n){intmax=0;for(inti=0;i<*n;i++){if(count[i]>max){max=count[i];}}returnmax;}intmain(){int......
  • 01 重点 导入模块练习题
    练习1:client飘红可以导入原因:因为当前运行的run.py文件,此时当前目录下面的所有文件都会自动增加到sys.path里面,此时bin目录下面的所有模块都可以导入重点。练习2:#在排除pycharm操作下,此场景下在终端运行run.py文件中,不能导入x方法。原因:s21test路径没有导入到sys.path......
  • HTML和CSS中的浮动以及边框塌陷解决方案(内置练习及答案)
    一、浮动概述在HTML和CSS中,“浮动”(Float)是一种布局技术,它允许元素脱离其正常的文档流,向左或向右移动,直到它的外边缘碰到包含框或另一个浮动元素的边缘。浮动元素仍然保持块级盒模型的特性(如可以设置宽度和高度),但是它们不再占据文档流中的空间,这意呀着文档中的其他元素会......
  • java练习生第二练
    不可变集合不可变集合(ImmutableCollections)在编程中指的是一旦创建,其内容(如元素、大小等)就不能被修改的集合类型。这类集合对于线程安全非常有用,因为它们自然避免了多线程环境下因并发修改而产生的竞争条件和错误。同时,它们也有助于设计不可变对象,这对于确保数据一致性和简......
  • 2023.9.25 近期练习
    CF1261FXor-Set我们把\(A,B\)集合分别处理,把其拥有的区间放到字典树上,就会拆成\(O(n\logV)\)个区间。考虑其两两组合,每个区间都是形如前面若干位确定,后面\(x\)位任意。两个区间组合,就是取\(x\)更大的那个后面都是任意的,前面的若干位合并起来即可。但是这样就会有\(......
  • 20240924_102514 c语言 循环练习题
    ......
  • 22 lambda 练习
    **```py练习题1USER_LIST=[]deffunc0(x):v=USER_LIST.append(x)#列表.append没有返回值v=None,insert/extend也没有返回值returnv#将None进行返回result=func0('alex')print(result)练习题2deffunc0(x):v=x.strip()#将去除空格的字符串.生成新的值......
  • 05 函数练习
    5、函数练习题#1.请写一个函数,函数计算列表info=[11,22,33,44,55]中所有元素的和。defget_sum():info=[11,22,33,44,55]data=0foritemininfo:data+=itemprint(data)get_sum()#2.请写一个函数,函数计算列表中所有元素的和。......
  • 07 函数练习二
    8、练习题2P94#1.写函数,计算一个列表中有多少个数字,打印:列表中有%s个数字。#提示:type('x')==int判断是否是数字。"""#方式一:defget_list_counter1(data_list):count=0foritemindata_list:iftype(item)==int:count+=......
  • 05 练习操作
    练习#!/usr/bin/envpython#-*-coding:utf-8-*-#########################读取:r,只读不能写+文件不存在报错##########################"""#打开文件file_object=open('log.txt',mode='r',encoding='utf-8')#r,read;w,write;......