【Q】类和对象:游戏角色开发(角色介绍)
案例情景:某公司要开发新游戏,请用面向对象的思想设计英雄类、怪物类和武器类。
编写测试类,创建英雄对象、怪物对象和武器对象,并输出各自的信息。
其中设定分别如下:
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】类和对象:游戏角色开发(角色介绍)的更多相关文章
- 【Cocos2d-X游戏实战开发】捕鱼达人之单例对象的设计(二)
本系列学习教程使用的是cocos2d-x-2.1.4(最新版为cocos2d-x-2.1.5) 博主发现前两个系列的学习教程被严重抄袭,在这里呼吁大家请尊重开发者的劳动成果, 转载的时候请务必注 ...
- Python游戏引擎开发(五):Sprite精灵类和鼠标事件
本次来实现Sprite类和鼠标事件. 说起这个Sprite啊,涉及过2D游戏研究领域的看官应该都听说过它. 它中文原意是"精灵",只是在不同人的眼中,它所表示的意义不同. 比方说在 ...
- mybatis10 实现类代理对象开发
mapper实现类代理对象开发 要想让mybatis自动创建dao接口实现类的代理对象,必须遵循一些规则: SqlSession sqlSession = sqlSessionFactory.open ...
- 06-03 Java 面向对象思想概述、开发设计特征,类和对象的定义使用,对象内存图
面向对象思想概述.开发设计特征 1:面向对象思想 面向对象是基于面向过程的编程思想. 面向过程:强调的是每一个功能的步骤 面向对象:强调的是对象,然后由对象去调用功能 2:面向对象的思想特点 A:是一 ...
- Python开发基础-Day17面向对象编程介绍、类和对象
面向对象变成介绍 面向过程编程 核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西.主要应用在一旦完成很少修改的地方,如linux ...
- 【iOS开发-72】设置状态栏的两种方式、程序生命周期以及更好地理解几大类(对象)之间的关系
(1)设置状态栏的2种方式 --第一种方式就是我们在控制器中设置,系统默认就是交给视图控制器去管理的,这样不同视图控制器能够自己定义不同的状态栏例如以下: -(BOOL)prefersStatusBa ...
- java开发中的常见类和对象-建议阅读时间3分钟
1.Dao 数据访问对象 此对象用于访问数据库.实现类一般用于用于操作数据库! 一般操作修改,添加,删除数据库操作的步骤很相似,就写了一个公共类DAO类 ,修改,添加,删除数据库操作时 直接调用公共类 ...
- OC开发系列-类与对象
面向对象 面向对象思想是一种解决问题的思想, 不在是面向过程的去思考问题怎样解决.面向对象解决问题时首先要考虑需要找几个对象能解决这个问题. 常见的概念: * Object Oriented 面向对象 ...
- 王者荣耀是怎样炼成的(一)《王者荣耀》用什么开发,游戏入门,unity3D介绍
在国内,如果你没有听说过<王者荣耀>,那你一定是古董级的人物了. <王者荣耀>(以下简称“农药”),专注于移动端(Android.IOS)的MOBA游戏.笔者看到这么火爆,就萌 ...
- 类、对象(java基础知识六)
1.Java约定俗成 java约定俗成 1,类名接口名 一个单词首字母大写,多个单词每个单词首字母都大写 2,方法名和变量名 一个单词全部小写,多个单词从第二个单词首字母大写 建议:如果能用英语尽量用 ...
随机推荐
- 【bzoj1009】: [HNOI2008]GT考试 字符串-kmp-矩阵乘法-DP
[bzoj1009]: [HNOI2008]GT考试 先用kmp写个暴力 /* http://www.cnblogs.com/karl07/ */ #include <cstdlib> # ...
- 简单概括下浏览器事件模型,如何获得资源dom节点
在各种浏览器中存在三种事件模型:原始事件模型,DOM2事件模型,IE事件模型.其中原始的事件模型被所有浏览器所支持,而DOM2中所定义的事件模型目前被除了IE以外的所有主流浏览器支持. 浏览器事件模型 ...
- OOP2(虚函数/抽象基类/访问控制与继承)
通常情况下,如果我们不适用某个函数,则无需为该函数提供定义.但我们必须为每个虚函数都提供定义而不管它是否被用到了,这因为连编译器也无法确定到底会适用哪个虚函数 对虚函数的调用可能在运行时才被解析: 当 ...
- vmware vSphere虚拟网络之标准交换机(二)
一.标准交换机的特点: 1)只能用于物理主机 2)其他主机不能共享同一个虚拟交换机 3)不具备任何灵活性 4)每台ESXi主机都要配置一遍 二.网络图: 三.创建标准交换机: 登录web vCente ...
- 第9项:尽量使用try-with-resources而不是try-finally(Prefer try-with-resources to try-finally)
Java库包含许多必须通过调用close方法手动关闭的资源. 示例包括InputStream,OutputStream和java.sql.Connection. 关闭资源经常被客户忽视,可预见的可 ...
- 5、C++结构体的使用
5.结构体定义 结构体是用户带定义的类型,而结构声明定义了这种类型的数据属性.定义了类型后,便可以创建这种类型的变量,因此创建结构包括两步.首先,定义结构描述——它描述并标记了能够存储在结构中的各种数 ...
- mvc 请求处理管道
原文 http://blog.csdn.net/wulex/article/details/41514795 当一个asp.net mvc应用程序提出请求,为了响应请求,包含一些请求执行流程步骤! 在 ...
- 离散化test
#include<bits/stdc++.h> using namespace std; const int maxn = 1e6+11; int ll[maxn],rr[maxn],ma ...
- HTML中body内常用标签
基本标签 <b>加粗</b> <i>斜体</i> <u>下划线</u> <s>删除<s/> <p& ...
- aoj0121
一.题意:类似于华容道,输入是8个数字,输入虽然是一行,但实际是以两行的方式操作的.0表示空位,别的相邻数字可移动到该位置上.求最少移动步骤得到指定的状态. 二.思路:这题可以用BFS来解决.因为在每 ...