查看: 3303| 回复: 3
跳转到指定楼层
上一主题 下一主题
收起左侧

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

全局:

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

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

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

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

但是没想出来reward这个接口怎么实现,求指点!

上一篇:T家数学题
下一篇:对于想破脑袋都不会的题目怎么办?
🔗
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大米 +1 收起 理由
RpiJerk + 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啊!打扰了~谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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