Javascript 在线angular.js游戏评级系统

Javascript 在线angular.js游戏评级系统,javascript,rating-system,Javascript,Rating System,我正在开发一个用Angular js构建的在线游戏门户。我希望我的球员在赢/输一场比赛时获得更高的评分。我如何实现这一点?如果能让它在纯JS中工作,那么我认为它可以适应我的应用程序。要勾勒出我想要的: var players = [ { id: 1, name: "James", rating: 100 }, { id: 2, name: "Matt", rating: 200 }, { id: 3, name: "Tara" rating: 300 ] UpdateRating = fun

我正在开发一个用Angular js构建的在线游戏门户。我希望我的球员在赢/输一场比赛时获得更高的评分。我如何实现这一点?如果能让它在纯JS中工作,那么我认为它可以适应我的应用程序。要勾勒出我想要的:

var players = [
{
id: 1,
name: "James",
rating: 100  
},
{
id: 2,
name: "Matt",
rating: 200
},
{
id: 3,
name: "Tara"
rating: 300
]
UpdateRating = function(winnerId, LoserId){
   //changes these players ratings
}

通过你的球员循环。如果ID与给定ID之一匹配,则更新评级

function updateRating(winnerId, loserId) {
    for (var i = 0; i < players.length; i++) {
        var p = players[i];
        if (p.id == winnerId) {
            p.rating++;
        } else if (p.id == loserId) {
            p.rating--;
        }
    }
}
函数更新(winnerId、loserId){
对于(变量i=0;i

如果将
players
作为一个对象,其键是player ID,或者使用player ID作为数组的索引,则会更简单。这样你就不需要一个循环。

通过你的玩家循环。如果ID与给定ID之一匹配,则更新评级

function updateRating(winnerId, loserId) {
    for (var i = 0; i < players.length; i++) {
        var p = players[i];
        if (p.id == winnerId) {
            p.rating++;
        } else if (p.id == loserId) {
            p.rating--;
        }
    }
}
函数更新(winnerId、loserId){
对于(变量i=0;i

如果将
players
作为一个对象,其键是player ID,或者使用player ID作为数组的索引,则会更简单。这样你就不需要一个循环。

通过你的玩家循环。如果ID与给定ID之一匹配,则更新评级

function updateRating(winnerId, loserId) {
    for (var i = 0; i < players.length; i++) {
        var p = players[i];
        if (p.id == winnerId) {
            p.rating++;
        } else if (p.id == loserId) {
            p.rating--;
        }
    }
}
函数更新(winnerId、loserId){
对于(变量i=0;i

如果将
players
作为一个对象,其键是player ID,或者使用player ID作为数组的索引,则会更简单。这样你就不需要一个循环。

通过你的玩家循环。如果ID与给定ID之一匹配,则更新评级

function updateRating(winnerId, loserId) {
    for (var i = 0; i < players.length; i++) {
        var p = players[i];
        if (p.id == winnerId) {
            p.rating++;
        } else if (p.id == loserId) {
            p.rating--;
        }
    }
}
函数更新(winnerId、loserId){
对于(变量i=0;i
如果将
players
作为一个对象,其键是player ID,或者使用player ID作为数组的索引,则会更简单。那么您就不需要循环了。

那么:

players = {James: 100, Matt: 200, Tara: 300}

function updateScores(winner, loser) {
  players[winner]++;
  players[loser]--;
}

updateScores("James", "Tara");
那么:

players = {James: 100, Matt: 200, Tara: 300}

function updateScores(winner, loser) {
  players[winner]++;
  players[loser]--;
}

updateScores("James", "Tara");
那么:

players = {James: 100, Matt: 200, Tara: 300}

function updateScores(winner, loser) {
  players[winner]++;
  players[loser]--;
}

updateScores("James", "Tara");
那么:

players = {James: 100, Matt: 200, Tara: 300}

function updateScores(winner, loser) {
  players[winner]++;
  players[loser]--;
}

updateScores("James", "Tara");

只需在
玩家
数组中使用循环,并为匹配的用户更新属性
评级

   UpdateRating = function(winnerId, LoserId){
       for(var i = 0; players.length; i++){
            if(players[i].id === winnerId)
                players[i].rating = players[i].rating + 10;
            else if(players[i].id === LoserId)
                players[i].rating = players[i].rating - 10;
       }
   }

只需在
玩家
数组中使用循环,并为匹配的用户更新属性
评级

   UpdateRating = function(winnerId, LoserId){
       for(var i = 0; players.length; i++){
            if(players[i].id === winnerId)
                players[i].rating = players[i].rating + 10;
            else if(players[i].id === LoserId)
                players[i].rating = players[i].rating - 10;
       }
   }

只需在
玩家
数组中使用循环,并为匹配的用户更新属性
评级

   UpdateRating = function(winnerId, LoserId){
       for(var i = 0; players.length; i++){
            if(players[i].id === winnerId)
                players[i].rating = players[i].rating + 10;
            else if(players[i].id === LoserId)
                players[i].rating = players[i].rating - 10;
       }
   }

只需在
玩家
数组中使用循环,并为匹配的用户更新属性
评级

   UpdateRating = function(winnerId, LoserId){
       for(var i = 0; players.length; i++){
            if(players[i].id === winnerId)
                players[i].rating = players[i].rating + 10;
            else if(players[i].id === LoserId)
                players[i].rating = players[i].rating - 10;
       }
   }

ELO评级系统在这里是可行的。这样做的好处是,球员的积分变化将根据两名球员之间的积分差异而有所不同

球员A在与B比赛时的期望(获胜)计算如下: E_A=1/(1+10^((R_B-R_A)/400))。(根据初始评级差异,其范围在0和1之间)。如果B赢了,那么他们的评级将根据您选择的“k系数”(您希望您的玩家评级调整的速度)*根据此预期增加,而A的评级将相应减少。实际上,我在我的游戏网站上实现了这一点。玩家可以画你的游戏吗?如果没有,下面是我为您的示例改编的代码

var kFactor = 15; (adjust this according to how quickly you want ratings to adapt, lower number --> adapts more quickly).
function EloRatingCalc(winner, loser, players) {
    var winElo = winner.rating;
    var loseElo = loser.rating;
    var qw = Math.pow(10,(winElo/400));
    var ql = Math.pow(10,(loseElo/400)); 
    var lossExpectation = ql/(ql+qw);
    winner.rating += parseInt(kFactor*lossExpectation);
    loser.rating -= parseInt(kFactor*lossExpectation);
};

ELO评级系统在这里是可行的。这样做的好处是,球员的积分变化将根据两名球员之间的积分差异而有所不同

球员A在与B比赛时的期望(获胜)计算如下: E_A=1/(1+10^((R_B-R_A)/400))。(根据初始评级差异,其范围在0和1之间)。如果B赢了,那么他们的评级将根据您选择的“k系数”(您希望您的玩家评级调整的速度)*根据此预期增加,而A的评级将相应减少。实际上,我在我的游戏网站上实现了这一点。玩家可以画你的游戏吗?如果没有,下面是我为您的示例改编的代码

var kFactor = 15; (adjust this according to how quickly you want ratings to adapt, lower number --> adapts more quickly).
function EloRatingCalc(winner, loser, players) {
    var winElo = winner.rating;
    var loseElo = loser.rating;
    var qw = Math.pow(10,(winElo/400));
    var ql = Math.pow(10,(loseElo/400)); 
    var lossExpectation = ql/(ql+qw);
    winner.rating += parseInt(kFactor*lossExpectation);
    loser.rating -= parseInt(kFactor*lossExpectation);
};

ELO评级系统在这里是可行的。这样做的好处是,球员的积分变化将根据两名球员之间的积分差异而有所不同

球员A在与B比赛时的期望(获胜)计算如下: E_A=1/(1+10^((R_B-R_A)/400))。(根据初始评级差异,其范围在0和1之间)。如果B赢了,那么他们的评级将根据您选择的“k系数”(您希望您的玩家评级调整的速度)*根据此预期增加,而A的评级将相应减少。实际上,我在我的游戏网站上实现了这一点。玩家可以画你的游戏吗?如果没有,下面是我为您的示例改编的代码

var kFactor = 15; (adjust this according to how quickly you want ratings to adapt, lower number --> adapts more quickly).
function EloRatingCalc(winner, loser, players) {
    var winElo = winner.rating;
    var loseElo = loser.rating;
    var qw = Math.pow(10,(winElo/400));
    var ql = Math.pow(10,(loseElo/400)); 
    var lossExpectation = ql/(ql+qw);
    winner.rating += parseInt(kFactor*lossExpectation);
    loser.rating -= parseInt(kFactor*lossExpectation);
};

ELO评级系统在这里是可行的。这样做的好处是,球员的积分变化将根据两名球员之间的积分差异而有所不同

球员A在与B比赛时的期望(获胜)计算如下: E_A=1/(1+10^((R_B-R_A)/400))。(根据初始评级差异,其范围在0和1之间)。如果B赢了,那么他们的评级将根据您选择的“k系数”(您希望您的玩家评级调整的速度)*根据此预期增加,而A的评级将相应减少。实际上,我在我的游戏网站上实现了这一点。玩家可以画你的游戏吗?如果没有,下面是我为您的示例改编的代码

var kFactor = 15; (adjust this according to how quickly you want ratings to adapt, lower number --> adapts more quickly).
function EloRatingCalc(winner, loser, players) {
    var winElo = winner.rating;
    var loseElo = loser.rating;
    var qw = Math.pow(10,(winElo/400));
    var ql = Math.pow(10,(loseElo/400)); 
    var lossExpectation = ql/(ql+qw);
    winner.rating += parseInt(kFactor*lossExpectation);
    loser.rating -= parseInt(kFactor*lossExpectation);
};

当他们赢或输的时候,他们的评级应该提高?玩家应该能够看到其他玩家的评级吗?如果是的话,哟