0

我想用 PHP 编写一个简单的游戏化系统。If count >= 5 之类的事情,然后给这个人一个奖励。我假设一旦满足每个操作,我就会将编号代码输入数据库。然后我可以让成就框拉出每个代码并显示匹配的徽章。

看起来很简单 - 但我有一个问题。在获得徽章后,我如何只提醒一个人一次?任何人都有任何想法为每个徽章价值分配积分,并可能指向其他行动?我是否只需将所有点作为单独的数字输入到数组中,然后在 sep sql 调用中将它们全部加起来以显示总点数?

4

1 回答 1

2

我希望我已经明白你的意思了。我认为最简单的方法是实现一个类似“级别”的奖励系统。只需将总点数保存为用户字段(用户表中名为“点”的列),并在每次增加后检查用户是否有资格获得新奖励。

如果你想给用户多种类型的奖励,而不是按照特定的顺序,你需要基于这个结构开发一个系统:

  • 奖项表(所有已注册的奖项)
  • 授予用户的奖励表
  • 用于记录您存储唯一 id、用户 id、点数和用户获得点的事件的点的表

然后,您只需执行一个跨表 sql 选择,通过简单地执行基本操作来显示用户或用户类别的点数:

SUM(point awards for the user) - SUM(points for awards received by user).

好久没有写出这样的SQL select语句了,不过并不难,完全可以做到。这将是类似的东西:

SELECT a.userId,(SUM(a.points) - SUM(b.points_spent)) as 'currentPoints' FROM Awards a, Spendings b WHERE a.userId = b.userID

这个说法没有经过测试,可能是完全错误的,但这是我现在所能记得的。该语句应返回每个用户的 id 和相应的消费点数。如果您提供数据库设计,我可以提供完整且正确的选择声明。

希望这会有所帮助,干杯!

于 2013-09-24T23:40:07.793 回答