Игра 4: как я загорелся желанием создать браузерную игру

13 Сен
2011

Привет! Сегодня пятница, и я предлагаю вам не читать текст топика, а пройти в самый его низ чтобы попробовать игру в деле.
А тут немного неинтересного текста и история из жизни.

На блоге много писали о замечательном теге html5 . Для саморазвития решил поэкспериментировать с ним, но эксперименты не закончились отрисовкой прямоугольничков и круглишков. Я решил создать простенькую (но не значит, что безглючную) логическую игрушку, да еще и с применением метода long polling, который лежит в основе логики работы игры.
Этот метод позволяет инициировать обновление на странице пользователей со стороны сервера при возникновении каких-либо событий.
Коротко о реализации и сама игра

Пример реализации метода очень прост. У клиента это вот такой запрос:
function updateCurrGames()
{
	$.ajax
		({
			type: "POST",
			dataType: "json",
			// Этот скрипт будет молчать, пока не произойдет нужного события 
			// на сервере (обновление данных в БД)
			url: "./ajax/updateCurrGames.php",
			success: function(msg)
			{	
				// Произошло событие - обрабатываем
			},
			error: function()
			{
				// Если произошел тайм-аут или другое непредвиденное событие
				updateStatus();
			}
		});
}

На сервере это в данном случае скрипт updateStatus.php, который содержит примерно такой код:
$query = "SELECT count(id_game) FROM games";
$res = mysql_query($query);
$arr = mysql_fetch_row($res);
// количество игр на начало коннекта
$CNT = $arr[0];
$CNTnew = $CNT;
while($CNTnew== $CNT)
{
	$res = mysql_query($query);
	$arr = mysql_fetch_row($res);
	$CNTnew = $arr[0];
	// для разгрузки:
	sleep(1);
}
// Вышли из цикла - значит появилось нужное событие (изменилось количество игр)
// Сформируем массив текущих игр и отошлем их клиенту 
$query = "SELECT id_game FROM game;
$res = mysql_query($query);
$i = 0;
while($arr = mysql_fetch_assoc($res))
{
	$ids_game[$i]['id_game'] = $arr['id_game'];
	$i++;
}
echo json_encode($ids_game);

Смысл игры таков: игроки «накидывают» фишки на поле сверху, стремясь быстрее соперника сложить последовательно 4 фишки по горизонтали, вертикали или диагонали.
Попробовать игру можно тут.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх