C# 徽章/成就

C# 徽章/成就,c#,sql-server,C#,Sql Server,我希望实现一个与stackoverflow徽章类似的功能。你也可以把它们等同于在游戏中取得的成就 但是我不知道如何为他们设计数据库/代码/跟踪 我得到了我应该为徽章做的事情,比如: 利他主义者×1456您针对他人问题手动授予的第一笔赏金 因为它们是一次性事件,但如何处理其他事件,例如: 分析×16389访问了常见问题解答的每个部分 选民×1783对600个问题进行了投票,总票数的25%或更多是关于问题的 直言不讳×188在聊天中发布了10条消息,由10位不同的用户主演 等等 如何处理这些问题,如

我希望实现一个与stackoverflow徽章类似的功能。你也可以把它们等同于在游戏中取得的成就

但是我不知道如何为他们设计数据库/代码/跟踪

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

利他主义者×1456您针对他人问题手动授予的第一笔赏金

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

分析×16389访问了常见问题解答的每个部分
选民×1783对600个问题进行了投票,总票数的25%或更多是关于问题的 直言不讳×188在聊天中发布了10条消息,由10位不同的用户主演

等等


如何处理这些问题,如何跟踪每个问题的进展,等等。。。是否有教程或其他东西可以帮助我为他们找到设计模式?

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

我不知道这是怎么做到的,所以,这只是一个解决方案的建议

让我们先看一下“分析性”。当用户访问FAQ中的特定区域时,您必须通过一个简单的标志进行记录。让我们设想一个DB表,其中每个FAQ部分都有一个字段和一个用户ID。它以“N”(或0,或以您希望的方式表示您的标志)开头。当用户访问该区域时,您调用代码将该字段翻转为“Y”。当所有字段均为“Y”时,您可以授予该徽章

至于“选民”和“直言不讳”,你可以通过查询现有数据来检索这些信息,前提是这些查询本身不太繁重。你需要考虑何时运行这些检查。这基本上归结为两种选择

1) 当执行可能获得徽章的操作时(即访问常见问题解答部分,对问题进行投票,其他人提出的问题)

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


记住徽章在StAcExcel中是单向的,所以如果你想等价,那么你就不必考虑逻辑来“不奖励”徽章。< / P>我想我现在明白了。看起来很简单:P只有一个问题——你说使用db表是为了“分析”,但是会有很多类似的徽章,我该如何处理它们呢?我应该为每个徽章使用不同的表格,或者是否有某种方法将其统一到一个表格中?否则我可能会得到很多db表,每种徽章类型一个。。。但是对于答案,这对我朝着正确的方向开始很有帮助。顺便说一句,你的2意味着徽章不会在获得的那一刻获得,对吗?是的,不会有不奖励。如何实施该表取决于您。您可以有一个4列表,其中包含用户id、徽章id、徽章id、标志-这将使其可扩展到多个徽章。而且,是的,这意味着他们不会在取得成就的那一刻获得奖励。当然:)谢谢。我想这解决了我所有的问题。我认为调度检查通常是一种可能性,以减少“赚取”徽章和徽章显示之间的时间间隔。你需要考虑运行检查的费用,“所有的徽章为所有用户每隔一段时间”与“一个徽章为一个用户每次可能符合标准。”这将取决于数量。徽章、用户数量、用户交互频率等。很多徽章/用户会支持选项1,很多交互会支持选项2。