一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1042|回复: 3
收起左侧

[编程题] 【求助】求教POCKET GEMS必考题【成就系统设计】

[复制链接] |试试Instant~ |关注本帖
ryuichist 发表于 2015-5-7 15:06:29 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
如题,求教地里面的各位战友。LZ下周要ONSITE了,虽然把题库都准备了,但是还是比较紧张。
地里虽然面经很多,但是关于成就系统设计都只有大概的概念,没有具体的code。希望各位面试过的战友不吝赐教!

大概的框架是这样的,会有一个player class,然后会有achievement class,然后会有2个接口,分别是requirement 和reward。
我写好了requirement如下
public interface requirement(){
  public boolean isMet(Player player);
}
每个新的requirement只需要实现这个接口就是了

但是没想出来reward这个接口怎么实现,求指点!
SudanRed 发表于 2015-5-12 16:20:59 | 显示全部楼层
然而lz连接口定义都写错了。。。尼玛怎么还有()在上面
以下是我的脑洞 我撸过类似的系统
其实LZ描述的我觉得太苍白, 我就默认player 和 achievement 算是beans 好了, 我猜player里面应该有个list一样的元素 来记录一个玩家有多少成就,可以猜到数据库里两个表什么样子了。。。然而这并没有什么卵用,我想说的是player里“包涵”(这个词并不专业和准确)achievement
那么requirement if里应该有一个addAch()这样的方法 或者你直接压在isMet里也行 一旦判断出符合就添加进去到player的列表里
我们玩游戏知道,reward可能由一个或者多个!成就组成 比如WOW好了,你拿成就龙是一个大成就由多个小成就组成,但这也不绝对化,不管有没有大成就,小成就的堆积是不可少的。
所以本着这种思想,
public interface requirement{
  public boolean isMetAdd(Player player); //如果满足就直接添加
public  boolean    combination(Player player);//组合成大的成就  我觉得这一步有些繁琐,在isMetAdd里面就可以整合了 如果没有整合的就返回false
}
public interface reward{
public void createReward(Player player); //读取玩家成就列表 给出响应的奖励 技能点 道具 经验证什么的肯定是直接加到player对象身上的



}




reward 就是你有什么成就拿什么奖品
需要注意的是可能

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

SudanRed 发表于 2015-5-12 16:23:31 | 显示全部楼层
public class player{
private List<achievement >  achievements;
get() set()两基佬

...
...
..
}
回复 支持 反对

使用道具 举报

小核桃桃 发表于 2016-10-9 03:53:41 | 显示全部楼层
小伙伴你好~我想请问一下你pocket gems 那道成就系统设计还大概记得有什么要求,要怎么做么?(因为看大多数面经写的都有点笼统。。)因为刚拿到了onsite 虽然大家都说不靠谱还是想试试。。。然而这道题完全木有思路。。。恭喜你拿到亚麻得offer啊!打扰了~谢谢!
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-9 08:32

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表