Главная » Статьи » TicTacToe на РНР

4. TicTacToe на PHP. 3 Функции.

Функция DrawBoard

Функция DrawBoard рисует игровое поле. Фантастика, не правда ли? Он использует и HTML и PHP, чтобы нарисовать соответствующий кусок поля в браузере.  DrawBoard использует только одну глобальную переменную – поля. Он состоит из двух вложенных циклов. Первый цикл рисует  некоторое количество строк таблицы, а второй столбцы таблицы. И благодаря этим циклам у нас получается поле.

Если значение $iCol 1 или 3, то он рисует большой жирный разделитель между кусками, в противном случае он проверяет, есть ли кусок на поле в конкретной строке и столбца. Если есть квадрат, то рисует его в браузере, если нет, ставит кнопку, по клику которой вы делаете ход.

  1. function DrawBoard()
  2. {
  3. global $gBoard;
  4. // Начать рисование
  5. printf("<table border=0 cellpadding=0 cellspacing=0>”);
  6. $iLoop = 0;
  7. //Первый цикл, присует строки таблицы
  8. for($iRow = 0; $iRow < 5; $iRow++)
  9. {
  10. printf("<tr>\n”);
  11. for($iCol = 0; $iCol < 5; $iCol++)
  12. //Вложенный цикл, рисует столбцы
  13. {
  14. if($iRow == 1 || $iRow == 3)
  15. {
  16. printf("<td width=\”12\” height=\”5\”
  17. align=\”center\” valign=\”middle\”
  18. bgcolor=\”#000000\”>&nbsp;</td>\n”);
  19. }
  20. else
  21. {
  22. if($iCol == 1 || $iCol == 3)
  23. {
  24. printf("<td width=\”12\” height=\”115\” align=\”center\”
  25. valign=\”middle\” bgcolor=\”#000000\”>&nbsp;</td>\n”);
  26. }
  27. else
  28. {
  29. printf("<td width=\”115\” height=\”115\”
  30. align=\”center\” valign=\”middle\”>”);
  31. if($gBoard[$iLoop] == "x”)
  32. {
  33. printf("<img src=\”” . X_IMAGE . "\”>”);
  34. }
  35. elseif($gBoard[$iLoop] == "o”)
  36. {
  37. printf("<img src=\”” . O_IMAGE . "\”>”);
  38. }
  39. else
  40. {
  41. printf("<input type=\”submit\” name=\”btnMove\” \ value=\”” .
  42. $iLoop . "\”>”);
  43. }
  44. printf("</td>\n”);
  45. $iLoop++;
  46. }
  47. }
  48. }
  49. printf("</tr>\n”);
  50. }
  51. // End the table
  52. printf("</table>”);
  53. }

Функция CheckFull

Функция CheckFull проверяет заполнено ли поле. Он просматривает каждый квадрат на доске и проверяет, есть ли пустой квадрат. Пустой квадрат – это квадрат, куда еще не ходили одна из сторон. Если есть пустой квадрат, то игра продолжается, если нет – завершается.

  1. function CheckFull()
  2. {
  3. global $gGameState;
  4. global $gBoard;
  5. $gGameState = GAME_OVER;
  6. for($iLoop = 0; $iLoop < count($gBoard); $iLoop++)
  7. {
  8. if($gBoard[$iLoop] == "”)
  9. {
  10. $gGameState = GAME_PLAY;
  11. return 0;
  12. }
  13. }
  14. return 1;
  15. }

Функция CheckWin

Функция CheckWin проверяет три квадрата в одной строке у каждого игрока. Сначала он проверяет, есть ли три горизонтальных квадрата в один ряд с ходом одного игрока, точно также проверяет и горизонтальные квадраты, и диагональные квадраты. Если таковы есть, то выигрывает одна из сторон.

  1. function CheckWin()
  2. {
  3. global $gGameState;
  4. global $gBoard;
  5. $player = 1;
  6. while($player <= 2)
  7. {
  8. if ($player == 1)
  9. $tile = "o”;
  10. else
  11. $tile = "x”;
  12. if (
  13. # horizontal
  14. ($gBoard[0] == $tile && $gBoard[1] == $tile &&
  15. $gBoard[2] == $tile) ||($gBoard[3] == $tile && $gBoard[4] == $tile &&
  16. $gBoard[5] == $tile) ||
  17. ($gBoard[6] == $tile && $gBoard[7] == $tile &&
  18. $gBoard[8] == $tile) ||
  19. # vertical
  20. ($gBoard[0] == $tile && $gBoard[3] == $tile &&
  21. $gBoard[6] == $tile) ||
  22. ($gBoard[1] == $tile && $gBoard[4] == $tile &&
  23. $gBoard[7] == $tile) ||
  24. ($gBoard[2] == $tile && $gBoard[5] == $tile &&
  25. $gBoard[8] == $tile) ||
  26. # diagonal
  27. ($gBoard[0] == $tile && $gBoard[4] == $tile &&
  28. $gBoard[8] == $tile) ||
  29. ($gBoard[2] == $tile && $gBoard[4] == $tile &&
  30. $gBoard[6] == $tile))
  31. {
  32. return strtoupper($tile);
  33. }
  34. $player++;
  35. }
  36. }

Вы можете скачать скрипт PHP со этими 3-я функциями


Категория: TicTacToe на РНР | Добавил: Шаке (03.04.2012)
Просмотров: 947 | Комментарии: 1 | Теги: game dev, php, Check, программирование, крестики нолики, игрострой, Ai
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
/>meta http-equiv=