Java完成迪迦奥特曼打小怪兽

在这里插入图片描述

迪迦奥特曼

package cfy.奥特曼;

/**
 * 回合制游戏
   输出:
  ======== 第X回合 ========
   XXX凹凸曼 血量XXX  
   		 30%			60%				10%
   使用了 魔法攻击全体/普攻,XXX小怪兽/必杀,XXX小怪兽
   XXX小怪兽 血量XXX
   XXX小怪兽 血量XXX
   XXX小怪兽 血量XXX
   XXX小怪兽 血量XXX
   小怪兽使用了普攻
  
   凹凸曼血量为0,小怪兽胜利
   所有的小怪兽都死了,凹凸曼胜利

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

 * @author JKMaster
 *
 */
public class Ultraman {
   private String name;
   private int hp;
   
   
   public Ultraman() {
	super();
	// TODO Auto-generated constructor stub
}


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;
}


//普通攻击
   public void Attack(Monster m) {
	   //做一个伤害
	   int injury = (int)(Math.random()*10+20);
	   //获取小怪兽的血量
	   //获取奥特曼的血量
	   int hp = m.getHp();
	   hp -= injury;
	   //血量为0时怎么办
	   if(hp>=0) {
		   m.setHp(hp);
	   }else {
		   m.setHp(0);
	   }
 
   }
//必杀攻击
   public void HugeAttack(Monster m) {
	   //做一个伤害
	   int injury = (int)(m.getHp()*0.75) > 60 ? (int)(m.getHp()*0.75) : 60;
	   //获取小怪兽的血量
	   //获取奥特曼的血量
	   int hp = m.getHp();
	   hp -= injury;
	   //血量为0时怎么办
	   if(hp>=0) {
		   m.setHp(hp);
	   }else {
		   m.setHp(0);
	   }
	   
   }
   //魔法
   public void MagicAttack(Monster[] m) {
	   for(Monster ms :m) {//数组里面
		   int hp = ms.getHp();
		   hp-= 30;
		 //血量为0时怎么办
		   if(hp>=0) {
			   ms.setHp(hp);
		   }else {
			   ms.setHp(0);
		   }
	   }
	   
	   
   }
}


小怪兽

package cfy.奥特曼;

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;
	}
	public void Attack(Ultraman u) {
		//做一个伤害
		   int injury = (int)(Math.random()*10+10);
		//获取奥特曼的血量
		   int hp = u.getHp();
		   hp -= injury;
		   //血量为0时怎么办
		   if(hp>=0) {
			   u.setHp(hp);
		   }else {
			   u.setHp(0);
		   }
	}
}

package cfy.奥特曼;

public class Attack {

