面向对象练习题
奥特曼打小怪兽
package jerry;
/**
* 奥特曼
* @author HK
*
*/
public class Ultraman {
private static final int MAX_MAGIC = 0;
private String name;
private int hp;
private int mp;
/**
* 构造器
* @param name 奥特曼名字
*/
public Ultraman(String name){
this.name =name;
this.hp = 50000;
this.mp = MAX_MAGIC;
}
public void setMp(int mp) {
this.mp = mp < MAX_MAGIC? mp : MAX_MAGIC;
}
/**
* 攻击
* @param m 小怪兽
*/
public void attack (Moster m){
int injury = (int) (Math.random()*21000+10);
m.setHp(m.getHp() - injury);
}
/**
* 究极必杀
* @param m 小怪兽
*/
public void hugeAttack(Moster m){
m.setHp(m.getHp() - 50000);
}
/**
* 魔法攻击
* @param ms 小怪兽的数组
*
*/
public void magiAttack(Moster[] ms){
mp -= 3000;
for (int i = 0; i < ms.length; i++) {
Moster m = ms[i];
if (m.isAlive()) {
m.setHp(m.getHp() - 20);
}
}
}
/**
* 奥特曼生命访问器
* @return
*/
public int getHp(){
return hp;
}
/**
* 生命值修改器
* @param hp
*/
public void setHp(int hp){
this.hp = hp > 0? hp : 0;
}
public int getMp() {
return mp;
}
public String toString(){
return "奥特曼" + name + "生命值还剩" + hp;
}
}
package jerry;
/**
* 小怪兽
* @author HK
*
*/
public class Moster {
private String name;
private int hp;
/**
* 构造器
* @param name 小怪兽的名字
*/
public Moster(String name ){
this.name = name;
this.hp = 10000;
}
/**
* 攻击
* @param u 奥特曼
*/
public void attack(Ultraman u){
int injury = (int) (Math.random()*21000+10);
u.setHp(u.getHp() - injury);
}
/**
* 小怪兽生命值访问器
* @return 生命值
*/
public int getHp(){
return hp;
}
/**
* 小怪兽生命修改器
* @param hp
*/
public void setHp(int hp){
this.hp =hp > 0?hp : 0;
}
/**
*
*/
public String toString(){
return "小怪兽" + name + "生命值还剩" + hp;
}
/**
* 判断死活
* @return 活着返回true 死了返回false
*/
public boolean isAlive(){
return hp > 0;
}
public String getName(){
return name;
}
}
package jerry;
/**
* 奥特曼殴打小怪兽
* @author HK
*
*/
public class Pk {
/**
* 判断是否至少有一只小怪兽是否活着的
* @param ms 小怪兽的数组
* @return 有活着的小怪兽返回true 否者返回false
*/
public static boolean hasAliveMonster(Moster [] ms){
for (int i = 0; i < ms.length; i++) {
if (ms[i].isAlive()) {
return true;
}
}
return false;
}
public static void main(String[] args) {
Ultraman u = new Ultraman("迪迦");
Moster[] ms = {
new Moster("大象"),
new Moster("猴子"),
new Moster("老鼠"),
new Moster("小鸡"),
new Moster("鸭子"),
new Moster("狗崽")
};
int round = 1;
do {
System.out.println("=======第" + round++ + "回合======");
Moster m = null;
do{
int mIndex =(int)( Math.random()*ms.length);
m = ms[mIndex];
}while (!m.isAlive());
m.attack(u);
System.out.println(m.getName() + "小怪兽攻击奥特曼");
System.out.println(u);
if (u.getHp() > 0) {
u.setMp(u.getHp()+5);
double rate = Math.random();
if (rate <= 0.8) {
System.out.println("奥特曼攻击小怪兽");
u.attack(m);
}
else if (rate <= 0.9) {
System.out.println("奥特曼使用究极必杀技");
u.hugeAttack(m);
}
else {
if (u.getHp() >= 30) {
System.out.println("奥特曼使用魔法攻击");
u.magiAttack(ms);
}
else {
System.out.println("使用魔法失败");
}
}
for (Moster TempMosters : ms) {
System.out.println(TempMosters);
}
}
System.out.println(m);
} while (u.getHp() > 0 && hasAliveMonster(ms));
if (u.getHp() > 0) {
System.out.println("奥特曼胜利!!!!!!!!!!!");
} else {
System.out.println("小怪兽胜利!!!!!!!!!!!");
}
}
}