Функция DrawBoard
Функция DrawBoard рисует игровое поле. Фантастика, не правда ли? Он
использует и HTML и PHP,
чтобы нарисовать соответствующий кусок поля в браузере. DrawBoard использует
только одну глобальную переменную – поля. Он состоит из двух вложенных циклов.
Первый цикл рисует некоторое количество
строк таблицы, а второй столбцы таблицы. И благодаря этим циклам у нас
получается поле.
Если значение $iCol 1 или 3, то он рисует большой
жирный разделитель между кусками, в противном случае он проверяет, есть ли кусок
на поле в конкретной строке и столбца. Если есть квадрат, то рисует его в
браузере, если нет, ставит кнопку, по клику которой вы делаете ход.
- function DrawBoard()
- {
- global $gBoard;
- // Начать рисование
- printf("<table
border=0 cellpadding=0 cellspacing=0>”);
- $iLoop = 0;
- //Первый цикл, присует строки таблицы
- for($iRow = 0; $iRow
< 5; $iRow++)
- {
- printf("<tr>\n”);
- for($iCol = 0; $iCol
< 5; $iCol++)
- //Вложенный цикл, рисует столбцы
- {
- if($iRow == 1 ||
$iRow == 3)
- {
- printf("<td
width=\”12\” height=\”5\”
- align=\”center\”
valign=\”middle\”
- bgcolor=\”#000000\”> </td>\n”);
- }
- else
- {
- if($iCol == 1 ||
$iCol == 3)
- {
- printf("<td
width=\”12\” height=\”115\” align=\”center\”
- valign=\”middle\”
bgcolor=\”#000000\”> </td>\n”);
- }
- else
- {
- printf("<td
width=\”115\” height=\”115\”
- align=\”center\”
valign=\”middle\”>”);
- if($gBoard[$iLoop]
== "x”)
- {
- printf("<img
src=\”” . X_IMAGE . "\”>”);
- }
- elseif($gBoard[$iLoop]
== "o”)
- {
- printf("<img
src=\”” . O_IMAGE . "\”>”);
- }
- else
- {
- printf("<input
type=\”submit\” name=\”btnMove\” \ value=\”” .
- $iLoop . "\”>”);
- }
- printf("</td>\n”);
- $iLoop++;
- }
- }
- }
- printf("</tr>\n”);
- }
- // End the table
- printf("</table>”);
- }
|
Функция CheckFull
Функция CheckFull
проверяет заполнено ли поле. Он просматривает каждый квадрат на доске и
проверяет, есть ли пустой квадрат. Пустой квадрат – это квадрат, куда еще не
ходили одна из сторон. Если есть пустой квадрат, то игра продолжается, если нет
– завершается.
- function CheckFull()
- {
- global $gGameState;
- global $gBoard;
- $gGameState =
GAME_OVER;
- for($iLoop = 0;
$iLoop < count($gBoard); $iLoop++)
- {
- if($gBoard[$iLoop]
== "”)
- {
- $gGameState =
GAME_PLAY;
- return 0;
- }
- }
- return 1;
- }
|
Функция CheckWin
Функция CheckWin проверяет три квадрата в одной строке у каждого игрока.
Сначала он проверяет, есть ли три горизонтальных квадрата в один ряд с ходом
одного игрока, точно также проверяет и горизонтальные квадраты, и диагональные
квадраты. Если таковы есть, то выигрывает одна из сторон.
- function CheckWin()
- {
- global $gGameState;
- global $gBoard;
- $player = 1;
- while($player <= 2)
- {
- if ($player == 1)
- $tile = "o”;
- else
- $tile = "x”;
- if (
- # horizontal
- ($gBoard[0] == $tile &&
$gBoard[1] == $tile &&
- $gBoard[2] == $tile) ||($gBoard[3] ==
$tile && $gBoard[4] == $tile &&
- $gBoard[5] == $tile) ||
- ($gBoard[6] == $tile &&
$gBoard[7] == $tile &&
- $gBoard[8] == $tile) ||
- # vertical
- ($gBoard[0] == $tile &&
$gBoard[3] == $tile &&
- $gBoard[6] == $tile) ||
- ($gBoard[1] == $tile &&
$gBoard[4] == $tile &&
- $gBoard[7] == $tile) ||
- ($gBoard[2] == $tile &&
$gBoard[5] == $tile &&
- $gBoard[8] == $tile) ||
- # diagonal
- ($gBoard[0] == $tile &&
$gBoard[4] == $tile &&
- $gBoard[8] == $tile) ||
- ($gBoard[2] == $tile &&
$gBoard[4] == $tile &&
- $gBoard[6] == $tile))
- {
- return strtoupper($tile);
- }
- $player++;
- }
- }
|
Вы можете скачать скрипт PHP со этими 3-я функциями
|