	public static void main(String[] args) {
		
		Ultraman ultraman =  new Ultraman("迪迦奥特曼",1000);
		Monster monster1 = new Monster("食人魔甲",200);
		Monster monster2 = new Monster("食人魔乙",200);
		Monster monster3= new Monster("食人魔丙",200);
		Monster monster4 = new Monster("食人魔王",500);
		Monster[] m = {monster1,monster2,monster3,monster4};
		
		System.out.println(ultraman.getName()+"---"+ultraman.getHp());
		for(int i = 0;i<=3;i++)
		{
			System.out.println(m[i].getName()+"---"+m[i].getHp());
		}
		
		int n = 1;
		while (true) {
			
			System.out.println(ultraman.getName()+"血量是:"+ultraman.getHp());
			for(int mons=0;mons<=3;mons++)
			{
				System.out.println(m[mons].getName()+"血量是:"+m[mons].getHp());
			}
			
			System.out.println("=============第"+n+"回合=============");
			
			if(ultraman.getHp() == 0)
			{
				System.out.println("凹凸曼血量为0,小怪兽胜利");
				break;
			}else if((m[0].getHp()+m[1].getHp()+m[2].getHp()+m[3].getHp())==0)
			{
				System.out.println("所有的小怪兽都死了,凹凸曼胜利");
				break;
			}
			
			int order = (int) (Math.random() * 2); //区间是[0,1);
			if (order == 1) {
				int Ult = (int) (Math.random() * 10);
				if (Ult == 0 || Ult == 1 || Ult == 2) {
					System.out.println(ultraman.getName()+"使用了魔法攻击,攻击所有怪兽");
					ultraman.MagicAttack(m);
				} else if (Ult >= 3 && Ult <= 8) {
					
					int i = (int) (Math.random() * 4);
					System.out.println(ultraman.getName()+"使用了普通攻击,攻击了"+m[i].getName());
					ultraman.Attack(m[i]);
				} else {
					int j = (int) (Math.random() * 4);
					System.out.println(ultraman.getName()+"使用了必杀攻击,攻击了"+m[j].getName());
					ultraman.HugeAttack(m[j]);
				}

				for (int mon = 0; mon <= 3; mon++) {
					
					if(m[mon].getHp() == 0)
					{
						mon++;
					}else{
						System.out.println(m[mon].getName()+"使用了普通攻击");
						m[mon].Attack(ultraman);
					}
				}

			} else {

				for (int mon = 0; mon <= 3; mon++) {
					
					if(m[mon].getHp() == 0)
					{
						mon++;
					}else{
						System.out.println(m[mon].getName()+"使用了普通攻击");
						m[mon].Attack(ultraman);
					}
				}

				int Ult = (int) (Math.random() * 10);
				if (Ult == 0 || Ult == 1 || Ult == 2) {
					System.out.println(ultraman.getName()+"使用了魔法攻击,攻击所有怪兽");
					ultraman.MagicAttack(m);
				} else if (Ult >= 3 && Ult <= 8) {
					int i = (int) (Math.random() * 4);
					System.out.println(ultraman.getName()+"使用了普通攻击,攻击了"+m[i].getName());
					ultraman.Attack(m[i]);
				} else {
					int j = (int) (Math.random() * 4);
					System.out.println(ultraman.getName()+"使用了必杀攻击,攻击了"+m[j].getName());
					ultraman.HugeAttack(m[j]);
				}

			}
			
			for(int change = 0;change <= 3;change++)
			{
				if(m[change].getHp() < 0)
				{
					m[change].setHp(0);
				}
			}
			
			n++;
			
		}
		
		
	}

}

结果图

在这里插入图片描述

现在有一个奥特曼怪兽的角色扮演游戏。请你根据下面的描述,定义两个类:奥特曼类和怪兽类。 在奥特曼的世界,打怪兽就是全部。现在人人都有机会成为奥特曼,加入到与怪兽无止境的战斗中。可惜,并非人人生来就是英雄,革命尚未成功,同志仍需努力啊。每一个奥特曼都要从零开始,辛勤劳动,打怪升级,最终才能成为举世瞩目的大英雄。 奥特曼的等级(rank)从第一级开始,随着它打怪兽经验(exp)的增加,等级将不断攀升。随着等级的升高,奥特曼的生命值(hp)上限和攻击力(damage)也将大大增强。在与怪兽的战斗中,奥特曼收获的不仅仅是经验。有时,运气好的话,还能从怪兽身上弄到点小钱(money)。不要小看这些钱,关键时刻,它能给奥特曼买药补血呀。奥特曼没有金刚不坏之身,在与怪兽的战斗中,奥特曼会受到伤害。一旦奥特曼的生命值降到0,它英雄的一生就结束了。 好了,了解了奥特曼的基本情况,现在可以开始战斗了。首先,我们需要一位全新的奥特曼,我们给它赋予一定的初始实力(initial)。让它投入战斗吧! 在与怪兽的战斗中要讲究策略。所谓知己知彼,百战不殆,一旦碰到怪兽,我们首先要查看自己和对方的实力(display),包括双方的等级、生命值、攻击力、经验和所拥有的钱财。所谓打得赢就打,打不赢就跑。如果对手太强大,逃跑吧(escape)!偶尔逃跑无伤颜面,但会耗费一点生命值。如果总是逃跑,生命被虚耗,那英雄就当不成了。所以该出手时就出手,勇敢地战斗(attack)吧!每一回合的战斗中,怪兽会受到攻击(attacked),怪兽也会反击(fightback),让奥特曼受到攻击(attacked)。每一回合结束,只要奥特曼还活着(isalive),而且怪兽也还活着,战斗就要继续。如果奥特曼的生命值太低,也许抵挡不了下一轮的进攻,那么别财迷了,掏钱出来给它补血(restore)吧。当然,如果形势确实不妙,奥特曼也可以中途逃跑。但如果获得了最终的胜利(win),不仅能赢得战斗经验,夺取怪兽身上的钱财,足够多的经验也许能让奥特曼升级(upgrade)。 以及其实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员一修

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

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

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

打赏作者

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

抵扣说明:

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

余额充值