lol英雄:英雄姓名,血量,有攻击力,防御力(可以随机某个范围的数值) 有攻击行为:自己攻击力伤害到对方身上 被动防御行为:受到攻击时,以防御力来抵消伤害 测试进行10回合的攻击

import java.util.Random;

/**
lol英雄:英雄姓名,血量,有攻击力,防御力(可以随机某个范围的数值)
有攻击行为:自己攻击力伤害到对方身上
被动防御行为:受到攻击时,以防御力来抵消伤害
测试进行10回合的攻击
 *
 */
public class Hero {
	private String name;// 英雄名称
	private int hp;// 血量
	private int ad;// 攻击力
	private int df;// 防御力

	public Hero() {// 无参的构造函数
	}

	public Hero(String name, int hp, int ad, int df) {// 有参的构造函数
		this.name = name;
		this.hp = hp;
		this.ad = ad;
		this.df = df;
	}

	public String getName() {// 获取英雄名称
		return name;
	}

	// 自己 打 对方
	public void attack(Hero other) {
		Random random = new Random();
		// 假设传一个1000点的ad,真实攻击力=ad*随机范围的一个数(最低是200,最高1000)
		// 真实攻击力
		int realAd = random.nextInt((int) (ad * 0.8)) + (int) (ad * 0.2);
		System.out.println(this.name + "发起了" + realAd + "攻击力");
		// 对方会调用防御
		other.defense(realAd);
	}
	//对方打自己,自己防御
	public void defense(int ad) {
		Random random = new Random();
		// 假设传一个1000点的df,真实防御力=df*随机范围的一个数(最低是200,最高1000)
		// 真实防御力
		int realDf = random.nextInt((int) (df * 0.8)) + (int) (df * 0.2);
		// 对方有效的攻击力=对方的真实攻击力-自己的真实防御力
		int validAd = ad - realDf;
		if (validAd < 0) {
			validAd = 0;
		}
		this.hp = this.hp - validAd;
		if (hp < 0) {
			hp = 0;
		}
		System.out.println(this.name + "受到了" + validAd + "有效伤害," 
							+ "真实防御" + realDf + ",还剩" + this.hp + "血量");
	}

	// 判断是否存放,血量>0表示还活着
	public boolean isAlive() {
		return this.hp > 0;
	}
}

public class LOLTest {
	public static void main(String[] args) {
		Hero js = new Hero("剑圣", 3000, 700, 200);
		Hero gl = new Hero("盖伦", 3000,600, 300);

		while (js.isAlive() && gl.isAlive()) {
			js.attack(gl);

			if (gl.isAlive()) {
				gl.attack(js);
				if (!js.isAlive()) {
					System.out.println("剑圣已死");
				}

			} else {
				System.out.println("盖伦已死");
			}

		}
	}
}

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值