300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > java奥特曼对战小怪兽_【课堂】模拟奥特曼打小怪兽

java奥特曼对战小怪兽_【课堂】模拟奥特曼打小怪兽

时间:2023-09-20 22:21:31

相关推荐

java奥特曼对战小怪兽_【课堂】模拟奥特曼打小怪兽

模拟奥特曼和一群怪对打(回合制)

下面代码是创建的奥特曼的类

package mt;

public class Ultraman {

private static final int MAX_MIGCE = 100;

private int hp; //生命

private String name; //名字

private int mp; //魔法值

/**

* 构造器

* @param name 设定名字

*/

public Ultraman(String name) {

this.name = name;

hp = 500;

mp = MAX_MIGCE;

}

/**

* 普通攻击

* @param m 别打对象

*/

public void attack(Monster m) {

int injury = (int) (Math.random() * 21 + 10);

m.setHp(m.getHp() - injury);

}

/**

* 魔法攻击

* @param ms 被打对象(一群)

*/

public void magicAttack(Monster[] ms) {

mp -= 30;

for (int i = 0; i < ms.length; i++) {

if (ms[i].isAlive()) {

ms[i].setHp(ms[i].getHp() - 20);

}

}

}

/**

* 必杀技攻击

* @param m 被打对象

*/

public void hugeAttack(Monster m) {

m.setHp(m.getHp() - 50);

}

/**

* 访问名字

* @return 名字

*/

public String getName() {

return name;

}

/**

* 访问生命值

* @return 生命值

*/

public int getHp() {

return hp;

}

/**

* 设置生命值

* @param hp 生命值

*/

public void setHp(int hp) {

this.hp = hp > 0? hp : 0;

}

/**

* 访问魔法值

* @return 魔法值

*/

public int getMp() {

return mp;

}

/**

* 设置魔法值

* @param mp 魔法值

*/

public void setMp(int mp) {

this.mp = mp < MAX_MIGCE? mp : MAX_MIGCE ;

}

@Override

public String toString() {

return name +"生命值:" + hp;

}

}

下面代码是创建的小怪兽的类

package mt;

public class Monster {

private int hp; //生命值

private String name; //名字

/**

* 构造器

* @param name 名字

*/

public Monster(String name) {

this.name = name;

hp = 150;

}

/**

* 普通攻击

* @param m 被打对象

*/

public void attack(Ultraman m) {

int injury = (int) (Math.random() * 11 + 10);

m.setHp(m.getHp() - injury);

}

/**

* 访问名字

* @return 名字

*/

public String getName() {

return name;

}

/**

* 访问生命值

* @return 生命值

*/

public int getHp() {

return hp;

}

/**

* 设置生命值

* @param hp 生命值

*/

public void setHp(int hp) {

this.hp = hp > 0? hp : 0;

}

@Override

public String toString() {

return "小怪兽" + name +"生命值:" + hp;

}

/**

* 判断死没

* @return true表示活的,false表示死了

*/

public boolean isAlive() {

return hp > 0;

}

}

下面代码是模拟的战斗过程

package mt;

public class Test4 {

/**

* 判断怪兽群全死没

* @param ms 怪兽群

* @return true还有没死的,false全日白

*/

public static boolean isAllAlive(Monster[] 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("乜天"); //奥特曼名字

Monster[] ms = { //一群怪兽的名字

new Monster("苍狼"),

new Monster("幽冥虎"),

new Monster("狂龙"),

new Monster("玄武"),

new Monster("烈火凤")};

int round = 1;

do {

System.out.println("**********第" + round + "回合***********");

Monster m =null;

do {

int index = (int) (Math.random()*ms.length); //随机在一群小怪兽里选个没死的出来打

m = ms[index];

} while (!m.isAlive());

System.out.println(m.getName() + "小怪兽攻击奥特曼" + u.getName());

m.attack(u);

System.out.println(u);

if (u.getHp() > 0) {

double rout = Math.random(); //产生概率

if (rout <=0.8) {

System.out.println(u.getName()+"攻击小怪兽"+ m.getName()); //80%概率普通攻击

u.attack(m);

}

else if(rout<=0.9) {

System.out.println(u.getName()+"使用必杀技攻击小怪兽" +m.getName()); //10%必杀技

u.hugeAttack(m);

}

else {

if (u.getMp() >= 30) { //10%魔法攻击

System.out.println( u.getName() + "使用魔法攻击小怪兽");

u.magicAttack(ms);

}

else {

System.out.println( u.getName() + "使用魔法攻击失败!!");

}

}

for (int i = 0; i < ms.length; i++) {

System.out.println(ms[i]);

}

}

round++;

u.setMp(u.getMp() + 10);

} while (u.getHp() > 0 && isAllAlive(ms));

if (u.getHp() > 0) {

System.out.println(u.getName()+"胜利!!!!");

}

else {

System.out.println("小怪兽胜利!!!");

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。