Простая игра Угадай число на PHP

В данной статье будет представлен php-скрипт простейшей игры — Угадай число.  Игра состоит всего из двух файлов, в процессе ее создается еще один файл с историей попыток.

Чтобы код заработал, необходимо скачать и установить Джентельменский набор веб-разработчика Denwer, его можно найти в нашем разделе Загрузки или же просто перейти по ссылке скачать Denwer 3. Если вы впервые сталкиваетесь с этой программой — уделите пару минут прочтению инструкции. Для удобства просмотра и чтения кода можно воспользоваться программой Notepad++, которую также можно найти в нашем разделе Загрузки.

Итак, первый файл — index.php, вот его содержимое:

<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251'>
<meta name='GENERATOR' content='Microsoft FrontPage 4.0'>
<meta name='ProgId' content='FrontPage.Editor.Document'>
<title>Get_Number</title>
</head>
<body>

<?php

$btnResetX = 0;
$btnOkX    = 0;
$Num_In    = 0;
$Try_N     = 0;
$Num_Yes   = 0;

function Get_Param_From_ZZZ($_pn)
{
  $res = "";
  $pn = trim($_pn);
  if (strlen($pn)>0)
  {
     $res = trim($_POST[$pn]);
     if (strlen($res)<=0)  $res = trim($_GET[$pn]);
  }
  return $res;
}

function Put_Num_to_File($fn, $_Num)
{
  $res = 0;
  $fn = trim($fn);
  $Num = (integer) $_Num;
  if (! file_exists($fn))
  {
     touch($fn);
  }
  if (file_exists($fn))
  {
    $fp = fopen($fn,"w") or die("Файл $fn не существует");
    fwrite($fp,"$Num");
    fclose($fp);
    $res = 1;
  }
  return $res;
}


function Get_Num_From_File($fn)
{
  $res = -1;
  $fn = trim($fn);
  if (file_exists($fn))
  {
    $fp = fopen($fn,"r") or die("Файл $fn не существует");
    $res = (integer) fread($fp,10);
    fclose($fp);
  }
  return $res;
}

function Put_Num_to_File_Hist($_NumTry, $_Num)
{
  //Записываем информацию в историю попыток
  $res = 0;
  $fn = "hist.txt";
  $Num = (integer) $_Num;
  $NumTry = (integer) $_NumTry;
  if (! file_exists($fn))
  {
     touch($fn);
  }
  if (file_exists($fn))
  {
    $fp = fopen($fn,"a") or die("Файл $fn не существует");
    fwrite($fp,"$NumTry". chr(9) . "$Num".chr(13).chr(10));
    fclose($fp);
    $res = 1;
  }
  return $res;
}


function New_Game()
{
  //Создаем новую иру

  //-------------------------------------------------
  $fn="num_x.txt";
  if (file_exists($fn)) {unlink($fn);};
  $fn="try_cur.txt";
  if (file_exists($fn)) {unlink($fn);};
  $fn="num_cur.txt";
  if (file_exists($fn)) {unlink($fn);};
  $fn="hist.txt";
  if (file_exists($fn)) {unlink($fn);};
  $Num_Yes = rand(0,100);
  Put_Num_to_File("num_x.txt",$Num_Yes);
  //-------------------------------------------------
  $Num_In = 0;
  Put_Num_to_File("num_cur.txt",$Num_In);
  $Try_N = 0;
  Put_Num_to_File("try_cur.txt",$Try_N);
}


function Save_Game($Try_N, $Num_In)
{
  //Сохраняем в файлы текущую информацию
  Put_Num_to_File("num_cur.txt",$Num_In);
  Put_Num_to_File("try_cur.txt",$Try_N);
  Put_Num_to_File_Hist($Try_N, $Num_In);
}

function Load_NumYes()
{
  //Читаем из файла наше случайное число
  $res = Get_Num_From_File("num_x.txt");
  return $res;
}

function Load_NumIn()
{
  //Читаем из файла последнее введенное Пользователем число
  $res  = Get_Num_From_File("num_cur.txt");
  return $res;
}
function Load_TryN()
{
  //Читаем из файла номер последней попытки
  $res   = Get_Num_From_File("try_cur.txt");
  return $res;
}


