$points = //здесь счет
//сюда суй все что нужно;
$user_points = //что предсказал пользователь;
if( $points == $user_points) {
//здесь если юзер точно предсказал
}
if( ! $points == $user_points) {
//здесь если юзер не предсказал
}
Необходимо написать функцию которая принимает в качестве аргументов предполагаемый и реальный счёт, и возвращает целое число 0, 1 или 2 (нулевой, маленький или большой приз)
Подскажите как сделать в ООП, как лучше сделать, саму суть.
class Rewarding
{
const BIG_PRIZE = 2;
const SMALL_PRIZE = 1;
const ZERO_PRIZE = 0;
private $bets;
private $matches;
public function __construct(BetsCollection $bets, Matches $matches)
{
$this->bets = $bets;
$this->matches = $matches;
}
public function run() : void
{
/** @var Bet $bet */
foreach ($this->bets as $bet) {
/** @var Match $match */
$match = $this->matches->getMatchById($bet->getMatchId());
/** @var Score $score */
$score = $match->getScore();
$bet->setPrize($this->scoreBetCompare($bet->getScore(),$score));
}
}
public function getBetsPrizes() : BetsCollection
{
return $this->bets;
}
private function scoreBetCompare(Score $betScore, Score $matchScore) : int
{
$bet1 = $betScore->getFirstCommandResult();
$bet2 = $betScore->getSecondCommandResult();
$match1 = $matchScore->getFirstCommandResult();
$match2 = $matchScore->getSecondCommandResult();
if ($bet1 === $match1 && $bet2 === $match2)
{
return self::BIG_PRIZE;
}
if (($bet1 > $bet2 && $match1 > $match2)
||
($bet1 < $bet2 && $match1 < $match2)
||
($bet1 === $bet2 && $match1 === $match2)
)
{
return self::SMALL_PRIZE;
}
return self::ZERO_PRIZE;
}
}