面对象
来源:互联网 发布: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
- 面对象
- JAVA之面对象
- JAVA面对象二
- java面对象四
- 面对象实例
- java 面对象的思想
- 事件驱动的JScript面对象编程
- 事件驱动的JScript面对象编程
- 事件驱动的JScript面对象编程
- 【设计模式】面对象王朝六元老
- 事件驱动的JScript面对象编程(例)
- 事件驱动的JScript面对象编程(例)
- 事件驱动的JScript面对象编程(例)
- 事件驱动的JScript面对象编程(例)
- 事件驱动的JScript面对象编程 选择自 Mykxxx 的 Blog
- OpenLayers深入浅出(4)----定制绘图点、线、面对象实例
- Ruby简介 完全面对象 脚本 从人的角度编程(强大反射)
- 程序设计题:农场一头小母牛_每年生头小母牛_面对象!
- day17/CollectionsDemo3.java
- Java基础——多线程+卖票程序+同步函数-单例设计模式+死锁
- ACDREAM 03C Robbers(贪心专场)
- 黑马程序员---------------JAVA基础--------正则表达式
- day17/CollectionsDemo4.java
- 面对象
- JSP标准动作、EL表达式和JSTL
- OC--内存管理(1)
- 字符串的填充、复制与加密和解密
- day17/CollectionToArray.java
- 命令行的简单使用
- 链表 Partition List
- 综合设计ui 彩票设计基础界面搭建
- Linux环境编程编译工具与动态态库