简单PHP游戏化系统

简单PHP游戏化系统,php,sql,Php,Sql,我想用PHP编写一个简单的游戏化系统。如果计数>=5,则给此人奖励。我假设在满足每个操作后,我将向数据库中输入一个编号代码。然后我可以让一个成就框把每一个代码拉出来,并显示匹配的徽章 看起来很简单,但我有个问题。当我获得一枚徽章时,我怎么能只提醒一个人一次呢?有没有人对每个徽章的价值分配点数有什么想法,可能还会对其他行动分配点数?我是否可以将所有点数作为单个数字输入一个数组,然后在sep sql调用中将它们全部相加以显示总点数 我希望我理解了你的意思。我认为最简单的方法是实施一个“级别”式的奖励

我想用PHP编写一个简单的游戏化系统。如果计数>=5,则给此人奖励。我假设在满足每个操作后,我将向数据库中输入一个编号代码。然后我可以让一个成就框把每一个代码拉出来,并显示匹配的徽章


看起来很简单,但我有个问题。当我获得一枚徽章时,我怎么能只提醒一个人一次呢?有没有人对每个徽章的价值分配点数有什么想法,可能还会对其他行动分配点数?我是否可以将所有点数作为单个数字输入一个数组,然后在sep sql调用中将它们全部相加以显示总点数

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

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

  • 奖项表(所有注册奖项)
  • 用户奖励表
  • 用于记录存储唯一id的点、用户id、点计数以及用户获取点的事件的表
然后,只需执行一个跨表sql选择,通过简单的基本操作即可显示一个用户或一类用户的点:

SUM(point awards for the user) - SUM(points for awards received by user).
我已经有一段时间没有编写这样的SQLSELECT语句了,但这并不难,完全可以完成。这将类似于:

SELECT a.userId,(SUM(a.points) - SUM(b.points_spent)) as 'currentPoints' FROM Awards a, Spendings b WHERE a.userId = b.userID
这句话还没有经过测试,可能是完全错误的,但这是我目前所能记得的。该语句应返回每个用户的id和相应的消费点。如果您提供数据库设计,我可以提供一个完整和正确的选择声明


希望这有帮助,干杯

您应该在数据库中创建一个新的“通知用户”字段。这不是php问题。先构建应用程序的第一部分,然后再考虑其他问题。这些问题通常会在您编写代码时自行解决,这是一个PHP问题。数据存储在数据库中,并通过php返回。如果只想提醒一个人一次,最好从
DataMappers
开始,然后将该人是否被提醒的信息存储在某个位置。它可能只是表中的一个数字,比如
1
-被提醒,
0
-没有。然后您可以通过
PDO
获取它,并通过basic
if/else
conditions处理其余的问题好的提示,谢谢您的反馈。您建议如何存储积分。我应该重新计算并替换一行中的旧点值,还是每次他们获得分数时都存储一行新点值?实现总是有两个方面:内存或功能。如果您希望获得有关用户活动的详细历史记录,以帮助您发现欺诈行为,则应将每个奖励存储为单独的实体(行)。我建议你这样做。另一方面,如果您不需要用户数据和历史记录(但我很确定您现在需要它,或者在扩展站点时需要它),那么您可以使用单字段方法。同样,我建议您使用一个独特的表格,其中包含我在回答中指定的用户奖励。祝你好运!:)