Java
奥特曼打小怪兽
package com.lovoinfo;
/**
* 奥特曼
* @author Carry
*
*/
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 = 300;
this.mp = MAX_MAGIC;
}
/**
* 攻击
* @param m 小怪兽
*/
public void attack(Monster m){
int injury = (int) (Math.random() *21 + 10);
m.setHp(m.getHp() - injury);
}
/**
* 究极必杀技
* @param m 小怪兽
*/
public void hugeAttack (Monster m){
m.setHp(m.getHp() - 50);
}
/**
* 魔法攻击
* @param m 小怪兽的数组
*/
public void magicAttack(Monster[] ms){
mp -=30;
for(int i = 0 ; i < ms.length; i++){
Monster 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;
}
/**
* 奥特曼是否还活着
* @return true 活着 flase死了
*/
public boolean isAlive(){
return hp > 0;
}
/**
* 获得魔法值
* @return 魔法值
*/
public int getMp(){
return mp;
}
/**
* 修改魔法值
* @param mp 修改后的魔法值
*/
public void setMp(int mp){
this.mp = mp < MAX_MAGIC ? mp : MAX_MAGIC;
}
@Override
public String toString() {
return "奥特曼" + name + "的生命值" + hp;
}
}
package com.lovoinfo;
/**
* 小怪兽
* @author Carry
*
*/
public class Monster {
private String name;//名字
private int hp;//生命值
/**
* 构造器
* @param name 名字
*/
public Monster(String name){
this.name = name;
this.hp = 100;
}
/**
* 攻击
* @param u 奥特曼
*/
public void attack(Ultraman u){
int injury = (int) (Math.random() * 16 +5);
u.setHp(u.getHp() - injury);
}
/**
* 获得生命值
* @return
*/
public int getHp(){
return hp;
}
/**
* 修改生命值
* @param hp 修改后的生命值
*/
public void setHp(int hp){
this.hp = hp >0? hp : 0;
}
/**
* 获得小怪兽名字
* @return
*/
public String getName(){
return name;
}
/**
* 小怪兽是否活着
* @return true活着flase死了
*/
public boolean isAlive(){
return hp > 0;
}
@Override
public String toString() {
return "小怪兽" + name + "的生命值" + hp;
}
}
package com.lovoinfo;
public class Pk {
/**
* 判断是否有一只小怪兽活着
* @param ms 五只小怪兽的数组
* @return true表示至少有一个活着false全死了
*/
public static boolean hasAliveMonster(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("陈SB"),
new Monster("韧多多") };
int round = 1;
do {
System.out.println("====第" + round++ + "回合====");
Monster 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.getMp() + 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.getMp() >= 30) {
System.out.println("奥特曼使用魔法攻击");
u.magicAttack(ms);
}
else {
System.out.println("奥特曼使用魔法失败");
}
}
}
for (Monster tempMonter : ms) {
System.out.println(tempMonter);
}
} while (u.getHp() > 0 && hasAliveMonster(ms));
if (u.getHp() > 0) {
System.out.println("奥特曼胜利!");
} else {
System.out.println("小怪兽胜利!");
}
}
}