Ответов: 18 Просмотров: 741
|
Нашел старый скрипт игры на php, но он не работает на php5
На php 5.3 ошибка "Deprecated: Function ereg() is deprecated in ..." Заменил ereg() на mb_ereg(). Ошибка пропала, но скрипт не работает.
На php 5.2 ошибки "Deprecated: Function ereg() is deprecated in ..." нет, но скрипт не работает.
Кто-то подскажет в чем дело?
Вот код:
PHP:
скопировать код в буфер обмена
<html> <head><title>"ПОЛЕ ЧУДЕС"</title></head> <body><div align = 'center'> <?PHP $let_num = 16; // Количество возможных попыток (пусть будет пол-алфавита); "А","Б","В","Г","Д","Е","Ж","З","И","Й","К","Л","М","Н","О","П", "Р","С","Т","У","Ф","Х","Ц","Ч","Ш","Щ","Ъ","Ы","Ь","Э","Ю","Я");// наш массив-"алфавит"; $words = array("МАГИЯ","ЛАМПА","КАРТА","МОНИТОР","МУЗЫКА");// Массив возможных слов, // из которых случайным образом будет выбрано слово, // которое игрок будет угадывать; if (!isset($word_number)){ $word_number = rand(1 ,count($words)) - 1;// Выбираем слово наугад; } $word = $words[$word_number];// $word - короткий псевдоним для $words[$word_number]; echo"<H1>"; /* Начинаем выводить загаданное слово (вместо еще "неугаданных" букв - у нас будет знак подчеркивания "_"), заодно проверяем, может оно уже отгадано; */ $finished = 1; // Предположим, что это так (т.е. угадано) установкой флага $finished. for ($i=0; $i < strlen($word); $i++) {// Перебираем все буквы слова; if (ereg($word[$i], $letters)){ // Если $i-ю букву слова игрок уже "назвал" и она есть в загаданном слове, echo $word[$i]; // то выводим, ее на экран. (Тут $letters - множество "названных" букв); } else { echo "_"; // В противном случае выводим знак подчеркивания "_". $finished = 0; // Заодно отмечаем, что слово еще не отгадано. } } echo"</H1>"; if ($finished){ // Если слово угадано, то появляется сообщение: echo "<BR><BR><I>ПОЗДРАВЛЯЕМ! ВЫ ВЫИГРАЛИ!</I><BR><BR>"; echo "<A HREF=$PHP_SELF><IMG SRC=\"./play_again.jpg\"></A>"; /* Предлагаем игроку сыграть еще раз, нажав на кнопку с надписью "Сыграем еще?" ("кнопка" есть не что иное как картинка "play_again.jpg" в одном каталоге с нашем файлом pole_chudes.php). */ } else { // Иначе (т.е. если слово еще не угадано), действуем так: $wrong = 0; // переменная $wrong у нас отвечает за количество неудачных попыток, т.е. // уже "названных" неправильных букв. foreach ($alphabet as $var) { // Перебираем все буквы алфавита (массив $alphabet), // при этом текущая буква помещается в переменную $var. if (ereg($var, $letters)) { // Если $var уже "назвывали" if (ereg($var, $word)) { // и если $var принадлежит слову $word, $links .= "$var"; // то, сделаем ее "посещенной"; } else { // в противном случае $links .= "$var"; // также сделаем ее "посещенной" $wrong++; // и учтем эту попытку при подсчете } // количества неудачных попыток. } else { $links .= "<A HREF=\"$PHP_SELF?letters=$letters$var&word_number=$word_number&last=$var\">$var</A> "; } } if ($wrong == $let_num) { // Если игрок превысил лимит попыток (т.е проиграл :( ), // так ему об этом и скажем: echo "<BR>НА ЭТОТ РАЗ ВАМ НЕ ПОВЕЗЛО!<BR><BR>"; echo "СЛОВО, КОТОРОЕ ВЫ ТАК И НЕ УГАДАЛИ: \"$word\"<BR><BR>"; echo "<A HREF=$PHP_SELF><IMG SRC=\"./play_again.jpg\"></A> "; // Опять предложим сыграть, // для реванша, так сказать. } else { if (isset($last)){ // Если переменная $last уже была инициализирована,то : // необходимо проверить, является ли она правильной. Т.е если переменная $last // присутствует в строке $word - нашем загаданном слове. if (ereg($last,$word)){ // Если да (т.е. буква названа правильно), echo "<BR><IMG SRC=\"./all_right.jpg\"><BR>"; // то появиться картинка с надписью // "Угадал!"; } else { echo "<BR><IMG SRC=\"./try_again.jpg\"><BR>"; // если нет, то так и скажем "А вот и не угадал". } } echo "<BR><BR>"; echo "ОСТАЛОСЬ ПОПЫТОК = ".($let_num-$wrong)."<BR>"; // без комментариев; echo "<BR>ПОЖАЛУЙСТА ВЫБЕРИТЕ БУКВУ:<BR><BR>"; echo $links; } } ?> </div> </body> </html>
|