По договоренности
Реализовать виджет "Русская рулетка" на сайт в виде плагина Jquery.
Пример:
Имеем в HTML коде <div id="roullet"></div>
в JavaScript прописываем:
$('#roullet').createRoullet({key1: value1, key2: value2, key3: value3, ..., keyN, valueN})
в указанном div'e получаем требуемый нам виджет с описанными ниже свойствами.
Алгоритм работы (клиент):
1) имеется прямоугольный блок (размером не более 1000px) на котором изображен рулеточный стол в казино.
2) на столе имеется прямоугольная область (1) на котором выложены плиткой красные и белые прямоугольники(в произвольном порядке).
также вместо красного или белого прямоугольника может быть фотография пользователя, который сделал ставку на данную позицию.
3) На одну позицию может сделать ставку только один пользователей.
4) Сделать ставку пользователь может кликнув на кнопку (2) (после нажатия на эту кнопку рулетка должна принать вид (5)) и нажав на желаемую СВОБОДНУЮ позицию
5) Изображение рулетки (4) непрерывно вращается против часовой стрелки (или по часовой)
6) Счетчик (3) показывает время, оставшееся до розыгрыша (дни, часы, минуты, секунды) (розыгрыш происходит на сервере и сервер отдает id победителя)
7) Во время розыгрыша рулетка (4) Ускоренно вращается несколько секунт в обратную сторону, затем замирает и вместо позиций должно появиться изображение аватарки победителя и надпись: победил пользователь %username%
или же (в случае победы текущего пользователя) "Вы победили и выиграли %сумма% %валюта%".
8) После розыгрыша виджет ждет от сервера начала следующего розыгрыша. как только начался следующий розыгрыш рулетка(4) снова медленно вращается.
9) Обычное положение виджета показано на рисунке 001.jpg, а при нажатии на кнопку (0) виджет плавно выдвигается и показывается полностью. по центру окна браузера
10) Если пользователь пытается поставить на занятую позицию ему должно выдаваться сообщение о том, что на данную позицию уже сделана ставка.
11) Если у пользователя недостаточно средств на счету ему должно выдаваться сообщение об этом
Входные данные реализуемой функции:
{
Периодичность ajax запросов: value1, //(в секундах или миллисекундах неважно)
Скорость вращения рулетки в обычном режиме: value2,
Скорость вращения рулетки во время розыгрыша: value3,
Направление вращения рулетки в обычном режиме: value4, // (0 против часовой, 1 по часовой)
Длительность вращения рулетки во время розыгрыша: value5
..................................: ......................
Размеры и положение элементов управления: .....................
Другие данные которые сочтет необходимым учитывать разработчик
}
Алгоритм работы (сервер):
1) По запросу клиента отправляет текущее состояние рулетки(id пользователей на позициях, время до розыгрыша и т.д)
2) При попытке сделать ставку должен проверить не занята ли позиция и баланс пользователя(в БД). в случае удачи списывает со счета пользователя ставку игры (ставка фиксированная и одинакова для всех)
3) Если подошло время розыгрыша то генерирует случайное число от 1 36 и сохраняет в кэше (memcached) id победителя, который поставил на сгенерированный номер. отправляет всем клиентам id победителя.
4) id победителя висит в кэше до следующего розыгрыша.
5) текущее состояние рулетки хранится в memcached
6) время до розыгрыша, пауза между розыгрышами, берутся из конфига.
7) во время паузы между розыгрышами никто не может сделать ставку. все видят только предыдущего победителя
Обмен данными между клиентом и сервером AJAX запросами
На усмотрение разработчика сервер может возвращать как объект JSON так и уже готовый HTML
Структура базы данных прилагается.
Id сессии пользователя хранится в cookies. А на стороне сервера в memcached (Стандартный механизм сессий PHP не используется)