PHP中游戏的排行榜/高分

Posted

技术标签:

【中文标题】PHP中游戏的排行榜/高分【英文标题】:Leaderboard/Highscore for game in PHP 【发布时间】:2016-10-21 20:21:46 【问题描述】:

我的 php 排行榜有问题,我需要为使用我的程序的人创建排行榜。

程序将分数发送到数据库,然后在单独的页面上显示选定玩家的所有游戏分数。 24 小时后将从数据库中清除分数。我需要的是在用于发送游戏分数的同一 php 中使用另一个数据库(我已经拥有)。但相反,新功能应该将分数发送到其他数据库(不会清理分数)。

该函数应该仅在播放的用户不存在时在数据库中添加一个新行。如果玩家存在并且分数已发送,我希望将分数添加到同一列并计算它们(总和)。

例如:一名玩家获得 10 次击杀和 10 次死亡。他玩新游戏,他的得分是 5 杀和 5 死。数据库将自动将该分数与前一个分数相加,这将导致他的 DB 列从 10 杀和 10 死亡变为 15 杀和 15 死亡(数学/总和/加法或 w/e 你称之为 5 杀和 5 死亡) .那么有没有办法我可以做到这一点?排行榜的目的不是显示用户的最高得分,而是显示他一直以来的总击杀数和总死亡数。

有什么建议吗?

【问题讨论】:

我建议让它看起来不像一堵文字墙,并提供您需要帮助的代码的具体问题。 开始建议:展示你已经尝试过的内容 没有代码问题,只是不知道怎么办。我需要某种函数将值插入将计算分数的数据库列。如果 tehre 是一个分数,只需将其相加,例如 10 次击杀 - 旧分数 5 次击杀 = 新分数,因此它应该在数据库中为玩家列更改为 15 次击杀。 而不是尝试更新总和...只需为每个游戏插入新记录,然后您可以按用户分组并获得总和。 你能举个例子吗? 【参考方案1】:

而不是做这个伪:

场景 1:

// user exists
// determine current score
// update user, current score + new game score

场景 2:

// user does not exist
// insert user with new game score

在这里,您尝试使用最新的总数更新单行。虽然这绝对可以做到,但只要你对一个组没问题,它就可以更简单地完成,并且实际上跟踪所有游戏,而不仅仅是统计数据的总和。您可以获取各个部分的总统计数据。

游戏记录:

playId int primary key identity
userId int
deaths int
kills int

用户之前是否有过“GameRecord”并不重要。

-- Game 1
insert into GameRecord (userId, deaths, kills)
values (42, 0, 5)

-- Game 2
insert into GameRecord (userId, deaths, kills)
values (42, 1, 5)

-- Game 3
insert into GameRecord (userId, deaths, kills)
values (1, 0, 1)

有了这些数据,你只是在记录每场比赛,而不是保持“滚动总数”。然后您可以执行以下操作:

select    
          userId,
          count(1) as totalGamesPlayed,
          sum(deaths) as totalDeaths,
          sum(kills) as totalKills
from      GameRecord
group by  userId

返回:

userId     totalGamesPlayed     totalDeaths     totalKills
42         2                    1               10
1          1                    0               1     

【讨论】:

嘿,谢谢,它很有用,但因为我已经想出了这个:prntscr.com/bisq3n 几分钟前。但是还有一个问题,如何通过 sum 函数对其进行排序?它看起来像这样:prntscr.com/bisr11 基本上我希望拥有最大 Kills 总数(即 $qty)的用户位于 #1 表位置 没关系,我使用了你的步骤,然后使用了 ORDER BY totalKills DESC 非常感谢。

以上是关于PHP中游戏的排行榜/高分的主要内容,如果未能解决你的问题,请参考以下文章

如何用swift在游戏中心报告高分

游戏中心排行榜得分移除

MySQL查询高分排行榜的问题

将分数发布到 Game Center 排行榜

Game Center 排行榜能否支持类似“技能等级”的系统?

如何在 Google Play 游戏服务中获取排行榜和成就信息