游戏的用户必然分多种,有不同的权限,也有不同的属性,大致可以分为ANONYMOUS即匿名用户,代表的是进入官网却没有游戏账号的游客,PLATFORM即平台用户,代表的是有游戏账号但是没有进入游戏或没有激活游戏的用户,GAMEUSER即游戏用户,代表的是已经激活游戏并且已有游戏记录的用户。而这些用户类别用什么数据类型来存储比较方便呢?经过一段时间的讨论想到了用一个enum来存放这些不同的用户。然而在认证用户过程中需要分清这些用户的具体角色,这时可以将这个enum定义在一个认证接口中,这个接口负责获得用户的之前登录时间和登录ip,当前游戏中登录时间和ip,当前用户的角色类型(返回之前定义的那个enum)。接着实现这个接口进行用户角色的具体判断(可以通过玩家是否持有账号id来判断),如果账号id为null或者intValue()<=0,则可以返回匿名用户,如果存在账号id则继续判断是否存在玩家的游戏账号,如果不存在则为平台用户,反之则为游戏用户。当然这个实现类需要实现Comparable类,以便进行类之间的比较。那么这个实现类里的一些方法如何实现呢?比如玩家的登录时间和登录ip如何获取呢?这时需要定义一个pojo类来封装用户可能会用到的属性,比如账号名,账号id等等信息。并且可以在这个实现类的构造方法中初始化这些属性值。但是问题又出现了,当用户具有账号id,还有比如游戏区id,比如俱乐部id,这些id难道都用一个get<T>Id()(这里的写法是自己为了方便这样写的,意思是获取各类id)来获得吗?这时就会觉得代码不简洁,这时想到的是在使用一个pojo类来封装这些id属性,而在那个用户基本属性的pojo类中定义的getId()方法返回的是这个封装id的pojo类,这时就可以在那个实现类的构造方法里使用getId().get<T>Id()来获得具体的某一中id了。当然这时在封装各类id的pojo类中的hashCode()方法和equals()方法就需要操作所有的id了。如equals方法如下:
public boolean equals (Object obj) {
if (null == obj) return false;
if (!(obj instanceof 本类)) return false;
else {
本类 mObj = (本类) obj;
if (null != this.get<T>Id() && null != mObj.get<T>Id()) {
if (!this.get<T>Id().equals(mObj.get<T>Id())) {
return false;
}
}
else {
return false;
}
if (null != this.get<T'>Id() && null != mObj.get<T'>Id()) {
if (!this.get<T'>Id().equals(mObj.get<T'>Id())) {
return false;
}
}
else {
return false;
}
return true;
}
}
hashCode()方法如下:
public int hashCode () {
if (Integer.MIN_VALUE == this.hashCode) {
StringBuilder sb = new StringBuilder();
if (null != this.get<T>Id()) {
sb.append(this.get<T>Id().hashCode());
sb.append(":");
}
else {
return super.hashCode();
}
if (null != this.get<T'>Id()) {
sb.append(this.get<T'>Id().hashCode());
sb.append(":");
}
else {
return super.hashCode();
}
this.hashCode = sb.toString().hashCode();
}
return this.hashCode;
}
当然还需要toString()方法和compareTo()方法。其实这些方法都可以使用apache common包提供的相应类来处理。
分享到:
相关推荐
游戏开发资源直接打开unitypackage即可在Unity中使用,还包含一个示例场景。 也可以用Blender打开原始模型进行编辑。
Cocos2d-x 3.2 大富翁游戏项目开发-第八部分 角色按路径行走
【大秦online端游】大秦全套游戏源码--战争策略角色扮演游戏
Cocos2d-x 3.2 大富翁游戏项目开发-第十部分实现人物轮流行走
Unity动作游戏-动作设计及实现-穿比基尼和校服的女孩动作控制与奔跑漫游源码-比基尼游戏角色控制 Unity精品小游戏源码 , Unity完整项目源码 是Unitypackage包 , 新建空项目直接导入到项目里面就可以运行了,无需其他...
Unity和C#-游戏开发-多角色fps射击游戏+源代码工程
NULL 博文链接:https://daikainan.iteye.com/blog/1406990
12--[绘制角色法(scratch画圆)].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码12--[绘制角色法(scratch画圆)].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码12--[绘制角色法(scratch画圆)...
238阴阳师SSR-3Dmax角色模型合集,超精美堪比官方。内附贴图
Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_3
Cocos2d-x 3.2 大富翁游戏项目开发-第七部分 获取角色路径_1
Cocos2d-x 3.2 大富翁游戏项目开发-第十一部分 提升角色行走体验
RPG手机游戏的角色图片资源,对手机游戏开发有所帮助!!
第13角色扮演类游戏开发 本章学习要点: 掌握游戏的流程和结构 掌握游戏的具体实现掌握 Java-ME-程序设计第13角色扮演类游戏开发全文共5页,当前为第1页。 游戏创意 游戏中的道具包括:旋转的石头、火龙、水龙、魔法...
WCF RIA 服务 (三十五)-- 身份验证、角色、个性化 6
三维游戏角色造型设计-姚子杰.pdf
游戏中幼儿的深度学习及教师的指导策略--以大班角色游戏为例.pdf
网络游戏-游戏角色格斗过程的可视化编辑方法及编辑器.zip
(1)手型工具 (2)移动工具 (4)缩放工具 (5)矩形工具 (6)操作工具 (7)定制编辑器工具
游戏开发核心技术:剧本与角色 设计游戏,就是设计一个虚拟世界。这个世界是否吸引人,很大程度上取决于剧本和角色的创造。本书旨在教授专业游戏开发人员学会将故事叙事方法和游戏玩法结合起来,从而创作出更加复杂...