За последние 24 часа нас посетили 17747 программистов и 1658 роботов. Сейчас ищут 947 программистов ...

Мультиплеерность игры...

Тема в разделе "Прочие вопросы по PHP", создана пользователем EvelRus, 23 июн 2008.

  1. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Пытаюсь сделать игру... для двух игроков!
    Игра "Ключевое слово", думаю помните, когда из одного слова, надо составить другие...
    Отсюда два вопроса

    1) Как научить программу этой мултиплеерности? т.е. что бы играть могли два человека.

    2) как научить программу разобрать слово по буквам (я так понял length+slovo[0,1,2...x]), а после этого выбрать из базы слово которое можно составить из этих букв (можно использовать не все буквы, но только то кол-во раз. сколько она используется)
    При этом вывести общее кол-во составленных слов (числом) и использовать составленые слова для игры...
    Спасибо!
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    1)Каждое действие записываем в БД. Каждый раз получаем состоянии игры из БД. Загружаем рабочую область в фрейм, обновляем каждые N секунд (например заголовоком в скрипте - Refresh: 3)
    2)
    PHP:
    1. $var="word";
    2. while (!empty($var))
    3. {
    4.     $arr[]=substr($var,0,1);
    5.     $var=substr_replace($var,null,0,1);
    6. }
    7. print_r($arr);
    ЗЫ. С массивом можно удобно работать. Ничего не могу сказать о выборке из БД всех слов, ИМХО надо сначала составить все возможные комбинации и проверить на наличии в БД, или сначала выбрать все слова из БД и проверить на соответствие условиям.
     
  3. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    имхо, лучше выбирать из базы ограниченный набор, чем тянуть в пых большую базу и парсить
     
  4. Amian

    Amian Активный пользователь

    С нами с:
    15 мар 2007
    Сообщения:
    189
    Симпатии:
    0
    А еще лучше не пытаться делать на PHP то, для чего он не предназначен :p Concurrent programming тебе в помощь на Java или C#.
     
  5. dj--alex

    dj--alex Активный пользователь

    С нами с:
    29 ноя 2007
    Сообщения:
    184
    Симпатии:
    0
    Про линукс тоже говрили не для игрушек
    А счастливые владельцы Nvidia счас гамают в то время как я на Ати месяц уже без игр после неудной смены битности с 32 на 64.

    Если это можно сделать игру на PHP,то почему бы нет?Новое развитие языка может будет
    Может PHP наконец станет немного интерактивней
     
  6. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    Amian

    ты полагаешь, что территория - плохая игра?:)
     
  7. Amian

    Amian Активный пользователь

    С нами с:
    15 мар 2007
    Сообщения:
    189
    Симпатии:
    0
    Можно писать и на PHP, но будет 2 весомых минуса по сравнению с языками, поддерживающими concurrency:

    1 - асинхронность получения пользователями информации
    2 - повышенная нагрузка

    PS: в территорию не играл :)
     
  8. dj--alex

    dj--alex Активный пользователь

    С нами с:
    29 ноя 2007
    Сообщения:
    184
    Симпатии:
    0
    надо сообщить о баге чтобы в PHP7 появились такие возможноси
    даешь абуз!
     
  9. Amian

    Amian Активный пользователь

    С нами с:
    15 мар 2007
    Сообщения:
    189
    Симпатии:
    0
    Это не баг, а разная архитектура приложений :roll:
     
  10. dj--alex

    dj--alex Активный пользователь

    С нами с:
    29 ноя 2007
    Сообщения:
    184
    Симпатии:
    0
    лично я считаю недостатки архитектуры вполне поправимыми.
    это требование времени.

    иначе ajax и ко будет тяжело завалить им.
     
  11. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Вопрос в силе :(
     
  12. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    нужно составить все возможные комбинации букв из этого слова...
     
  13. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Вот как?? :((( я о том и спрашиваю :(
     
  14. Cron

    Cron Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    289
    Симпатии:
    0
    Адрес:
    Украина, Сумы
    Алгоритмический прием почти стандартный, но может не пойти при сильно большой базе:
    1. Вытягиваем из базы слово.
    2. Упорядочиваем буквы этого слова по алфавиту. К примеру из PHP получаеться HPP, а из слова "программист" -> "агиммопррст".
    3. В нашем исходном слове делаем тоже самое (для удобство оформляем это функцией).
    4. Далее узнать можно ли из исходного получить слово из базы намного легче - можно или оба перевести в ассоциативный массив и сравнить массивы (долго и некрасиво), или просто по позициям сравнить два слова - это намного легче.
    К примеру, чтобы из исходного слова получить программист, его переделанная версия должна содержать внутри себя "агиммопррст", т.е. "а*г*и*мм*о*п*рр*с*т*", где * - любой набор букв.
     
  15. Cron

    Cron Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    289
    Симпатии:
    0
    Адрес:
    Украина, Сумы
    Появилась одна идея. Если база слов очен большая - то можно приделать дополнительное поле, в которое записать упорядоченный по алфавиту набор букв.
    Далее берем наше исходное слово, к примеру тот же "агиммопррст" и выбираем из базы
    [sql]SELECT * FROM `mytable` WHERE `convert_word` REGEXP 'а{0,1}г{0,1}и{0,1}м{0,2}о{0,1}п{0,1}р{0,2}с{0,1}т{0,1}'[/sql]