1、设计奥特曼类,属性有【名字和血量】,行为有【普通攻击、必杀攻击和魔法攻击】
其中普通攻击和必杀攻击一次只能随机攻击一只活着的小怪兽
魔法攻击可以攻击所有的小怪兽
要求普通攻击伤害是20~29之间
必杀伤害如果血量剩余大于60就攻击血量3/4的伤害,如果不大于就直接攻击60伤害
魔法攻击要求固定伤害30
但是无论如何攻击最终小怪兽的血量要保持为0
奥特曼是几率性触发攻击 10%必杀 30%魔法 60%普通
2、设计小怪兽类,属性有【名字和血量】,行为有【普通攻击】
其中普通攻击可以攻击奥特曼
要求普通攻击伤害10~19之间
但是无论如何攻击最终奥特曼的血量要保持为0
3、执行类中操作:本游戏是回合制游戏 其中是【1只奥特曼大战4只小怪兽】,如何便捷的管理和存储4只小怪兽请自行分析
需要在控制台上输出下面的打印效果
需要打印了第几回合 奥特曼的名字和血量 使用了什么攻击
如果是魔法攻击即输出 使用魔法攻击攻击全体小怪兽
如果是普通或必杀攻击 需要写出攻击了那只小怪兽
打印每只小怪兽的名字和血量 并打印小怪兽使用普通攻击
输出:
======== 第X回合 ========
XXX凹凸曼 血量XXX
使用了 魔法攻击全体/普攻,XXX小怪兽/必杀,XXX小怪兽
XXX小怪兽 血量XXX
XXX小怪兽 血量XXX
XXX小怪兽 血量XXX
XXX小怪兽 血量XXX
小怪兽使用了普攻
4、游戏结束条件:凹凸曼血量为0,小怪兽胜利
所有的小怪兽都死了,凹凸曼胜利
5、特殊条件说明:
凹凸曼 普攻和必杀不能攻击死了小怪兽 要【随机攻击一只】活着的小怪兽
魔法无所谓攻击所有的小怪兽【死活不限】 小怪兽的血量不能出现负数 0
阵亡的小怪兽不允许参与到本轮攻击中
奥特曼和小怪兽的初始血量根据个人喜好设定【但是不要太过分】
700 ~1000 250~350
测试类
package com.djz.test;
/*** @author djz* @create -10-20-20:19*/public class Demo04 {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("怪兽1"),new Monster("怪兽2"),new Monster("怪兽3"),new Monster("怪兽4"),};int round = 1;do {System.out.println("**********第" + round + "回合***********");Monster m ;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.6) {System.out.println(u.getName()+"攻击小怪兽"+ m.getName());u.attack(m);}else if(rout<=0.9) {System.out.println(u.getName()+"使用必杀技攻击小怪兽" +m.getName());u.hugeAttack(m);}else if (rout<=30) {System.out.println( u.getName() + "使用魔法攻击小怪兽");u.magicAttack(ms);}for (int i = 0; i < ms.length; i++) {System.out.println(ms[i]);}}round++;} while (u.getHp() > 0 && isAllAlive(ms));if (u.getHp() > 0) {System.out.println(u.getName()+"胜利!!!!");}else {System.out.println("小怪兽胜利!!!");}}}
奥特曼类
public class Ultraman {private int hp; //生命private String name; //名字public Ultraman(String name) {this.name = name;hp = 700;}public void attack(Monster m) {int injury = (int) (Math.random() * 21 + 10);m.setHp(m.getHp() - injury);}public void magicAttack(Monster[] ms) {for (int i = 0; i < ms.length; i++) {if (ms[i].isAlive()) {ms[i].setHp(ms[i].getHp() - 30);}}}public void hugeAttack(Monster m) {if (m.getHp() > 60) {m.setHp((m.getHp() / 4));} else {m.setHp(m.getHp() - 60);}}public String getName() {return name;}public int getHp() {return hp;}public void setHp(int hp) {this.hp = hp > 0 ? hp : 0;}@Overridepublic String toString() {return name + "生命值:" + hp;}}
怪兽类
public class Monster {private int hp;private String name;public Monster(String name) {this.name = name;hp = 250;}public void attack(Ultraman m) {int injury = (int) (Math.random() * 11 + 10);m.setHp(m.getHp() - injury);}public String getName() {return name;}public int getHp() {return hp;}public void setHp(int hp) {this.hp = hp > 0? hp : 0;}@Overridepublic String toString() {return "小怪兽" + name +"生命值:" + hp;}public boolean isAlive() {return hp > 0;}}