Java第7天

Java面向对象#

奥特曼打小怪兽##

package Lianxi;

public class Pk {
	
	/**
	 * 判断是否有小怪兽是活着的
	 * 有活着的小怪兽返回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) throws Exception {
		Ultraman u = new Ultraman("奥特曼");
		Monster[] ms = { 
			new Monster("小怪兽1号"),
			new Monster("小怪兽2号"),
			new Monster("小怪兽3号"),
		};
		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 tempMonster : ms) {
					System.out.println(tempMonster);
				}
			}
		} while(u.getHp() > 0 && hasAliveMonster(ms));
		
		if(u.getHp() > 0) {
			System.out.println("奥特曼胜利!!!");
		}
		else {
			System.out.println("小怪兽胜利!!!");
		}
	}
}

对象内容小怪兽的属性与方法##

package Lianxi;
/**
 * 小怪兽
 * @author jackfrued
 *
 */
public class Monster {
	private String name;	// 名字
	private int hp;			// 生命值
	
	/**
	 * 构造器
	 * @param name 名字
	 */
	public Monster(String name) {
		this.name = name;
		this.hp = 150;
	}
	
	/**
	 * 攻击
	 * @param u 奥特曼
	 */
	public void attack(Ultraman u) {
		int injury = (int) (Math.random() * 11 + 5);
		u.setHp(u.getHp() - injury);
	}

	public int getHp() {
		return hp;
	}

	public void setHp(int hp) {
		this.hp = hp > 0? hp : 0;
	}
	
	/**
	 * 判断死活
	 * @return 活着返回true死了返回false
	 */
	public boolean isAlive() {
		return hp > 0;
	}
	
	public String getName() {
		return name;
	}
	@Override
	public String toString() {
		return "小怪兽" + name + "的生命值: " + hp;
	}
}

对象内容奥特曼的属性与方法##

package Lianxi;
/**
 * 奥特曼
 * 
 * @author jackfrued
 *
 */
public class Ultraman {
	private static final int MAGIC = 100;
	private String name; // 名字
	private int hp;     // 生命值
	private int mp;    // 魔法值
	/**
	 * 构造器
	 * 
	 * @param name 名字
	 */
	public Ultraman(String name) {
		this.name = name;
		this.hp = 300;
		this.mp = 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 ms 小怪兽的数组
	 */
	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);
			}
		}
	}
	public int getHp() {
		return hp;
	}
	public void setHp(int hp) {
		this.hp = hp > 0 ? hp : 0;
	}
	public int getMp() {
		return mp;
	}
	public void setMp(int mp) {
		this.mp = mp < MAGIC? mp : MAGIC;
	}
	public String toString() {
		return "奥特曼" + name + "的生命值: " + hp;
	}
}
posted @ 2015-05-06 20:43  文正元  阅读(146)  评论(0编辑  收藏  举报