面对象

来源:互联网 发布:mac上如何装office 编辑:程序博客网 时间:2024/05/20 00:14

练习1
奥特曼打小怪兽

package com.lovoinfo;/** * 奥特曼 *  * @author jackfrued * */public class Ultraman {    private static final int MAX_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 = 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 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 < MAX_MAGIC? mp : MAX_MAGIC;    }    @Override    public String toString() {        return "奥特曼" + name + "的生命值: " + hp;    }}
package com.lovoinfo;/** * 小怪兽 * @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 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) 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++ + "回合=========");            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("小怪兽胜利!!!");        }    }}
0 0