生成两个class文件,在同一个包中调用
第一个:
package com.neuedu.demo2;
import java.util.Random;
/**
* 玩家类
* @author Administrator
*
*/
public class Player {
public String pname; //名字
public double health; //当前生命值
public double yaoshui;//药水增加的血
public int maxHealth; //生命值上限
public int minAttack; //攻击力下限
public int maxAttack; //攻击力上限
public double baoji; //暴击几率 默认2倍伤害
//判断当前对象是否存活
public boolean isAlive(){
return health > 0;
}
/**
* 攻击另一个Player对象
* @param other
*/
public void attack(Player other){
//判断双方是否都存活
if(!(isAlive() && other.isAlive())){
//其中有一个人挂掉
return;
}
//计算本次的攻击力
int a = getRandomAttack();
//判断暴击
double x = Math.random();
if(x < baoji){
a *= 2;
System.out.print("[暴击!!]");
}
//减去对方的生命值
other.health -= a;
//调用动画显示效果
System.out.println(pname+"对"+other.pname+"造成了"+a+"点伤害,"+other.pname+"剩余生命值:"+other.health);
//判断被打者是否挂了
if(other.health <= 0){
System.out.println(other.pname+"挂了");
}
//如果没死的话增加血量
}
//使用药水
public void drug()
{
yaoshui = Math.round(maxHealth *0.15);
health =health+yaoshui;
System.out.print("["+pname+"使用血药,增加了" +yaoshui+"血量!]");
}
/**
* 获得[minAttack,maxAttack]区间的随机整数
* @return
*/
private int getRandomAttack(){
Random r = new Random();
int x = r.nextInt(maxAttack - minAttack + 1) + minAttack;
return x;
}
}
第二个:
package com.neuedu.demo2;
public class Test {
/**
* 练习:
* 追加一个药水类(Drug)
* 名字: 字符串
* 属性: 回复量 整数
*
* 为Player追加一个喝药水的方法 useDrug(Drug d)
* 为使用者恢复当前生命值,回复量为对象d声明数量
*
* 在main方法的循环中,进行判断,当赵四的生命值低于30的时候,使用药水进行回复
*
* 注意:回复量不能超过生命值上限
*
*
*
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
Player p1 = new Player();
p1.pname = "赵四";
p1.health = 500;
p1.maxHealth = 500;
p1.minAttack = 25;
p1.maxAttack = 60;
p1.baoji = 0.1;
Player p2 = new Player();
p2.pname = "刘能";
p2.health = 500;
p2.maxHealth = 500;
p2.minAttack = 25;
p2.maxAttack = 60;
p2.baoji = 0.1;
while(p1.isAlive() && p2.isAlive()){
p1.attack(p2);
if(p2.health>0)
{
if(p2.health<100)
{
p2.drug();
}
}
else{
break;
}
p2.attack(p1);
if(p1.health>0)