徽章/成就

时间:2012-04-05 12:11:30

标签: c# sql-server

我正在寻找与stackoverflow徽章类似的东西。你也可以把它们等同于游戏中的成就。

但我不确定如何为他们设计数据库/代码/跟踪

我得到了我应该为徽章做的事情,例如:

  

利他主义者×1456你在另一个人的问题上手动判给的第一笔赏金

因为它们是一次性事件,但如何处理其他事件,例如:

  

Analytical×16389访问常见问题解答的每个部分    选民×1783投票的600个问题和25%或以上的总票数是问题    直言不讳×188在10个不同用户主演的聊天中发布了10条消息

等...

如何处理它们,如何跟踪每个的进度等等...是否有一个教程或某些东西可以帮助我找出它们的设计模式?

1 个答案:

答案 0 :(得分:17)

对于给定的示例,您基本上需要两种机制。

我不知道它是如何在SO上完成的,这只是一个解决方案的建议。

让我们先看看'分析'。当用户访问FAQ中的特定区域时,您将必须通过简单标记进行记录。让我们设想一个DB表,每个FAQ部分都有一个字段和一个用户ID。这开始时为“N”(或0,或者你想要代表你的旗帜)。当用户访问该区域时,您调用代码将该字段翻转为“Y”。当所有字段均为“Y”时,您可以授予该徽章。

对于“选民”和“直言不讳”,您可以通过查询现有数据来检索此信息,假设查询不是太繁琐。您将需要考虑何时运行这些检查。这基本上归结为两种选择。

1)执行可能获得徽章的行动时(即访问常见问题部分,投票问题,由其他人主演的问题)

2)定期(每小时,每天等)根据当前数据检查所有徽章。

请记住,徽章在Stackoverflow中是单向的,所以如果你想要相同,那么你就不必考虑逻辑来“取消”徽章。