// **********************************************************
$Num_In = (integer) Get_Param_From_ZZZ("num_in");
$Try_N = (integer) Get_Param_From_ZZZ("try_n");
$Sx     = trim(Get_Param_From_ZZZ("btnReset"));
if (strlen($Sx)>0) {$btnResetX=1;};
$Sx     = trim(Get_Param_From_ZZZ("btnOk"));
if (strlen($Sx)>0) {$btnOkX=1;};
// **********************************************************

//======================================
//страховка (на всякий случай)
if ($btnOkX<=0)
{
   $btnResetX=1;
}
else
{
   $btnResetX=0;
}
//======================================


if ($btnOkX>0) {Save_Game($Try_N, $Num_In);};  //Нажата кнопка OK - сохраняем текущую информацию в файлы
if ($btnResetX>0) {New_Game();}; //Нажата кнопка Новая_Игра - создаем новую игру


$Num_Yes = Load_NumYes();      //читаем наше (случайное) число из файла
if ($Num_Yes<0) {New_Game();}; //если какая-то проблема - создаем новую игру

$Num_Yes = Load_NumYes();      //читаем наше (случайное) число из файла
$Num_In  = Load_NumIn();       //читаем введенное Пользователем число из файла
$Try_N   = Load_TryN();        //читаем номер прошлой попытки из файла

$Try_N = $Try_N + 1; //вычисляем номер текущей попытки


//===========================================================
$Try_Res = "???";
if ($Num_In==$Num_Yes) {$Try_Res = "Угадали";};
if ($Num_In<$Num_Yes)  {$Try_Res = "Ваше число меньше";};
if ($Num_In>$Num_Yes)  {$Try_Res = "Ваше число больше";};
//===========================================================


//****************************************************************
//****************************************************************
//****************************************************************
//вывод HTML-формы с помощью команды print из PHP

print "<form action='$PHP_SELF' method 'GET'>";
print "    <p>&nbsp;</p>";
print "    <p>&nbsp;</p>";
print "    <p>&nbsp;</p>";
print "    <div align='center'>";
print "      <center>";
print "      <table border='3' cellspacing='1' bordercolor='#000080' bordercolorlight='#0000FF' bordercolordark='#800080'>";
print "        <tr>";
print "          <td>";
print "            <center>";
print "            <table border='0' cellpadding='0' cellspacing='0' width='325'>";
print "              <tr>";
print "                <td colspan='3' width='307'><font face='Comic Sans MS' color='#800000' size='6'>А";
print "                  угадай-ка число...</font></td>";
print "              </tr>";
print "              <tr>";
print "                <td colspan='3' width='307'><font color='#FFFFFF'>&nbsp;</font></td>";
print "              </tr>";
print "              <tr>";
print "                <td colspan='3' width='307'>";
print "                  <p align='center'><font face='Courier New' size='4'>Диапазон<b>";
print "                  </b>:<b> 0 .. 100</b></font></td>";
print "              </tr>";
print "              <tr>";
print "                <td colspan='3' width='307'><font color='black'>&nbsp;</font></td>";
print "              </tr>";
print "              <tr>";
print "                <td colspan='3' width='307'><font color='#FFFFFF'>&nbsp;</font></td>";
print "              </tr>";
print "              <tr>";
print "                <td colspan='3' width='307'>Попытка N :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><input type='text' readonly name='try_n' size='12' value='$Try_N' style='font-size: 12px'> </b> </td>";
print "              </tr>";
print "              <tr>";
print "                <td colspan='3' width='307'><font color='#FFFFFF'>&nbsp;</font></td>";
print "              </tr>";
print "              <tr>";
print "                <td width='111'>Введите число</td>";
print "                <td width='97'><b><input type='text' name='num_in' size='12' value='$Num_In' style='font-size: 12px'> </b></td>";
print "                <td width='97'><input type='submit' value='OK' style='font-size: 10px' name='btnOk'>&nbsp;</td>";
print "              </tr>";
print "              <tr>";
print "                <td colspan='3' width='307'><font color='#FFFFFF'>&nbsp;</font></td>";
print "              </tr>";
print "              <tr>";
print "                <td colspan='3' width='307'>Результат :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><input type='text' readonly name='try_res' size='30' value='$Try_Res' style='font-size: 12px'> </b> </td>";
print "              </tr>";
print "              <tr>";
print "                <td colspan='3' width='307'><font color='#FFFFFF'>&nbsp;</font></td>";
print "              </tr>";
print "              <tr>";
print "                <td colspan='3' width='307'><a href='hist.php' target='_blank'><span style='background-color: yellow'><b>Здесь</b></span></a> - история попыток</td>";
print "              </tr>";
print "              <tr>";
print "                <td colspan='3' width='307'><font color='#FFFFFF'>&nbsp;</font></td>";
print "              </tr>";
print "              <tr>";
print "                <td colspan='3' width='307'><font color='#FFFFFF'><input type='submit' value='Новая игра' style='font-size: 10px' name='btnReset'></font></td>";
print "              </tr>";
print "            </table>";
print "            </center>";
print "          </td>";
print "        </tr>";
print "      </table>";
print "      </center>";
print "    </div>";
print "    <p>&nbsp;</p>";
print "    <p>&nbsp;</p>";
print "</form>";
//****************************************************************
//****************************************************************
//****************************************************************
?>

