cryptobfund/php-project-lvl1

View on GitHub
src/games/Progression.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace First\Project\Games\Progression;

use function First\Project\Engine\gameStart;

const GAME_DESCRIPTION = 'What number is missing in the progression?'; //общее описание и вопрос игры
const MIN_RAND = 0; //мнимальное для генерации числа вопроса значение
const MAX_RAND = 10; //максимальное для генерации числа вопроса значение
const PROGRESSION_LENGTH = 10;

function generateRoundData()
{
    $firstMemberOfProgression = rand(MIN_RAND, MAX_RAND);
    $stepOfProgression = rand(MIN_RAND, MAX_RAND);
    $indexHiddenOfProgression = rand(0, PROGRESSION_LENGTH - 1);
    $progression = generateProgression($firstMemberOfProgression, $stepOfProgression, PROGRESSION_LENGTH);
    $answer = (string) $progression[$indexHiddenOfProgression];
    $progression[$indexHiddenOfProgression] = '..';
    return [
        'answer' => $answer,
        'question' => implode(' ', $progression)
    ];
}
function start()
{
    gameStart(fn() => generateRoundData(), GAME_DESCRIPTION);
}
function generateProgression($firstP, $stepP, $lenthP)
{
    $result = [];
    for ($i = 0; $i < $lenthP; $i++) {
        $result[] = $firstP + $i * $stepP;
    }
    return $result;
}