(连载)Java基础学习008
2015-05-06 23:54
260 查看
面对象编程
练习:模拟游戏
英雄类
package com.lovoinfo; /** * 英雄 * * @author zenghao * */ public class Zhaoxin { private static final int MAX_MAGIC = 100; private String name; // 姓名 private int hp; // 血条 private int mp; // 蓝条 /** * 构造器 * * @param name */ public Zhaoxin(String name) { this.name = name; this.hp = 300; this.mp = MAX_MAGIC; } /** * 普通攻击 * * @param m * 怪兽 */ public void attack(Monster m) { int injury = (int) (Math.random() * 18 + 10); m.setHp(m.getHp() - injury); } public int getMp() {// 访问蓝条 return mp; } public void setMp(int mp) {// 修改蓝条 this.mp = mp < MAX_MAGIC ? mp : MAX_MAGIC; } /** * 技能攻击 * * @param m * 怪兽 */ public void skill(Monster m) { m.setHp(m.getHp() - 50); } /** * 魔法攻击 * * @param ms * 怪兽的数组 */ public void magiskll(Monster[] ms) { mp -= 30;// 魔法每用一次减30 for (int i = 0; i < ms.length; i++) { Monster m = ms[i]; if (m.isAlive()) { m.setHp(getHp() - 30); }// 魔法伤害对活着的怪兽都造成一次伤害。 } } public int getHp() {// 访问血条 return hp; } public void setHp(int hp) {// 修改血条 this.hp = hp > 0 ? hp : 0; } public String toString() {// 打印英雄的姓名和生命和魔法值。 return name + "生命值:" + hp + "魔法值:" + mp; } }package com.lovoinfo; /** * 英雄 * * @author zenghao * */ public class Zhaoxin { private static final int MAX_MAGIC = 100; private String name; // 姓名 private int hp; // 血条 private int mp; // 蓝条 /** * 构造器 * * @param name */ public Zhaoxin(String name) { this.name = name; this.hp = 300; this.mp = MAX_MAGIC; } /** * 普通攻击 * * @param m * 怪兽 */ public void attack(Monster m) { int injury = (int) (Math.random() * 18 + 10); m.setHp(m.getHp() - injury); } public int getMp() {// 访问蓝条 return mp; } public void setMp(int mp) {// 修改蓝条 this.mp = mp < MAX_MAGIC ? mp : MAX_MAGIC; } /** * 技能攻击 * * @param m * 怪兽 */ public void skill(Monster m) { m.setHp(m.getHp() - 50); } /** * 魔法攻击 * * @param ms * 怪兽的数组 */ public void magiskll(Monster[] ms) { mp -= 30;// 魔法每用一次减30 for (int i = 0; i < ms.length; i++) { Monster m = ms[i]; if (m.isAlive()) { m.setHp(getHp() - 30); }// 魔法伤害对活着的怪兽都造成一次伤害。 } } public int getHp() {// 访问血条 return hp; } public void setHp(int hp) {// 修改血条 this.hp = hp > 0 ? hp : 0; } public String toString() {// 打印英雄的姓名和生命和魔法值。 return name + "生命值:" + hp + "魔法值:" + mp; } }
怪兽类
package com.lovoinfo; /** * 小怪 * * @author zenghao * */ public class Monster { private String name;// 姓名 private int hp; // 血条 /** * 构造器 * * @param name */ public Monster(String name) { super(); this.name = name; this.hp = 300; } /** * 普通攻击 * * @param u * 英雄 */ public void attack(Zhaoxin u) { int injury = (int) (Math.random() * 15 + 5); u.setHp(u.getHp() - injury); } public int getHp() {// 访问血条 return hp; } public void setHp(int hp) {// 修改血条 this.hp = hp > 0 ? hp : 0; } public String toString() {// 打印小怪兽的名字和血条。~! return "小怪兽" + name + "生命值:" + hp; } /** * 用布尔来判断死活 * * @return 活着返回true死了返回false */ public boolean isAlive() { return hp > 0; } public String getName() {// 访问名字 return name; } }
PK代码main方法
package com.lovoinfo; /** * 赵信VS怪 * * @author zenghao * */ 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) { Zhaoxin u = new Zhaoxin("赵信"); 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()); System.out.println(m.getName() + "小怪兽攻击赵信!"); m.attack(u); System.out.println(u); if (u.getHp() > 0) { double rate = Math.random(); if (rate <= 0.8) { System.out.println("赵信使用普通攻击小怪兽!"); u.attack(m); } else if (rate <= 0.9) { } System.out.println("赵信使用\n枪出如龙\n攻击小怪兽!"); u.skill(m); } else { if (u.getMp() >= 30) { System.out.println("赵信使用\n新月横扫\n攻击小怪兽!"); u.magiskll(ms); } else { System.out.println("MP不足!"); } } for (Monster termpMonster : ms) System.out.println(termpMonster); } while (u.getHp() > 0 && hasAliveMonster(ms)); if (u.getHp() > 0) { System.out.println("赵信胜利!"); } else { System.out.println("赵信OVER了。"); } } }
自我总结
1.加深了对面对象编程的了解。每一个对象都是由属性(数据抽象),构造器,方法(行为抽象)组成。
对象有属于自己的类。
对象都有自己的属性和行为。
2.Arrags自动排序功能。(Java还是很强大HOHO~~~)yy下。。
Arrags.sort(数组),规则
3.在Source菜单选项里选中Generate Getters and Setters。。。。调用get..访问器,set..修改器。
4.在Source菜单选项里选中Generate Constructor using Fields…调出构造器。
还待加强
1.对循环调用不是那么的随心所欲,感觉就是很蹩脚。(感觉就像是废了的样子。呵呵)2.boolean该放在那里很模糊。
3.对数据抽象和行为抽象还不够那么清晰的表达。和一个好的思路。
4.单词量。
晚安吧。!Java!
相关文章推荐
- 做java程序员有一段时间了,但是感觉基础的东西了解的很少很少,我从现在开始从新开始。。。。。。。。。。。学习笔记(连载)给有需要的人
- java语言学习连载(一)--Java语言编程基础
- java语言学习连载(二)--Java语言基础
- (连载)Java基础学习001
- (连载)Java基础学习002
- (连载)Java基础学习003
- (连载)Java基础学习004
- (连载)Java基础学习005
- (连载)Java基础学习006
- (连载)Java基础学习007
- 黑马程序员-java基础学习(流程控制)
- 【黑马程序员】---- Java 基础之 学习使用API文档
- 黑马程序员——java基础学习笔记——第十三天
- 黑马程序员------Java基础学习------面向对象(上)
- 黑马程序员------Java基础学习------面向对象(下)
- 黑马程序员------Java基础学习------异常处理
- 黑马程序员------Java基础学习------多线程
- 黑马程序员------Java基础学习------集合框架
- 黑马程序员------Java基础学习------泛型
- 黑马程序员——java基础学习笔记——第十四天