我正在开发一款小游戏(我正在使用 Play!framework )。
在这个游戏中,玩家回答技术问题,并在他们正确回答时赢得积分。 除此之外,他们可能会赢得一些奖项,这些奖项会增加额外的积分。 这类似于SO徽章,除了玩家赢得奖励积分。
我想知道存储用户分数和历史记录的最佳方法是什么,特别是因为我希望能够显示上周,上个月的“热门玩家”等。? 这些“上衣”将类似于“SO中的周声誉排名”(例如:https://stackoverflow.com/users?tab=reputation&filter=week)
今天,我有:
User
实体,其中我有一个score
属性,用于存储用户的当前分数; QuestionHistory
实体,我在其中提出了用户回答的每个问题,其中包含以下属性:user
,answeredOn
,correctAnswer
等。(我可以添加pointsAwarded
,但目前,所有问题都会给出相同数量的分数。)感谢QuestionHistory
实体,我可以计算一个玩家在给定时间段内赢得的分数。
但是,它不包括奖项所获得的分数。
我正在考虑将QuestionHistory
实体替换为另一个实体,例如UserActivity
,它将为此用户存储任何活动:
此实体的结构可能如下所示:
@Entity
public class PlayerActivity extends Model {
public User user;
public Date activityDate;
public ActivityType type; // Define the type of activity: "QUESTION_ANSWERED", "AWARD_RECEIVED", "QUESTION_SUBMITTED", etc.
public int score; // Points won by this activity.
}
通过这样的实体,我还可以显示活动历史记录,例如SO网站上提供的活动历史记录(例如:https://stackoverflow.com/users/22656/jon-skeet?tab=activity)
你如何看待这个新命题,或者有什么方法可以做到这一点?
答案 0 :(得分:0)
我认为这绝对是计算积分的更好方法,因为您正在管理事件,并且如果您想扩展奖励用户的活动,您就是“未来证据”。
是的,可能你会发现更复杂的设计来做到这一点。但你建议的那个很简单,它有效,所以...去吧:)。