案例:

公司要开发新游戏,请用面向对象的思想,设计游戏中的蛇怪和蜈蚣精
设定
1)蛇怪类:
属性包括:怪物名字,生命值,攻击力
方法包括:攻击,移动(曲线移动),补血(当生命值<10时,可以补加20生命值)
2)蜈蚣精类:
属性包括:怪物名字,生命值,攻击力
方法包括:攻击,移动(飞行移动)
要求
1)分析蛇怪和蜈蚣精的公共成员,提取出父类—怪物类
2)利用继承机制,实现蛇怪类和蜈蚣精类
3)攻击方法,描述攻击状态。内容包括怪物名字,生命值,攻击力
4)编写测试类,分别测试蛇怪和蜈蚣精的对象及相关方法
5)定义名为mon的包存怪物类,蛇怪类,蜈蚣精类和测试类


该案例中人物角色名称属实有点捞,这里我将华丽的写出:漩涡鸣人VS大蛇丸 。

代码如下:

创建怪物类Monster:

//怪物类
public abstract class Monster {private String name;//怪物名称private int hitPoints;//生命值private int attack;//攻击力//创建getXxx()和setXxx()方法public String getName() {return name;}public void setName(String name) {this.name = name;}public int getHitPoints() {return hitPoints;}public void setHitPoints(int hitPoints) {this.hitPoints = hitPoints;}public int getAttack() {return attack;}public void setAttack(int attack) {this.attack = attack;}//定义有参的构造方法public Monster(String name, int hitPoints, int attack) {this.name = name;this.hitPoints = hitPoints;this.attack = attack;}//定义无参的构造方法public Monster() {}//怪物攻击方法,描述攻击状态。内容包括怪物名字,生命值,攻击力public abstract void method();// 怪物移动移动public abstract void move();
}

创建蛇怪类Basilisk:

// 蛇怪类
public class Basilisk extends Monster implements Replenish{//定义有参的构造方法public Basilisk(String name, int hitPoints, int attack) {super(name, hitPoints, attack);}//定义无参的构造方法public Basilisk() {}//重写怪物攻击方法,描述攻击状态。内容包括怪物名字,生命值,攻击力@Overridepublic void method() {System.out.println(getName() + "施展了        ====>  仙法·万蛇弑杀阵");System.out.println(getName() +"当前生命值是  ====>  " + getHitPoints() + "\tHP");System.out.println(getName() +"攻击力是      ====>  " + getAttack() + "\tATK");}//重写怪物移动方法@Overridepublic void move() {System.out.println("我是"+getName() +",\t仙法·万蛇弑杀阵");}//重写补血术@Overridepublic void replenish() {if (getHitPoints()<=5 && getHitPoints()>0){int hisPoints = getHitPoints();setHitPoints(hisPoints +=20 );System.out.println("施展大蛇补血术      ====>  每秒回复20HP \n当前生命值是        ====>  " + getHitPoints());}}
}

创建蜈蚣类Centipede:

// 蜈蚣类
public class Centipede extends Monster{//定义有参的构造方法public Centipede(String name, int hitPoints, int attack) {super(name, hitPoints, attack);}//定义无参的构造方法public Centipede() {}@Overridepublic void method() {System.out.println(getName() + "施展了        ====>  仙法·大螺旋丸手里剑之术");System.out.println(getName() +"当前生命值是  ====>  " + getHitPoints() + "\tHP");System.out.println(getName() +"攻击力是      ====>  " + getAttack() + "\t\tATK");}@Overridepublic void move() {System.out.println("我是"+getName() +",仙法·大螺旋丸手里剑之术");}
}

创建补血术接口interface Replenish:

// 补血术
public interface Replenish {void replenish();
}

创建怪物测试类MonstarTest :

public class MonsterTest {public static void main(String[] args) {//创建蜈蚣精对象Centipede c = new Centipede("漩涡鸣人",200,98);c.method();c.move();System.out.println("-----------------------------------------------");//创建蛇妖对象Basilisk b = new Basilisk("大蛇丸",5,20);b.method();b.replenish();b.move();}
}

运行结果:


是不是很有趣呢?程序还可以不断优化(交给你们去实现啦),这只是一个继承的例子。

案例:Java用面向对象的思想设计游戏中的角色相关推荐

  1. 某公司要开发新游戏,请用面向对象的思想,设计游戏中的蛇怪和蜈蚣精

