嗨,我有一个用javascript创建的游戏。 我有一个排行榜,每10个人在游戏中的插座增加一个空间。因此,从第11个人开始,将创建一个不同的房间,而房间1中的排行榜不会在房间2中显示。
现在问题: 当第11个人进入这种类型时会变得混乱。 代码:
users.sort(function (a, b) {
return b.score - a.score;
});
例如:当每个人得分为0时,有8个人显示带字母的姓名
a,b,c,d,e,f,g,h
例如:当每个人得分为0时,有11个人显示带字母的姓名
b,f,c,d,e,a,g,h,i,j,k
并且排序每2秒在0,1和5个索引周围移动。
这只发生在第11个人加入时。 我已经尝试过将每个房间的人数减少到5人,但在第11个人之后仍然很奇怪。 如果有人可以解决这个问题,请告诉我。
更多信息,当一个人连接到一个房间时,他们被推送到一个users []数组,并且应始终位于默认值为0的底部。 如果您需要任何其他信息,请告诉我。
编辑: 该名称与分数相关联。我写了它,以便用户按字母顺序连接。 当用户A连接时,排序应仅以用户A结束。 然后当B连接因为他被推送到users数组时,排序应该是A然后按顺序排列B,当C连接时,同样的事情分别发生。
编辑:用户结构。
var currentPlayer = {
id: socket.id,
level: 1,
x: position.x.round(2),
y: position.y.round(2),
angle: 0,
score: 0,
type: type,
radius: radius,
facing: 0,
room: nameOfRoom,
lastChatSent: 0,
name: ""
};
由于
答案 0 :(得分:2)
假设您有一个人的名字属性。如果分数匹配,则按名称排序,否则按分数排序。
users.sort(function (a, b) {
var equal = b.score == a.score;
if(equal){
return a.Name < b.Name ? -1 : a.Name > b.Name ? 1 : 0;
}
else{
return a.score < b.score ? -1 : a.score > b.score ? 1 : 0
}
});