嗨,我有一个用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因为被推到用户数组而连接时,排序应该是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: ""
};
感谢
假设您有一个人的name属性。如果分数匹配,则按名称排序,否则按分数排序。
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
}
});