Всем доброго времени суток! Никак не могу разобраться с такой задачей: Компьютер загадывает число от 1 до n. У пользователя k попыток отгадать. После каждой неудачной попытки компьютер сообщает меньше или больше загаданное число. В конце игры текст с результатом (или “Вы угадали”, или “Попытки закончились”). Источник: http://www.itmathrepetitor.ru/programmirovanie-zadachi-alg/ Написал индекс-файл index.php с формой, которая кидает число из поля на файлик test.php и получает ответ в виде html текста. Вопрос в следующем: как организовать счётчик текущей попытки игрока? пробовал уже колдовать с сессией и куками. короче иссяк. Прошу помочь, если кто знает как решить. Заранее спасибо!
Спасибо друзья, я всё решил! Код (Text): <?php session_start(); $attempts = 1; $max = 100; $number = rand(0,$max); $answer = $_POST['answer']; $state = ''; $antipattern = '/[^0-9]/'; if($_SESSION['attempt']>=$attempts){ $_SESSION['attempt'] = 0; $_SESSION['number'] = ++$number; $state = 'Попытки закончились!'; } else{ if(preg_match($antipattern, $answer) == 1){ $state = 'Вовсе не число!'; } elseif($answer>$max||$answer<0){ $state = 'Не лежит в диапазоне от 0 до '.$max.'!'; } elseif($answer>$_SESSION['number']){ $state = 'Немного больше чем нужно!'; $_SESSION['attempt'] = ++$_SESSION['attempt']; } elseif($answer<$_SESSION['number']){ $state = 'Немного меньше чем нужно!'; $_SESSION['attempt'] = ++$_SESSION['attempt']; } elseif($answer==$_SESSION['number']){ $_SESSION['attempt'] = 0; $state = 'В точку! Вы победили! Введите новое число и начните игру!'; $_SESSION['number'] = ++$number; } } echo 'Номер попытки: '.$_SESSION['attempt'].'</br>'; echo 'Ваш предыдущий ответ: '.$answer.'</br>'; echo 'Ваше число: '.$state.'</br>'; Оказалось, что можно инкрементить ячейку в массиве сессий, даже если ее ещё не существует следующим способом: $_SESSION['attempt'] = ++$_SESSION['attempt'];
Код не решает той задачи, которая поставлена. Он будет загадывать новое число при каждом запуске, поэтому подсказки не имеют значения, всё равно хрен отгадаешь Он должен один раз по задаче загадать число, и дать n попыток, чтобы отгадать.
Так и работает. Просто генерит каждый запуск, а записывает только в первый. Ну то есть, когда идёт вторая попытка или третья или четвёртая, то ответ сравнивается всё равно с числом, которое было загадано в начале. Новое число задается только после того как попытки закончились, либо после того как было отгадано предыдущее число.