@matthewstafford

PHP | Как сделать игру страна — столица?

Помогите реализовать мини-игру, которая выводит пользователю страну, а он должен в ответ написать столицу этой страны.

Страны и столицы у меня занесены в два разных текстовых документа: capitals.txt и countries.txt

$countries = file($_SERVER['DOCUMENT_ROOT'].'/countries.txt');
$capitals = file($_SERVER['DOCUMENT_ROOT'].'/capitals.txt');
$rand = array_rand($countries);
$countries = $countries[$rand];
$capitals = $capitals[$rand];

if(isset($_POST['submit'])) {
	if(isset($_POST['answer'])) {
		$answer = $_POST['answer'];
		$answer = strtoupper($answer);
		if($answer == $capitals) {
			echo 'Ответ правильный!';
		} else {
			echo 'Ответ не правильный<br>';
		}
	}
}


<form action="" method="post">
	<input name="answer" placeholder="Введите ответ"></input>
	<button type="submit" name="submit">Отправить</button>
</form>


Проблема в том, что строчки выводятся в разном порядке и иногда получается так, что ответ неверный.
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ответы на вопрос 2
webinar
@webinar Куратор тега PHP
Учим yii: https://youtu.be/-WRMlGHLgRg
Сделайте в качестве хранилища не txt, а php файл, в нем разместите массив в котором будет массив, например:
return [
  'Россия' => 'Москва',
  'Украина' => 'Киев',
  ....
];

Тогда выбирая случайный элемент, Вы имеет страну и ее связь с городом.
Ответ написан
Stalker_RED
@Stalker_RED
При запуске скрипта вы генерируете случайное число, и по этому числу выбираете пару страны-столица.
Затем проверяете ответ, если он есть. Проверяете ответ от ПРЕДЫДУЩЕГО вопроса, в котором было ДРУГОЕ случайное число. Не надо так.

В простейшем случае можно сохранить все в массив столица=>страна, тогда по ключу который пришел в ответе можно легко проверить страну.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы