| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > камень, ножницы, бумага для двоих |
| Автор: nepster 26.9.2013, 23:52 |
| Задача сделать игру - камень, ножницы, бумага. Следовательно принцип такой: я создаю заявку на игру, и жду. ко мне заходит 2 игрок и начинается игра. Хочу получить советы по проектированию и структуре базы данных и реализации на php/ |
| Автор: Another 27.9.2013, 01:26 |
| Первая таблица - Игры. Структура - ID | Пользователь 1(ID) | Пользователь 2(ID) | Пользователь 1 - отправил заявку, пользователь 2 - NULL Если не NULL то подключиться к игре невозможно. Вторая таблица - пользователи. Третья таблица - лог игр. Структура - ID | ID игры | Пользователь 1 (что выбрал) | Пользователь 2 (что выбрал) | Этап (если нужно несколько этапов) Далее уже остается только php. Первый пользователь выбирает заявку, заходит в игру и обновляется ячейка Пользователь 2(ID). Далее он выбирает действие (1,2 или 3 (камень, ножницы или бумага)), ищет в бд этап 1 с ID игры, если находит то обновляет ячейку, если нет то создает запись. Там же и проверки что бы знать куда писать (приглашенный или пригласивший(если ID совпадает с...)) Принцип такой, я думаю. |
| Автор: georgiy11 27.9.2013, 08:37 |
| Node.js и без БД, по соединениям, если конечно не нужна статистика. |
| Автор: nepster 27.9.2013, 14:39 | ||
| Изначально планировка такая: Пользователь заходит на сайт (сайт игр). Регистрируется. К примеру у нас есть 10 пользователей на сайте и несколько игр. Будем приводить пример на "Камень ножницы бумага". Например я захожу в игру КНЖ, создаю новую заявку и ожидаю второго игрока. примерная таблица "заявки"
Итак заходит 2 пользователь в заявке дописываем поле пользователь 2, а первый пользователь меняет статус заявки, на режим игры. Все в режиме игры пользователям не доступен сайт, они сидят конкретно в игре. Теперь вопрос по логам: по сути если вести логи всех игр, это будет полный завал базы бесполезной инофрмацией. Представте 100 человек играет в КМЖ и по серверу атакая с воздуха бесполезной информацией, кто чтомпоставил. Поэтому договариваюсь так, когда начинается игра, мы создаем временную таблицу в которой и будет эта статистика, а после игры мы запишим в основную статистику, просто сколько раз выиграл пользователь 1 и сколько раз выиграл пользователь 2, а временную талицу удалим после окончания игры. Итак в идеале у нас выходит: Я захожу в КМБ, создаю заявку и указываю, что играем до 10 например. (кто наберет 10 очков, тоесть выиграет 10 раз считается победителем игры) Заявка создана, ожидаем 2 пользователя или 3 или 4. (допустим могут играть от 2 до 4) Все пользователи на месте, 1 пользователь подтверждает игру Начинается игра, создана временная таблица, идет игра. К примеру пользователь 1 набирает 10 очков и выигрывает. Игра закончена. Делаем запись в истории, что по заявке номер такой-то, такие то пользователи сыграли столько-то игр, из них выиграл пользователь 1. Временную табилцу удаляем. Получается например они за час сыиграли 200 раз. Вместо 200 записей в базе, разместим 1 запись для общей статистики. Временная таблица нужна, что бы пользователи видели статистику во время игры. |
| Автор: Elfet 2.10.2013, 11:47 |
| Ну нет. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//камень-ножницы-бумага-для-двоих-id52449eecae2015666b000000#findElement_E7045_524bdd8fae20154805000320_0 |