|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.06.2011, 21:13 | #1 |
Пользователь
Регистрация: 08.06.2011
Сообщений: 10
|
Распределение в массиве
Вот пишу игру, мафия называется.
Проблема с распределением ролей, может кто подскажет? Есть массив: $role=Array('Мирный житель','Комиссар','9'=>'Мафиози',' 10'=>'Босс мафии'); if($a>=7)$role[8]='Маньяк'; if($a>=9)$role[2]='Доктор'; if($a>=11)$role[3]='Шериф'; if($a>=12){$role[4]='Путана'; $role[5]='Бомж';} if($a>=14){$role[6]='Самурай'; $role[11]='Шпион мафии';} if($a>=15)$role[12]='Киллер мафии'; if($a>=16)$role[7]='Фанатик'; Где $a = кол-во игроков, и чем их больше тем больше выбор ролей. Должно быть где-то 40% простых Мирных жителей, 30% простых Мафиози и по одному из остальных. Как это сделать? |
26.06.2011, 22:13 | #2 |
Форумчанин
Регистрация: 03.05.2011
Сообщений: 158
|
Забавная задачка. Торопился, поэтому немного некрасиво решил, наверняка найдутся решения и по-прямее, но вот как-то так:
PHP код:
Защиту от дурака не делал, поэтому не советую использовать скрипт на маленьких количествах игроков - может намертво подвиснуть. |
26.06.2011, 22:35 | #3 |
Пользователь
Регистрация: 08.06.2011
Сообщений: 10
|
хм, спасибо. А как это под вывод из бд подогнать?
|
27.06.2011, 12:02 | #4 |
Форумчанин
Регистрация: 03.05.2011
Сообщений: 158
|
а что надо выводить из БД и как оно там лежит ?
|
27.06.2011, 14:17 | #5 |
Пользователь
Регистрация: 08.06.2011
Сообщений: 10
|
выводятся юзеры, подавшие заявку регистрации на игру.
|
27.06.2011, 14:34 | #6 |
Форумчанин
Регистрация: 03.05.2011
Сообщений: 158
|
А роли вы будете записывать в БД ?
Если да, то (предположим, у вас есть массив ай-ди пользователей, которые подтвердии участие) - вы пробегаете по массиву ай-ди и просто с каунтером по массиву готорых уже ролей, и делаете апдейт на каждого пользователя. Либо дублируете присвоение ему роли (а это в том скрипте, что я тут выложил, происходит 1 раз, не считая инициализации всех в мирных граждан), это даже красивее получится. Если не будете писать в БД (что есть странно, но осуществимо) - то у вас будет 2 массива (в любом случае) - первый - это результаты запроса из БД вида PHP код:
PHP код:
PHP код:
Последний раз редактировалось graymaster; 27.06.2011 в 14:36. |
27.06.2011, 14:56 | #7 |
Пользователь
Регистрация: 08.06.2011
Сообщений: 10
|
Спасибо большое, попробую.
|
27.06.2011, 17:10 | #8 |
Пользователь
Регистрация: 08.06.2011
Сообщений: 10
|
Решил действовать своим способом, т.к. в вышеизложенном несоблюдается баланс ролей. Проблема: везде роли в базе 0 (мирный житель)
PHP код:
Последний раз редактировалось SPAHI4; 27.06.2011 в 18:12. |
27.06.2011, 18:17 | #9 |
Форумчанин
Регистрация: 03.05.2011
Сообщений: 158
|
А что такое "баланс ролей" ?
/* В "мафию" играл когда-то в далёком детстве, и из правил помню только самый базис */ |
27.06.2011, 18:30 | #10 |
Пользователь
Регистрация: 08.06.2011
Сообщений: 10
|
Ну, если например шериф(убивает мафа) и киллер(убивает) миров взаимозаменяемы, то победа одной из сторон более возможна. Вот, прошу исправить ошибку в той функции
Последний раз редактировалось SPAHI4; 27.06.2011 в 20:49. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Геометрическое распределение | papoose | Помощь студентам | 0 | 21.05.2011 20:43 |
(BC 3.1) Распределение памяти! | Lawliet32 | Помощь студентам | 8 | 28.12.2009 23:49 |
распределение по массиву | SuBwooFer | JavaScript, Ajax | 2 | 31.08.2009 10:48 |
Распределение памяти | Jeni | Общие вопросы Delphi | 6 | 31.03.2008 19:59 |