Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Он-лайн игра
 
 автор: Mifey   (10.02.2010 в 10:33)   письмо автору
 
 

Есть в БД строки, например:

1 логин1 логин2 удар блок
...
35 логин1 логин2 удар блок

Когда у игрока открывается страница battle.php, идет поиск строк, чтоб у первой строки логин1=логин2 у другой и у первой логин2=логин1 у второй, при этом логин1 у первой=логин игрока. После того, как нужные две строки найдены - проверябтся удары/блоки, отнимается уровень жизни и т.д., после этого строки удаляются из БД.

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

  Ответить  
 
 автор: chexov   (10.02.2010 в 10:38)   письмо автору
 
   для: Mifey   (10.02.2010 в 10:33)
 

Воспользуйтесь переадресацией на другую страницу после размена ударов

  Ответить  
 
 автор: Mifey   (10.02.2010 в 10:58)   письмо автору
 
   для: chexov   (10.02.2010 в 10:38)
 

При чем тут переадресация? Когда один открывает страницу выполняется скрипт и пока строки не удалились у второго тоже открывается эта же страница. И получается два раза размен происходит

  Ответить  
 
 автор: chexov   (10.02.2010 в 14:56)   письмо автору
 
   для: Mifey   (10.02.2010 в 10:58)
 

КАКим образом у обоих иргоков одновременно обновляется страница?

Я понимаю алгоритм так: Зашел игрок А, указал удар и блок, все! на этом его миссия закончилась.
Зашел игрок Б, указал свой удар и блок
Далее скрипт сравнивает удары и блоки, если удар Игрока А пробил блок Игрока Б, то записывается какой то результат и запись об ударах обоих игроков стирается, если нет то еще что нибудь... так?

  Ответить  
 
 автор: Mifey   (10.02.2010 в 17:56)   письмо автору
 
   для: chexov   (10.02.2010 в 14:56)
 

Игрок А сделал удар, потом Игрок Б сделал удар. при обновлении страницы(она может просто обновиться, или если бой групповой, то снова открывается. чтоб поставить удар на Игрок В). Вот и может и бывает получается, что одновременно открывается страница у нескольких игроков.

  Ответить  
 
 автор: neadekvat   (10.02.2010 в 18:15)   письмо автору
 
   для: Mifey   (10.02.2010 в 17:56)
 

Было бы логично делать проверки, прежде чем выводить что-то пользователю.
Вероятность того, что проверка пройдет с ошибкой очень мала.
К тому же, проверку надо проводить и после действий пользователя.
А по-другому никак не избежать этого.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования