<?php

error_reporting(-1);
mb_internal_encoding("UTF-8");

class Question
{
    public $text;           // текст вопроса
    public $points = 5;     // число баллов, по умолчанию 5
    public $answers;        // варианты ответов
    public $correctAnswer;  // правильный ответ
    public $hint;  // подсказка
}

// Функция, создающая массив с вопросами:
function createQuestions()
{
    $questions = array();

    // Вопрос 1
$q1 = new Question;
$q1->text = "Какая планета располагается четвертой по счету от Солнца?";
$q1->points = 10; // 10 баллов за ответ
$q1->answers = array('a' => 'Венера', 'b' => 'Марс', 'c' => 'Юпитер', 'd' => 'Меркурий'); // Варианты ответа
$q1->correctAnswer = 'b'; // Правильный ответ
$q1->hint = 'Начинается на букву М, есть ещё такой шоколадный батончик...';
    // Кладем вопрос в массив
    $questions[] = $q1;

// Вопрос 2
$q2 = new Question;
$q2->text = 'Какой город является столицей Великобритании?';
$q2->points = 5;
$q2->answers = array('a' => 'Париж', 'b' => 'Москва', 'c' => 'Нью-Йорк', 'd' => 'Лондон');
$q2->correctAnswer = 'd';
$q2->hint = 'Начинается на букву Л и является подлежащим в предложении "London is the capital of Great Britain"...';
     $questions[] = $q2;

// Вопрос 3
$q3 = new Question;
$q3->text = 'Кто придумал теорию относительности?';
$q3->points = 30;
$q3->answers = array('a' => 'Джон Леннон', 'b' => 'Джим Моррисон', 'c' => 'Альберт Эйнштейн', 'd' => 'Исаак Ньютон');
$q3->correctAnswer = 'c';
$q3->hint = 'Пожилой мужчина показывает язык...';
     $questions[] = $q3;
    return $questions;
}
function printQuestions($questions)
{
    $i = 1; // номер вопроса

    foreach ($questions as $question) {
        echo "{$i}. {$question->text}\n\n";

        echo "Варианты ответов:\n";

        foreach ($question->answers as $letter => $answer) {
            echo "  {$letter}. {$answer}\n";
        }
        
        echo "\nПодсказка: {$question->hint}\n\n";

        $i++; 
    }
}

//$questions = createQuestions();
//printQuestions($questions);

function checkAnswers($questions, $answers)
{
    // Проверим, что число ответов равно числу вопросов (защищаемся от ошибки)
    if (count($questions) != count($answers)) {
        die("Число ответов и вопросов не совпадает\n");
    }

    $pointsTotal = 0; // сколько набрано баллов
    $pointsMax = 0;   // сколько можно набрать баллов при всех правильных ответах
    $correctAnswers = 0; // сколько отвечено верно
    $totalQuestions = count($questions); // Сколько всего вопросов

    // Цикл для обхода вопросов и ответов
    for ($i = 0; $i < count($questions); $i++) {
    	
        $question = $questions[$i]; // Текущий вопрос
        $answer = $answers[$i]; // текущий ответ
        $i++;
     
        echo "Ваш ответ на вопрос №$i ({$question->text}): \"{$answer}\"";
        $i--;
        foreach ($question->answers as $letter => $givenAnswer) {
        	if ($answer == $letter) {
            echo " - {$givenAnswer}.\n";
        	}
        }
        echo "Правильный ответ: \"{$question->correctAnswer}\"";
        foreach ($question->answers as $letter => $rightAnswer) {
        	if ($question->correctAnswer == $letter) {
            echo " - {$rightAnswer}.\n\n";
        	}
        }
        // Считаем максимальную сумму баллов
        $pointsMax += $question->points;

        // Проверяем ответ
        if ($answer == $question->correctAnswer) {
            // Добавляем баллы
            $correctAnswers ++;
            $pointsTotal += $question->points;
        } else {
            // Неправильный ответ
            $number = $i + 1;
            echo "Неправильный ответ на вопрос №{$number} ({$question->text})\n";
        }
    }

    // Выведем итог
    echo "Правильных ответов: {$correctAnswers} из {$totalQuestions}, баллов набрано: {$pointsTotal} из {$pointsMax}.\n";
}

$questions = createQuestions();
printQuestions($questions);
$answers = array('b', 'd', 'a');
checkAnswers($questions, $answers);