【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,方法名和变量名 一个单词全部小写,多个单词从第二个单词首字母大写 建议:如果能用英语尽量用 ...
随机推荐
- 【bzoj2140】: 稳定婚姻 图论-tarjan
[bzoj2140]: 稳定婚姻 哎..都是模板题.. 一眼看过去 哇 二分图哎 然后发现好像并不能匈牙利算法 自己xjb画两张图,发现二分图左向右连配偶的边,然后右向左连交往过的边 然后如果Bi G ...
- 【spring cloud】并发测试问题
一,问题 并发测试,对外接口测试50个并发的时候开发报错,报错信息类似如下: {"status":"0500","message":&qu ...
- SpringMVC中静态文件的引用
1.在WebRoot目录下创建 resources文件,里面可以放入css文件 2.在SpringMVC中的配置文件dispatcherServlet-servlet.xml中加入 <!-- 将 ...
- Python3之random模块
一.简介 ramdom模块提供了一个随机数的函数:random() 它可以返回一个随机生成的实数,范围在[0,1)范围内.需要注意的是random()是不能直接访问的,需要导入模块random才可以使 ...
- 三种timer控件的简单实例
.system.windows.forms .system.threading.timer .system.timers.timer using System; using System.Collec ...
- Android 程序调试技巧汇总
1.Android Studio 引入一个项目作为library https://www.cnblogs.com/lixiangyang521/p/7453322.html 2.Android Stu ...
- CSS3 选择器 修改 整数个样式
.blogbottom ul li:nth-child(4n){margin-right:0px;} 说明:4n就是每第4个.
- [BZOJ 5330][SDOI2018] 反回文串
传送门 怎么说呢,一道不可多得的反演题吧,具体解释之后再补 #include <bits/stdc++.h> using namespace std; #define rep(i,a,b) ...
- C# 由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值。这个错误是什么原因引起的?
C# 由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值.这个错误是什么原因引起的? 2011-12-17 22:45 提问者: 匿名|浏览次数:6056次 我来帮他解答 图片 符号 ...
- java语言的各种输入情况-ACM
1.只输入一组数据: Scanner s=new Scanner(System.in);int a=s.nextInt();int b=s.nextInt(); 2.输入有多组数据,没有说明输入几组数 ...