<?php
class Question
{
public $text; // текст вопроса
public $points = 5; // число баллов, по умолчанию 5
public $answers; // варианты ответов
public $correctAnswer; // правильный ответ
public $help; // подсказка в случае неправильного ответа
}
// Функция, создающая массив с вопросами:
function createQuestions()
{
// Создаем пустой массив
$questions = [];
// Создаем и заполняем первый объект
$q = new Question;
$q->text = "Познаю ли Я ООП?";
$q->points = 1;
$q->answers = array('a'=>'Да', 'b' => 'Не знаю', 'c' => 'Все зависит от меня самого', 'd' => 'Нет'); $q->correctAnswer = 'c';
$q->help = "Всему можно научиться, если постоянно прилагать усилия.";
// Кладем вопрос в массив
$questions[] = $q;
// Создаем второй объект
$q = new Question;
$q->text = "Оп - няша?";
$q->points = 10;
$q->answers = array('a' => 'Да', 'b' => 'Определенно', 'c' => 'Он еще и умняша', 'd' => 'Все ответы верны'); $q->correctAnswer = 'd';
$q->help = "Оп не только няша, но он еще и очень мудр.";
// Кладем вопрос в массив
$questions[] = $q;
// Создаем третий объект
$q = new Question;
$q->text = "Какой город является столицей России?";
$q->points = 100;
$q->answers = array('a' => 'Киев', 'b' => 'Санкт-Петербург', 'c' => 'Лондон', 'd' => 'Москва'); $q->correctAnswer = 'd';
$q->help = "В этот город также большевики перенесли столицу после революции.";
// Кладем вопрос в массив
$questions[] = $q;
return $questions;
}
function printQuestions($questions)
{
$number = 1; // номер вопроса
foreach ($questions as $question) {
echo "{$number}. {$question->text}\n\n";
echo "Варианты ответов:\n";
foreach ($question->answers as $letter => $answer) {
echo " {$letter}. {$answer}\n";
}
$number++;
}
}
function checkAnswers($questions, $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]; // текущий ответ
// Считаем максимальную сумму баллов
$pointsMax += $question->points;
// Проверяем ответ
if ($answer == $question->correctAnswer) {
// Добавляем баллы
$correctAnswers ++;
$pointsTotal += $question->points;
} else {
// Неправильный ответ
$number = $i + 1;
echo "Неправильный ответ на вопрос №{$number} ({$question->text})\n";
//Выводим подсказку
echo "Подсказка: {$question->help} (Правильный ответ:{$question->correctAnswer})"."\n";
}
}
// Выведем итог
echo "Правильных ответов: {$correctAnswers} из {$totalQuestions}, баллов набрано: $pointsTotal из $pointsMax\n";
}
$questions = createQuestions();
printQuestions($questions);
$answers = array('a', 'z', 'd'); checkAnswers($questions, $answers);