Войти

Показать полную графическую версию : [решено] Скрипт для игры в реальном времени, Помогите или дайте направление


Artem-Samsung
25-06-2008, 00:04
Мне вот от самого начал моего пока что небольшого отрезка пути к познанию php и веб-программированию в целом было интерестно, как составить непростую игру.
К примеру между двумя пользователями.
Для примера игра в камень - ножници - бумагу.

Один человек ставит камень
Второй - ножницы.

Присваивается очко первому за то, что камень побил ножницы.

Возможно это реализовать при php и mysql ?

rus-4-ever
25-06-2008, 00:56
НЕТ!!!
Тут скорее JavaScript юзать надо... а лучше AJAX (а к ним уже и РНР привязывается, если надо)... или вообще что то типо флеш приложений чтоли (или как там они называются-вконтакте ещё такие висят)

Тут по сути то нужно интерактивное приложение! Нужно обрабатывать запросы с сервера! А РНР этого не позволяет, так как он только формирует страницу!!! один раз!

bruder
25-06-2008, 01:01
ну вообщето это элементарно, зачем тут нужна база? Если вручную, то кроме формы и пары строк кода ничего не надо. Если автоматически, то еще функция rand для случайных чисел

Artem-Samsung
25-06-2008, 01:08
Разве нельзя как то с полной перезагрузкой страницы?
Рандомно ничего делать не нужно.
Нужно что бы два человека могли играть.

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

BASSON_XVI
25-06-2008, 01:20
Ммм.. ну вообщем сделать перезагрузку страницы скажем каждые 5 секунд.. и все.. игра маленькая думаю фреймов ненадо... хранить данные можно в БД или в файлах... но думаю в файлах будет лучше... так как обьем данных будет меньше и файлы работать будут быстрее....

rus-4-ever
25-06-2008, 01:25
Ну можно и с перезагрузкой... Только это неэффективно...
Если например по умолчанию дается минута на ход, а соперник стормозил, то стороница перезагрузится вхолостую...
Если чел сходил за 2 секунды-то целая минута лишнего ожидания!!!

Ну а так-можно к каждой игре присваивать свой ID...
есть таблица:
ID | 1 gamer | 2 gamer
12 | bumaga | kamen

Думаю с реализацией проблем не видно???

а 5 секунд ставить не стоит :( если инет глючит, то толком сделать ход то не получится... страница по пол минуты загружается...

Artem-Samsung
25-06-2008, 02:25
Можно сделать перезагрузку кнопкой дополнительной, при желании на которую можно нажимать

BASSON_XVI
25-06-2008, 02:45
Да с кнопкой ты правильно... :drug:

Artem-Samsung
25-06-2008, 03:03
А вот есть какие то варианты, как присобачить чат?
То есть сделать фрейм или что то типа того с чатом. Есть какие то доки и варианты простых чатов, которые можна было так вставить? :)
Завтра попробую написать простенький скрипт этой игры, зацените. Да и мож что не получится, буду рад помощи :))

Busla
25-06-2008, 11:30
солидарен с rus-4-ever - оптимально - использовать AJAX
решение на php получается громоздким, но почему нет?
Какая-то таблица с профилями пользователей, допустим, есть. Добавляем таблицу игры с результатами ходов. Как передать на сервер ход игрока - это понятно - обычная форма. Пишем крохотный php-скрипт который возвращает состояние игры по её id - буквально одну цифру. Со страницы игры скриптом регулярно опрашиваем этот php. Зачем всю страницу-то перегружать?

Костэн
25-06-2008, 12:02
Вот что я думаю по этому поводу :

1. Создаётся единая для всех желающих поиграть страница с запросом ник_нейма.
2. В базе данных выделяется ячейка памяти не больше чем для двух ник_неймов с упорядоченым
именем. Допустим ячейка1.
3. При вводе ник_нейма потенциальный игрок получает запрос(с кем из списка он бы хотел по играть) с выводом тех, в чьей ячейке есть место для соперника. Если он является первым, то ячейка создаётся сразу после вывода отсутствия игроков. И оповещяет об этом.
4. При вводе ник_нейма своего соперника, ячейка заполняется и для них создаётся по страничке с игрой(камень ножницы бумага).
5. Эти странички одинаковы. На них присутствуют три рисунка соответственно тематике игры. У каждого рисунка своё имя. Логично будет сделать так: у камня - камень, у ножниц- ножницы, у бумаги - бумага.
6. При клике на одном из рисунков запускается обработчик onSubmit(), которому присвоена функция отправки принятого решения в виде имени рисунка.
7. В ячейке, после выбора игроков, под ихними ник_неймами выделяется память для хранения имени выбранного рисунка.
8. Как только под обоими игроками появляется выбор, запускается функция сравнения по принципу: камень > ножницы > бумага > камень.
9. Если выбор Игрока один, будет сделан в пользу рисунка "ножницы"(допустим), а Игрок два, выберет "бумагу"(допустим), то функция сравнивает и выводит результат в ново-выделенную память для хранения счёта.
Ножницы > бамага, значит выиграли ножницы. И один балл присваивается Игроку один.
10. На страничке должен быть счётчик времени для принятия решения выставленный на двадцать секунд. Т.к. страница откроется быстро. Если игрок один сделал выбор за пять(допустим) секунд, а второй за семь(доустим),
то остаётся ещё время для ожидания. Что бы такого не происходило нужно, как только последний игрок сделает выбор - выводить результат поединка.




© OSzone.net 2001-2012