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

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

  其中设定分别如下:

  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. kali linux之主动信息收集(三层发现,四层发现)

    三层发现: 比二层发现的优点即可路由,就是速度比二层慢,相对我们来说还是算快的,经常被边界防火墙过滤 ip icmp协议 OSI七层模型

  2. Django之跨域请求同源策略

    同源策略: 首先基于安全的原因,浏览器是存在同源策略这个机制的,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性. 而如果我们要跳过这个策略,也就是说非要跨域请求,那么就需要通过 ...

  3. 开启和查看mysql的bin-log日志

    [root@VM_0_7_centos data]# vim /etc/my.cnf [root@VM_0_7_centos data]# vim /etc/my.cnf [root@VM_0_7_c ...

  4. The server of Apache (一)——apache服务的基本安装过程

    一.为了避免端口冲突,需要卸载linux系统中以RPM方式安装的httpd ~] # rpm -qa | grep httpd ~] # rpm -e httpd --nodeps (此处nodeps ...

  5. Java_Ant详解(转载)

    Java_Ant详解   1,什么是antant是构建工具2,什么是构建概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个3,ant ...

  6. [hadoop] map函数中使用FileSystem对象出现java.lang.NullPointerException的原因及解决办法

    问题描述: 在hadoop中处理多个文件,其中每个文件一个map. 我使用的方法为生成一个文件,文件中包含所有要压缩的文件在HDFS上的完整路径.每个map 任务获得一个路径名作为输入. 在eclip ...

  7. CentOS7.3托管磁盘虚拟机扩容数据磁盘

    随着托管磁盘的上线,虚拟机支持的单块磁盘容量从1TB到达了4TB,客户对单块磁盘容量的需求量也会变的很大. 操作之前需要重点查看: 由于扩容磁盘的操作非同小可,一旦哪一步出现问题,就会导致分区损坏,数 ...

  8. 在 Mac OS X 10.9 搭建 Python3 科学计算环境

    安装 Homebrew 使用 Homebrew 管理 Python 版本.在 Terminal/iTerm2 输入: $ ruby -e "$(curl -fsSL https://raw. ...

  9. 简述ref与out区别

    1.相同点:两者都是按地址(引用)传递的,使用后都将改变原来参数的数值. 2.区别:ref可以把参数的数值传递进函数,但是out是要把参数清空(声明时不必显示初始化),就是说你无法把一个数值从out传 ...

  10. js new关键字 和 this详解

    构造函数 ,是一种特殊的函数.主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中. 构造函数用于创建一类对象,首字母要大写. 构造函数要和new一起 ...