    某公司要开发新游戏,请用面向对象的思想,设计游戏中的蛇怪和蜈蚣精 设定 蛇怪类: 属性包括:怪物名字,生命值,攻击力 方法包括:攻击,移动(曲线移动),补血(当生命值<10时,可以补加20生命值 ...

  2. 用面向对象的思想探讨游戏“魔兽争霸”(1)

    [文章标题]用面向对象的思想探讨游戏"魔兽争霸"(1) [文章作者]曾健生 [作者邮箱]zengjiansheng1@126.com [作者QQ]190678908 [作者博客]h ...

  3. 编写程序描述卡车信息 某公司要开发“X出租公司车辆管理系统”,请用面向对象的思想设计卡车类。

    一.练习题目 编写程序描述卡车信息 二.问题描述 某公司要开发"X出租公司车辆管理系统",请用面向对象的思想设计卡车类. 设定: 属性:车牌号.车型.颜色.日租金.载重量 方法:租 ...

  4. 游戏中的角色停止,时间停止

    游戏中的角色停止,时间停止 最近遇到一款很喜欢的游戏-<TimeLocker-Shooter>,翻译是"时间凝固-射击". 游戏介绍很简单:当你停止,时间停止 .操纵时 ...

  5. 游戏中的角色渲染技术之皮肤篇

    原文链接https://blog.uwa4d.com/archives/Usparkle_Skin.html 这是侑虎科技第253篇原创文章,感谢作者洛城供稿,欢迎转发分享,未经作者授权请勿转载.当然 ...

  6. Silverlight游戏设计(Game Design):(五)面向对象的思想塑造游戏对象

    传说,面向对象的开发模式最初是因为程序员偷懒而不小心诞生的.发展至今,人们从最初的热忠于讨论某某语言是否足够面向对象到现在开始更广泛的关注面向对象的思想而不是具体内容.面向对象的思想其实并不深奥,它存 ...

  7. Java学习——面向对象编程思想

    目录 一. 基本概念 二. 面向对象与面向过程的区别 三. 面向对象程序设计的类与对象 3.1 对象 3.2 类 四. 面向对象的四大特征 4.1 抽象 4.2 继承 4.3 封装 4.4 多态 1) ...

  8. Unity学习笔记 使用DMM(Distance-Independent Millimeter)思想设计VRAR中的UI

    1. 前言 DMM(distance-independent millimeter,也叫距离无关毫米)是由Google Daydream团队于2017年提出的概念单位,尽管已经是几年前的概念,但是对于 ...

  9. 基于mongodb, 设计游戏中的个人背包系统

    本着高效简洁的目的, 根据 <深入学习 MONGODB > 这本书做指导, 数据库设计遵循下面两条规则 规则 1:  预先分配磁盘空间并填充空白数据 规则 2:  文档要自给自足.数据的计 ...

  10. avg是java关键字_浅谈AVG游戏中的脚本

    最近因为笔记本数据丢失,翻网盘的时候找到了大学时候写的基于XNA的2D游戏引擎的代码,和为这个引擎写的使用示例. 其中比较大点的示例就是一个ACT游戏,一个AVG游戏和一个A*寻径算法. 因为当时的A ...

最新文章

  1. 查看CPU是i386架构和x86_64架构
  2. 后疫情时代,RTC期待新的场景大爆发
  3. Kafka压力测试(写入MQ消息压测和消费MQ消息压测)
  4. 安卓移动应用开发考题_Android移动应用试卷试题带答案.doc
  5. WindowsServer和普通WIN操作系统有什么不同?
  6. 011_html标题
  7. IDEA 学习笔记之 安装和基本配置
  8. 卖一头猪亏500元,“猪茅”也扛不住了?
  9. mock方法常用框架_什么是Mock测试?
  10. 单端口和双端口的优势_哪种适合您,三种常见组网方式比较
  11. mat后缀名_mat 文件 打开软件
  12. 赵容弼(Cho Yong Pil) -《30周年纪念专辑》
  13. 安装虚拟机遇到和小红帽遇到的问题
  14. 【ceph】CEPH 单活MDS主从切换流程|REPLAY
  15. 计算机电源出现问题,电源故障引起的电脑问题
  16. 敏感词汇检测及返回敏感源词汇
  17. [收藏]一些电平转换方法
  18. mat-icon 翻转_案例研究-翻转网站以获取利润
  19. 服务器定位cpu高占用率代码php,面试官:线上服务器CPU占用率高如何排查定位问题?,...
  20. C#与SQl数据的对应关系(tinyint、smallint、int、bigint)

热门文章

  1. 图模型在欺诈检测应用一点看法
  2. arm mali 天梯图_电视盒子CPU天梯图:原来这些处理器都在这个档位
  3. 阿里云盘+OneManager+Heroku+CFWorkers实现阿里云盘网络挂载
  4. arg min什么意思
  5. PS图层+移动工具(2)复制删除快捷键 图层分组 前景色填充
  6. 电脑文档出现乱码怎么恢复?文档出现了乱码怎么恢复
  7. 页面加载数学公式,mathjax转html
  8. mysql audit log_Percona Audit Log Plugin(mysql 审计)
  9. 小程序性能和体验优化方法
  10. 用java做考试管理系统,考试管理系统的开发实现(Java+Web)