</body>
</html>

Втрой файл — это hist.php, его код выглядит так:

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>history</title>
</head>

<body>

<font face='Comic Sans MS' color='#800000' size='6'>А угадай-ка число...</font>
<br>
<br>
<font size='4'>История попыток</font>
<hr>
<br>

<?php

function Get_Num_From_File($fn)
{
  $res = -1;
  $fn = trim($fn);
  if (file_exists($fn))
  {
    $fp = fopen($fn,"r") or die("Файл $fn не существует");
    $res = (integer) fread($fp,10);
    fclose($fp);
  }
  return $res;
}

function Load_NumYes()
{
  //Читаем из файла наше случайное число
  $res = Get_Num_From_File("num_x.txt");
  return $res;
}

function Convert_Text1310_to_Array($Sx)
{
  //конвертируем строку - в массив
  $Sx = str_replace(chr(13),"",$Sx); //удаляем ascii=13
  $res = explode(chr(10),$Sx);
  return $res;
}


$fn = "hist.txt";  //файл истории попыток
if (file_exists($fn))
{
  $fp = fopen($fn,"r") or die("Файл $fn не существует");

  $_Num99 = Load_NumYes(); //читаем из файла наше (случайное) число

  print "<table border='1' width='8%' cellspacing='0' cellpadding='0'>";
  print "   <tr>";
  print "     <td width='50%' align='center'><b>Попытка</b></td>";
  print "     <td width='50%' align='center'><b>Число</b></td>";
  print "   </tr>";

  $Sx = fread($fp, filesize($fn)); //читаем историю из файла

  if (strlen($Sx)>0)
  {
     $_Arr = Convert_Text1310_to_Array($Sx); //разделяем прочитанную историю - по строкам
     for($i=0; $i<count($_Arr);$i++)  //обрабатываем историю по строкам
     {
        $S1 = $_Arr[$i];
        $_Arr1 = explode(CHR(9),$S1); //разделяем строку истории
        $Try1 = $_Arr1[0];  //номер попытки
        $Num1 = $_Arr1[1];  //число Пользователя
        print "   <tr>";
        print "     <td width='50%'>";
        $Font1 = "";
        $Font2 = "";
        $N = (integer) $Num1;
        if ($N == $_Num99)  //это наше (случайное) число
        {
           $Font1 = "<font color='red'><b>";
           $Font2 = "</b></font>";
        }
        print "       <p align='center'>$Try1</td>";
        print "     <td width='50%'>";
        print "       <p align='center'>$Font1 $Num1 $Font2</td>";
        print "   </tr>";
     }
  }
  fclose($fp);
  print " </table>";
}
else
{
  print "История попыток не найдена !";
}

?>
</body>
</html>

В общем-то это все, создав файлы, поместив их по пути указанном в инструкции к Денверу и правильно к ним обратившись (это тоже есть в инструкции), вы получите рабочую игру на PHP.

1 Star2 Stars3 Stars4 Stars5 Stars (нет рейтинга)
Вы можете пропустить чтение записи и оставить комментарий. Размещение ссылок запрещено.
Оставить комментарий