java_凹凸曼打怪兽

游戏说明:

回合制游戏

  •  输出:

  ======== 第X回合 ========
   XXX凹凸曼 血量XXX  
            30%            60%                10%
   使用了 魔法攻击全体/普攻,XXX小怪兽/必杀,XXX小怪兽
   XXX小怪兽 血量XXX
   XXX小怪兽 血量XXX
   XXX小怪兽 血量XXX
   XXX小怪兽 血量XXX
   小怪兽使用了普攻
  

  • 结果:

   凹凸曼血量为0,小怪兽胜利
   所有的小怪兽都死了,凹凸曼胜利

  •    要求:

   凹凸曼 普攻和必杀不能攻击死了小怪兽 随机
          魔法无所谓 小怪兽的血量不能出现负数 0
   小怪兽 死了小怪兽不能攻击 0

 

凹凸曼实体类

public class Ultraman {
   private String name;
   private int hp;
   
   
    public Ultraman() {
	    super();
    }
	public Ultraman(String name, int hp) {
		super();
		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;
	}
	
	@Override
	public String toString() {
		return name+"凹凸曼,"+"血量"+hp;
	}
	
//普通攻击
   public void Attack(Monster m) {
	   int injury = (int)(Math.random()*10+30);
	   int hp = m.getHp();
	   hp -= injury;
	   if(hp>=0) {
		   m.setHp(hp);
	   }else {
		   m.setHp(0);
	   }
 
   }
//必杀攻击
   public void HugeAttack(Monster m) {
	   //做一个伤害
	   int injury = (int) (m.getHp() > 50 ? m.getHp()*0.85 : m.getHp()*0.95);
	   
	   m.setHp(m.getHp() - injury);
   }
//魔法
   public void MagicAttack(Monster[] m) {
	   for(Monster monster : m) {
		   int hp = monster.getHp();
		   hp -= 35;
		   if(hp>=0) {
			   monster.setHp(hp);
		   }else {
			   monster.setHp(0);
		   }
	   }
   }
}

怪兽实体类:

public class Monster {
	private String name;
	private int 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;
	}
	public Monster() {
	}
	public Monster(String name, int hp) {
		super();
		this.name = name;
		this.hp = hp;
	}
	
	@Override
	public String toString() {
		return name+"小怪兽  血量"+hp;
	}
	public void Attack(Ultraman u) {
		//做一个伤害
		   int injury = (int)(Math.random()*10);
		//获取奥特曼的血量
		   int hp = u.getHp();
		   hp -= injury;
		//血量为0时怎么办
		   if(hp>=0) {
			   u.setHp(hp);
		   }else {
			   u.setHp(0);
		   }
	}
}

实战类

public class Fight {
	public static void main(String[] args) {
		Ultraman ultraman = new Ultraman("QC", 200);
		Monster[] monsters = new Monster[3];
		monsters[0] = new Monster("NO1", 100);
		monsters[1] = new Monster("NO2", 100);
		monsters[2] = new Monster("NO3", 100);
		
		int n = 1;
		while(true) {
			System.out.println("=============第"+n+"回合=============");
			if(ultraman.getHp() == 0) {
				System.out.println("小怪兽胜利");
				break;
			}else if (monsters[0].getHp() == 0 && monsters[1].getHp() == 0 && monsters[2].getHp() == 0) {
				System.out.println("凹凸曼胜利");
				break;
			}
			else {
				System.out.println(ultraman.toString());
				double key = Math.random();
				if(key >= 0.0 && key <= 0.6) {
					while(monsters[(int)Math.random()*3].getHp() != 0) {
						ultraman.Attack(monsters[(int)Math.random()*3]);
						System.out.println(ultraman+"凹凸曼对"+monsters[(int)Math.random()*3].getName()
								+"小怪兽使用了普通攻击");
						break;
					}
				}else if (key > 0.6 && key <= 0.7) {
					while(monsters[(int)Math.random()*3].getHp() != 0) {
						ultraman.HugeAttack(monsters[(int)Math.random()*3]);
						System.out.println(ultraman+"凹凸曼对"+monsters[(int)Math.random()*3].getName()
								+"小怪兽使用了必杀");
						break;
					}
				}else if (key > 0.7 && key < 1.0) {
					ultraman.MagicAttack(monsters);
					System.out.println(ultraman+"凹凸曼对所有小怪兽使用了魔法攻击");
				}
				System.out.println(monsters[0].toString());
				System.out.println(monsters[1].toString());
				System.out.println(monsters[2].toString());
				
				monsters[0].Attack(ultraman);
				monsters[1].Attack(ultraman);
				monsters[2].Attack(ultraman);
				System.out.println("小怪兽对凹凸曼使用了普攻\n");
				n++;
			}
		}
	}
}

结果截图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖砸5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值