[PHP] Pomoc sa ELO ratingom

Pozz, dali neko zna kako napravit elo rating da broji i oduzima bodove, ja sam napravio neki al mi ne radi dobro. Mislim radi dobro ali oduzima i daje previse bodova uglavnom trebo ti radit ovako. Svaki tim krece sa 1000 bodova.

Ako tim1 ima 1200 bodova a tim1 ima 1000 bodova, i tim1 pobijedi tim1 dobije 20 bodova ili manje a timu2 uzme 10 bodova ili manje.

Ako tim1 ima 1400 bodova a tim2 ima 1000 bodova i tim1 pobijedi dobije 20 bodova ili manje a timu2 uzme 10 bodova ili manje.

Ako tim1 ima vise bodova od tima2 a tim2 pobijedi dobije vise bodova jer je pobijedio jaceg 120 bodova je max za pobjedu.

Ako je nerijeseno jacem timu se oduzima vise bodova i dodaje timu 1.

E sad kako da napravim ovo da mi uzima ili daje maximalno 120 bodova ovisno o pobjedi ili porazu i razlici izmedju timova ?

<?php

$k_factor = 2; // k-factor (10, 20, 30)

// team A and B current rank
$teamA = 1400;
$teamB = 1200;

// team A and B scores
$scoreA = 25;
$scoreB = 15;

// get expected scores team A and B
$expectedA = 1 / ( 1 + ( pow( 10 , ( $teamB - $teamA ) / 50 ) ) );
$expectedB = 1 / ( 1 + ( pow( 10 , ( $teamA - $teamB ) / 50 ) ) );

// ako je scoreA veci od scoreB uzmi bodove timu 2 ( tim1 pobjeda )
if ($scoreA > $scoreB) 
{
$newRatingA = $teamA + ( $k_factor * ( $scoreA - $expectedA ) );
$newRatingB = $teamB - ( $k_factor * ( $scoreB - $expectedB ) );
} 
// ako je scoreA manji od scoreB uzmi bodove timu 1 ( tim 2 pobjeda )
elseif ($scoreA < $scoreB) 
{
$newRatingA = $teamA - ( $k_factor * ( $scoreA - $expectedA ) );
$newRatingB = $teamB + ( $k_factor * ( $scoreB - $expectedB ) );
} 
// ako je score isti i team a jaci daj timu 2 bodove ( nerijeseno )
elseif ($scoreA == $scoreB && $teamA > $teamB) 
{
$newRatingA = $teamA - ( $k_factor * ( $scoreA - $expectedA ) );
$newRatingB = $teamB + ( $k_factor * ( $scoreB - $expectedB ) );
}
// ako je score isti i team a slabiji daj timu 1 bodove ( nerijeseno )
elseif ($scoreA == $scoreB && $teamA < $teamB) 
{
$newRatingA = $teamA + ( $k_factor * ( $scoreA - $expectedA ) );
$newRatingB = $teamB - ( $k_factor * ( $scoreB - $expectedB ) );
} 
// ako je score isti i ako timovi imaju jednako bodova ( nerijeseno niko ne     dobiva bodove )
elseif ($scoreA == $scoreB && $teamA == $teamB) 
{
$newRatingA = $teamA;
$newRatingB = $teamB;
}

echo '<h1>Teams current rank</h1>';
echo 'Team 1 rank: '.$teamA.'<br>';
echo 'Team 2 rank: '.$teamB.'<br><br>';

echo '<h1>Teams score</h1>';
echo 'Team 1 score: '.$scoreA.'<br>';
echo 'Team 2 score: '.$scoreB.'<br><br>';

echo '<h1>Teams new rank</h1>';
echo 'Team A new rank : '.round($newRatingA).'<br>';
echo 'Team B new rank : '.round($newRatingB);

?>

Copyright © 2020 WM Forum - AboutContact - Sponsored by: Mydataknox & Profit Monkey