gpt4 book ai didi

php - 按排名为多场比赛的玩家分配积分

转载 作者:行者123 更新时间:2023-11-29 19:06:17 25 4
gpt4 key购买 nike

我正在构建一个多游戏锦标赛记分板,许多玩家可以多次玩很多游戏。我想根据每场比赛的排名而不是他们的实际得分来为每场比赛的玩家分配分数。

例如

大金刚

Rank | Player  | Score  | Points Awarded    
1 | Player2 | 34,000 | 1,000
2 | Player1 | 32,000 | 999
3 | Player3 | 29,000 | 998

机器人机器人

Rank | Player  | Score  | Points Awarded    
1 | Player1 | 39,000 | 1,000
2 | Player3 | 32,000 | 999
3 | Player2 | 21,000 | 998

锦标赛排名

Player1 - 1,999 Points

Player2 - 1,998 Points

Player3 - 1,997 Points

到目前为止,我的排名和积分计算工作得很好......

SELECT 
`id`,
`userID`,
`gameID`,
`gamescore`,
`rank`,
1001.0 - (rank) AS points
FROM (
SELECT
`id`,
`userID`,
`gameID`,
`gamescore`,
@curr_rank := IF(@prev_rank = id, @curr_rank, @curr_rank + 1) AS rank,
@prev_rank := id
FROM
`submit_score`,
(SELECT @curr_rank := 0) y,
(SELECT @prev_rank := NULL) z
WHERE `submit_score`.`tournID` = 2
ORDER BY `gamescore` DESC
) ranked_game;

但我需要能够按每场比赛的排名分配分数,然后为每个玩家提供总计分数,然后将其显示在列表中。

最佳答案

你的数据库应该看起来像

玩家

ID | Player Nickname
1 | Player1
2 | Player2
3 | Player3

大金刚

PlayerID  | Score  
Player2ID | 34,000
Player1ID | 32,000
Player3ID | 29,000

机器人机器人

PlayerID  | Score 
Player1ID | 39,000
Player3ID | 32,000
Player2ID | 21,000

数据库只能用于存储数据。排名和奖励积分应移至代码中,因为这些是多余的部分。

然后使用分数列上的 desc 排序查询每个表。这将创建排名表,其中得分最高的球员为#1等。检索数据存储在每个游戏的数组中,键->值,其中键将是排名#(1+增量),值可以是包含存储的玩家数据的其他数组(连接后)和一个分数或一个字符串,例如 PlayerX | Score# 如果您需要任何得分数据,因为实际上您只需要对每场比赛的得分进行排序的玩家数据。

之后,您需要循环遍历玩家表并创建一个玩家数组,您将在其中存储从循环每个游戏数组中检索到的锦标赛积分,并减少每个排名的锦标赛积分并分配给适当的玩家。

希望对你有帮助

PS。对于现有数据,我将创建类似

的 View
set @max_points=1000;
select Rank, Player,
@current_points := IF(Rank = 1, @max_points, @current_points-1) AS points
from DonkeyKong

每场比赛

然后进行最终查看以总结所有锦标赛积分

select dk.Player AS Player,(dk.Points + ro.Points) AS Total 
from RO_view AS ro
left join DK_view AS dk
on dk.Player = ro.Player

关于php - 按排名为多场比赛的玩家分配积分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43478977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com