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

Урок 2.TicTacToe на PHP. Функция рендера.

Фреймворк игры очень простой, форма редиректит на саму же себя. Форма с элементами создаётся и один из них (элемент) позволяет пользователю начать новую игру, другой – выбрать сложность игры. Но в данный момент мы не имеем функции рендера, посему займёмся им сейчас.

Функция рендера (визуализации) определяет данное состояние игры, с помощью глобальных переменных, которые были объявлены в первом уроке. Если состояние означает начало, то рендеру необходимо начать новую игру и изменить состояние игры на «игра».

Если состояние игры «игра», то функция должна принимать пользовательский ввод, обрабатывать их и рассчитывать движения компьютера, обновлять поле. Если один из игроков выиграл игру, то функция должна сообщить о победе игрока, то же самое и для проигрыша.  

Как вы видите, рендеру нужно сделать огромную работу. Для выполнения всего этого нужны вспомогательные функции. Нам понадобятся вспомогательные функции, которые будут: начинать новую игру, рисовать поле, проверять победу, проверять заполнился ли поле и , наконец, заканчивать игру. Начнем с функции рендера, а затем перейдем к вспомогательным функциям.

У вас должны быть 2 картинки под назвавниями "youWin” и "gameOver” с расширением .jpg, которые вы должны кинуть в images.

Вы можете скачать данный скрипт функция рендера.

  1. function Render()
  2. {
  3. global $gGameState;
  4. global $gBoard;
  5. global $gDifficulty;
  6. switch($gGameState)
  7. {
  8. case GAME_PLAY:
  9. {
  10. // Get the move if the user made one
  11. if($_POST[‘btnMove’] != "”)
  12. {
  13. $gBoard[$_POST[‘btnMove’]] = "x”;
  14. $_SESSION[‘gBoard’] = $gBoard;
  15. }
  16. // Check for a win
  17. if(CheckWin() == "X”)
  18. {
  19. $gGameState = GAME_WIN;
  20. Render();
  21. return;
  22. }
  23. // Check to see if the board is full
  24. if(CheckFull() == 1)
  25. {
  26. $gGameState = GAME_OVER;
  27. Render();
  28. return; }
  29. // Compute the computer’s move if we can still move
  30. if($gGameState == GAME_PLAY && $_POST[‘btnMove’] != "”)
  31. {
  32. if($gDifficulty == 1)
  33. {
  34. ComputerRandomMove();
  35. }
  36. elseif($gDifficulty == 2)
  37. {
  38. $computerMove = ComputerMove();
  39. if($computerMove == "”)
  40. {
  41. ComputerRandomMove();
  42. }
  43. else
  44. {
  45. $gBoard[$computerMove] = "o”;
  46. $_SESSION[‘gBoard’] = $gBoard;
  47. }
  48. }
  49. elseif($gDifficulty == 3)
  50. {
  51. $computerMove = ComputerMove();
  52. if ($computerMove == ‘’)
  53. {
  54. if($gBoard[4] == ‘’)
  55. $computerMove = 4;
  56. elseif($gBoard[0] == ‘’)
  57. $computerMove = 0;
  58. elseif($gBoard[2] == ‘’)
  59. $computerMove = 2;
  60. elseif($gBoard[6] == ‘’)
  61. $computerMove = 6;
  62. elseif($gBoard[8] == ‘’)
  63. $computerMove = 8;
  64. if($computerMove == ‘’)
  65. ComputerRandomMove();
  66. }
  67. }
  68. }
  69. // Check for a win
  70. if(CheckWin() == "O”)
  71. {
  72. $gGameState = GAME_OVER;
  73. Render();
  74. return;
  75. }
  76. // Check to see if the board is full
  77. if(CheckFull() == 1)
  78. {
  79. $gGameState = GAME_OVER;
  80. Render();
  81. return;
  82. }
  83. // Draw the board
  84. DrawBoard();
  85. break;
  86. }
  87. case GAME_WIN:
  88. {
  89. EndGame();
  90. printf("<br><br><br><img src=\”images/youWin.jpg\”
  91. border=\”0\”>”);
  92. break;
  93. }
  94. case GAME_OVER:
  95. {
  96. EndGame();
  97. printf("<br><br><br><img src=\”images/gameOver.jpg\”
  98. border=\”0\”>”);
  99. break;
  100. }
  101. }
  102. // Update our game state
  103. $_SESSION[‘gGameState’] = $gGameState;
  104. }if($_POST[‘dlDifficulty’] != "”)
  105. {
  106. $gDifficulty = $_POST[‘dlDifficulty’];
  107. EndGame();
  108. $gGameState = GAME_START;
  109. StartGame();
  110. }
  111. if($gGameState == GAME_START)
  112. {
  113. StartGame();
  114. }
  115. // Check to see if the user is starting a new game
  116. if($_POST[‘btnNewGame’] != "”)
  117. {
  118. EndGame();
  119. $gGameState = GAME_START;
  120. StartGame();
  121. } 

Категория: TicTacToe на РНР | Добавил: Шаке (29.03.2012)
Просмотров: 1497 | Комментарии: 1 | Теги: php, игра на php, tictactoe, php уроки, Рендер, крестики нолики
Всего комментариев: 1
1 Шаке  
0
листинг не отформатированный, но если вы скачаете скрипт - там все отступы всё соблюдено

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
/>meta http-equiv=