实例演习
1.模拟进行一个对战场景,如:奥特曼打怪兽的游戏。
package com.lovoinfo;
/**
* 小怪兽
* @author jackfrued
*
*/
public class Monster {
private String name;// 名字
private int hp;// 生命值
public int getHp() {
return hp;
}
/**
* 构造器
* @param name 名字
*/
public Monster(String name) {
this.name = name;
this.hp = 200;
}
/**
* 判断死活
* @return 活着返回true死了返回false
*/
public void setHp(int hp) {
this.hp = hp > 0? hp : 0;
}
public String getName() {
return name;
}
/**
* 攻击
* @param u 奥特曼
*/
public void attack(Ultraman n){
int injury = (int) (Math.random()*11+5);
n.setHp(n.getHp() - injury);
}
@Override
public String toString() {
return name + "[hp=" + hp + "]";
}
}
package com.lovoinfo;
/**
* 奥特曼
* @author jackfrued
*
*/
public class Ultraman {
private int hp;//生命
private int mp;//魔法
private String name;//名字
public void attack(Monster m){
int injury = (int) (Math.random()*21+10);
m.setHp(m.getHp() - injury);
}
/**
* 构造器
*
* @param name 名字 hp 生命 mp魔法
*/
public Ultraman(String name) {
this.hp = 300;//生命值
this.mp = 100;//魔法值
this.name = name;//名字
}
/**
* 致命攻击
* @param m 小怪兽
*/
public void hugeAttack(Monster m){
m.setHp(m.getHp() - 50);
}
/**
* 魔法攻击
*
* @param ms 小怪兽的数组
*/
public void magicAttack(Monster[] ms){
mp -=40;
for (int i = 0; i < ms.length; i++) {
ms[i].setHp(ms[i].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;
}
public String getName() {
return name;
}
@Override
public String toString() {
return name + " [hp=" + hp + "]";
}
}
package com.lovoinfo;
public class Pk {
/**
* 判断是否至少有一只小怪兽是活着的
* @param ms 小怪兽的数组
* @return 有活着的小怪兽返回true否则返回false
*/
public static boolean hasLive(Monster[] ms) {
for (int i = 0; i < ms.length; i++) {
if (ms[i].getHp() > 0) {
return true;//有活着的
}
}
return false;//没有
}
public static void main(String[] args) throws Exception {
Ultraman u = new Ultraman("继潮曼");//创建奥特曼
Monster[] ms = { new Monster("科多兽"), new Monster("比斯巨兽"),
new Monster("魔龙兽"), new Monster("亚古兽"), new Monster("布隆兽") };//一群怪兽
int round = 1;
do {
System.out.println("========第" + round++ + "回合========");//回合制
int tempIndex;
do {
tempIndex = (int) (Math.random() * ms.length);
} while (ms[tempIndex].getHp() <= 0);//怪兽是否死亡
ms[tempIndex].attack(u);
System.out.print(ms[tempIndex] + "攻击奥特曼");
System.out.println(u);
if (u.getHp() > 0) {
u.setMp(u.getMp() + 5);
double rate = Math.random();
if (rate <= 0.7) {
System.out.println("奥特曼攻击" + ms[tempIndex].getName());
u.attack(ms[tempIndex]);
;
} else if (rate <= 0.9) {
if (u.getMp() < 30) {
System.out.println("MP不足,技能释放失败!");
} else {
System.out.println("奥特曼使用魔法攻击"
+ ms[tempIndex].getName());
u.magicAttack(ms);
}
} else {
System.out.println("奥特曼致命一击" + ms[tempIndex].getName());
u.hugeAttack(ms[tempIndex]);
}
}
for (Monster temp : ms) {
System.out.println(temp);
}
// Thread.sleep(1500);
} while (u.getHp() > 0 && hasLive(ms));
if (u.getHp() > 0) {
System.out.println("奥特曼胜利!!!");
} else {
System.out.println("小怪兽胜利!!!");
}
}
}
2.练习使用Arrays的API方法、for each循环输出
package com.lovoinfo;
import java.util.Arrays;
public class ArranysTest {
public static void main(String[] args) {
int[] a = {432,123,1234,323,123};
Arrays.sort(a);
for (int x : a) {
System.out.println(x);
}
}
}