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中游戏的排行榜/高分的主要内容,如果未能解决你的问题,请参考以下文章