案例情景:某公司要开发新游戏,请用面向对象的思想设计英雄类、怪物类和武器类。

  编写测试类,创建英雄对象、怪物对象和武器对象,并输出各自的信息。

  其中设定分别如下:

  1.英雄类

    属性:英雄名字、生命值。

    方法:输出基本信息。

  2、怪物类

    属性:怪物名字、生命值、类型。

    方法:输出基本信息。

  3.武器类

    属性:武器名字、攻击力。

    方法:输出基本信息。

一、创建实体类

  1.我们已经学过抽象类和继承,所有我们可以从高一层的角度来设计实体类(首先根据各种角色所具有的共同的特征抽象出一个抽象类)

    抽象的角色类:

 /**
* 游戏角色:抽象类
*
* @author Administrator
*
*/
public abstract class Role {
private String role;// 角色名称
private String name;// 角色姓名
// 封装属性 public String getRole() {
return role;
} public void setRole(String role) {
this.role = role;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} // 介绍方法
public abstract void showInfo();
}

  2.继承抽象类,创建三个具体的角色类

    (1)英雄类

 /**
* 英雄类
*
* @author Administrator
*
*/
public class Hero extends Role {
private int health;// 健康值 public Hero() {
super();
this.setRole("英雄");
this.setName("李小侠");
this.setHealth(300);
} @Override
public void showInfo() {
System.out.println("我是" + this.getRole() + ",我的基本信息如下:\n姓名:" + this.getName() + ",生命值:" + this.getHealth());
} public int getHealth() {
return health;
} public void setHealth(int health) {
this.health = health;
} }

    (2)武器类

/**
* 武器类
*
* @author Administrator
*
*/
public class Weapons extends Role {
private int attack;// 攻击力 public Weapons() {
super();
this.setRole("武器");
this.setName("死亡镰刀");
this.setAttack(12);
} @Override
public void showInfo() {
System.out.println("我是" + this.getRole() + ",我的基本信息如下:\n武器名:" + this.getName() + ",攻击力:" + this.getAttack());
} public int getAttack() {
return attack;
} public void setAttack(int attack) {
this.attack = attack;
} }

    (3)怪物类

/**
* 怪物类
*
* @author Administrator
*
*/
public class Monster extends Role {
private int health;// 健康值
private String type;// 类型 public Monster() {
super();
this.setRole("怪物");
this.setName("小龟");
this.setHealth(300);
this.setType("潜水类");
} public int getHealth() {
return health;
} public void setHealth(int health) {
this.health = health;
} public String getType() {
return type;
} public void setType(String type) {
this.type = type;
} @Override
public void showInfo() {
System.out.println("我是" + this.getRole() + ",我的基本信息如下:\n姓名:" + this.getName() + ",生命值:" + this.getHealth()
+ ",类型:" + this.getType()); } }

二、创建测试类(主类:角色介绍)

  方法的调用:在主方法创建角色实例,用实力对象调用方法

/**
* 游戏角色介绍测试类
*
* @author Administrator
*
*/
public class Main { public static void main(String[] args) {
// 创建角色实例
Hero hero = new Hero();
Weapons weap = new Weapons();
Monster monster = new Monster();
// 角色介绍
hero.showInfo();
weap.showInfo();
monster.showInfo(); } }

三、测试修改Bug最终展示

  效果如下图:

【Q】类和对象:游戏角色开发(角色介绍)的更多相关文章

  1. 【Cocos2d-X游戏实战开发】捕鱼达人之单例对象的设计(二)

    本系列学习教程使用的是cocos2d-x-2.1.4(最新版为cocos2d-x-2.1.5)    博主发现前两个系列的学习教程被严重抄袭,在这里呼吁大家请尊重开发者的劳动成果, 转载的时候请务必注 ...

  2. Python游戏引擎开发(五):Sprite精灵类和鼠标事件

    本次来实现Sprite类和鼠标事件. 说起这个Sprite啊,涉及过2D游戏研究领域的看官应该都听说过它. 它中文原意是"精灵",只是在不同人的眼中,它所表示的意义不同. 比方说在 ...

  3. mybatis10 实现类代理对象开发

    mapper实现类代理对象开发 要想让mybatis自动创建dao接口实现类的代理对象,必须遵循一些规则: SqlSession sqlSession = sqlSessionFactory.open ...

  4. 06-03 Java 面向对象思想概述、开发设计特征,类和对象的定义使用,对象内存图

    面向对象思想概述.开发设计特征 1:面向对象思想 面向对象是基于面向过程的编程思想. 面向过程:强调的是每一个功能的步骤 面向对象:强调的是对象,然后由对象去调用功能 2:面向对象的思想特点 A:是一 ...

  5. Python开发基础-Day17面向对象编程介绍、类和对象

    面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux ...

  6. 【iOS开发-72】设置状态栏的两种方式、程序生命周期以及更好地理解几大类(对象)之间的关系

    (1)设置状态栏的2种方式 --第一种方式就是我们在控制器中设置,系统默认就是交给视图控制器去管理的,这样不同视图控制器能够自己定义不同的状态栏例如以下: -(BOOL)prefersStatusBa ...

  7. java开发中的常见类和对象-建议阅读时间3分钟

    1.Dao 数据访问对象 此对象用于访问数据库.实现类一般用于用于操作数据库! 一般操作修改,添加,删除数据库操作的步骤很相似,就写了一个公共类DAO类 ,修改,添加,删除数据库操作时 直接调用公共类 ...

  8. OC开发系列-类与对象

    面向对象 面向对象思想是一种解决问题的思想, 不在是面向过程的去思考问题怎样解决.面向对象解决问题时首先要考虑需要找几个对象能解决这个问题. 常见的概念: * Object Oriented 面向对象 ...

  9. 王者荣耀是怎样炼成的(一)《王者荣耀》用什么开发,游戏入门,unity3D介绍

    在国内,如果你没有听说过<王者荣耀>,那你一定是古董级的人物了. <王者荣耀>(以下简称“农药”),专注于移动端(Android.IOS)的MOBA游戏.笔者看到这么火爆,就萌 ...

  10. 类、对象(java基础知识六)

    1.Java约定俗成 java约定俗成 1,类名接口名 一个单词首字母大写,多个单词每个单词首字母都大写 2,方法名和变量名 一个单词全部小写,多个单词从第二个单词首字母大写 建议:如果能用英语尽量用 ...

随机推荐

  1. 转载智能家居 作者:热情的沙漠 出处:http://www.cnblogs.com/buptzym/

    理工男打造帝都89平智能家庭   毕业后的2016年年初,搬入新家,总算不用在出租屋里鬼混了,于是就想把之前童年的梦想:智能家居+家庭影院好好实现一下~ 相比帝都高昂的房价,这些东东还凑合玩得起,不过 ...

  2. winform未能加载Interop.WMPLib

    找到这个引用,然后移除既即可以

  3. [Swift]八大排序算法(三):选择排序 和 简单选择排序

    排序分为内部排序和外部排序. 内部排序:是指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列. 外部排序:指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存 ...

  4. [HNOI2004]树的计数 BZOJ 1211 prufer序列

    题目描述 输入输出格式 输入格式: 输入文件第一行是一个正整数n,表示树有n个结点.第二行有n个数,第i个数表示di,即树的第i个结点的度数.其中1<=n<=150,输入数据保证满足条件的 ...

  5. ansible基本模块-cron

    ansible   XXX   -m   cron   -a   "name=‘XXX ’   job=‘执行的命令’   minute=XXX "                ...

  6. 【算法笔记】B1028 人口普查

    1028 人口普查 (20 分) 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过 2 ...

  7. 查找表,Two Sum,15. 3Sum,18. 4Sum,16 3Sum Closest,149 Max points on line

    Two Sum: 解法一:排序后使用双索引对撞:O(nlogn)+O(n) = O(nlogn) , 但是返回的是排序前的指针. 解法二:查找表.将所有元素放入查找表, 之后对于每一个元素a,查找 t ...

  8. python-%操作符

    1.打印字符串 print("His name is %s"%("Aviad")) His name is Aviad 2.打印整数print("He ...

  9. Aop之使用Castle动态代理实现对方法的拦截

    using System; using System.Linq; using Castle.DynamicProxy; namespace AopTest { class AopTest { stat ...

  10. 前端PostJosn,后端转化相应的类

    /// <summary> /// JsonPost特性类 /// </summary> [AttributeUsage(AttributeTargets.Method, In ...