Сравнение
|
|
Dmitri-O_o | Дата: Пятница, 11 Июня 2010, 20:49:05 | Сообщение # 1 |
7 уровень
Группа: Проверенные
Сообщений: 254
Награды: 0
Репутация: 47
Блокировки:
| У меня вопрос. Как выявить у кого больше всех дерева из всех девяти игроков?
|
|
|
|
SirNikolas | Дата: Суббота, 12 Июня 2010, 06:47:34 | Сообщение # 2 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Получится очень большое разветвление из Если/То/Иначе, в которых стоят Integer Comparison. Добавлено (12-06-2010, 06:47) --------------------------------------------- Сейчас сделаю.
|
|
|
|
Самокат | Дата: Суббота, 12 Июня 2010, 07:41:43 | Сообщение # 3 |
5 уровень
Группа: Проверенные
Сообщений: 124
Награды: 0
Репутация: 15
Блокировки:
| Code function GetMaxWoodPlayer takes nothing returns player local integer a = 2 local player MaxWooder if GetPlayerState(Player(0), PLAYER_STATE_RESOURCE_LUMBER) < GetPlayerState(Player(1), PLAYER_STATE_RESOURCE_LUMBER) then set MaxWooder = Player(0) else set MaxWooder = Player(1) endif loop exitwhen a >= 11 if GetPlayerState(MaxWooder, PLAYER_STATE_RESOURCE_LUMBER) < GetPlayerState(Player(a), PLAYER_STATE_RESOURCE_LUMBER) then else set MaxWooder = Player(a) endif set a = a + 1 endloop return MaxWooder endfunction
|
|
|
|
Dmitri-O_o | Дата: Суббота, 12 Июня 2010, 10:49:53 | Сообщение # 4 |
7 уровень
Группа: Проверенные
Сообщений: 254
Награды: 0
Репутация: 47
Блокировки:
| Самокат, если я не ошибаюсь это как бы пример для двух игроков. Или нет?
|
|
|
|
SirNikolas | Дата: Суббота, 12 Июня 2010, 11:22:59 | Сообщение # 5 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Самокат все сделал правильно и компактно. Только я не понял, зачем нужно это:Quote (Самокат) Code if GetPlayerState(Player(0), PLAYER_STATE_RESOURCE_LUMBER) < GetPlayerState(Player(1), PLAYER_STATE_RESOURCE_LUMBER) then set MaxWooder = Player(0) else set MaxWooder = Player(1) endif Кстати, это можно сделать и без JASS'а.
|
|
|
|
Dmitri-O_o | Дата: Суббота, 12 Июня 2010, 12:13:12 | Сообщение # 6 |
7 уровень
Группа: Проверенные
Сообщений: 254
Награды: 0
Репутация: 47
Блокировки:
| Правильно? Ну тогда извиняюсь. Я с джассом не очень дружу. Может подскажите на ГУИ? Добавлено (12-06-2010, 12:13) --------------------------------------------- или объясните чё с этим кодом делать
|
|
|
|
RTx | Дата: Суббота, 12 Июня 2010, 12:19:05 | Сообщение # 7 |
3 уровень
Группа: Проверенные
Сообщений: 61
Награды: 0
Репутация: 5
Блокировки:
| Dmitri-O_o, зачем тебе делать это на гуи когда тебе уже сделали все на джасе, тебе только осталось засунуть это в свою карту, а именно в редакторе тригеров в самом верху есть иконка карты, нажимаешь на нее и копируешь то что лежит ниже(то что писал самокат) в открывшееся справа место. Code function GetMaxWoodPlayer takes nothing returns player local integer a local player MaxWooder set a = 1 set MaxWooder = Player(0) loop exitwhen a > 11 if GetPlayerState(MaxWooder, PLAYER_STATE_RESOURCE_LUMBER) < GetPlayerState(Player(a), PLAYER_STATE_RESOURCE_LUMBER) then else set MaxWooder = Player(a) endif set a = a + 1 endloop return MaxWooder endfunction А дальше открываешь нужный тебе тригер и записываешь только 1 строчку udg_ХХХ=GetMaxWoodPlayer(), где ХХХ название твоей переменной типа игрок, вот и все
|
|
|
|
Dmitri-O_o | Дата: Суббота, 12 Июня 2010, 12:24:25 | Сообщение # 8 |
7 уровень
Группа: Проверенные
Сообщений: 254
Награды: 0
Репутация: 47
Блокировки:
| RTx, спасибо. А то сам бы я не разобрался =)
Сообщение отредактировал Dmitri-O_o - Суббота, 12 Июня 2010, 12:50:32 |
|
|
|
RTx | Дата: Суббота, 12 Июня 2010, 12:49:40 | Сообщение # 9 |
3 уровень
Группа: Проверенные
Сообщений: 61
Награды: 0
Репутация: 5
Блокировки:
| да напиши ниже, это влияет только на то, что те функции которые ниже не могут вызвать функции которые выше
|
|
|
|
Dmitri-O_o | Дата: Суббота, 12 Июня 2010, 12:50:36 | Сообщение # 10 |
7 уровень
Группа: Проверенные
Сообщений: 254
Награды: 0
Репутация: 47
Блокировки:
| RTx, когда я написал udg_Winner=GetMaxWoodPlayer() редактор начал выдавать мне ошибки при компиляции, ссылаясь на то, что какие-то функции отсутствуют.
|
|
|
|
RTx | Дата: Суббота, 12 Июня 2010, 13:05:37 | Сообщение # 11 |
3 уровень
Группа: Проверенные
Сообщений: 61
Награды: 0
Репутация: 5
Блокировки:
| ой=) над написать вот так set udg_Winner=GetMaxWoodPlayer()
|
|
|
|
Dmitri-O_o | Дата: Суббота, 12 Июня 2010, 13:12:09 | Сообщение # 12 |
7 уровень
Группа: Проверенные
Сообщений: 254
Награды: 0
Репутация: 47
Блокировки:
| а я думаю чё он мне пишет отсутствует функция 'set'
|
|
|
|
SirNikolas | Дата: Суббота, 12 Июня 2010, 13:18:53 | Сообщение # 13 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (Dmitri-O_o) Может, подскажете на GUI? Нужна переменная MaxWooder типа игрок, по умолчанию равная "Игрок 1 (красный)". For each (Integer A) from 1 to 12, do (Actions) _Если __(MaxWooder Древесина (текущ.)) < ((Player((Integer A))) Древесина (текущ.)) _То __Set MaxWooder = (Player((Integer A))) Игра - Display to (All players) the text: ((Name of MaxWooder) + имеет больше всего древесины!)
|
|
|
|
Dmitri-O_o | Дата: Суббота, 12 Июня 2010, 13:28:27 | Сообщение # 14 |
7 уровень
Группа: Проверенные
Сообщений: 254
Награды: 0
Репутация: 47
Блокировки:
| погодите. насчёт джассового кода. Если вписывать его в код карты, то он поидее сделает проверку в начале игры. а мне нужно чтобы по истечению таймера. просто у меня баг, то что у меня дерева 3 а у бота 0 и бот почемуто выигрывает.
|
|
|
|
RTx | Дата: Суббота, 12 Июня 2010, 13:35:22 | Сообщение # 15 |
3 уровень
Группа: Проверенные
Сообщений: 61
Награды: 0
Репутация: 5
Блокировки:
| проверку он будет делать только когда, когда ты обратишься к этой функции, то есть когда тебе нужно и в каком тебе нужно тригере ты обращаешься к нужной тебе функции, она считает то что в ней записано и заносит в нужную тебе переменную, ну а дальше делай с этой переменной что хочешь =)
|
|
|
|
SirNikolas | Дата: Суббота, 12 Июня 2010, 13:36:28 | Сообщение # 16 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (Dmitri-O_o) Если вписывать его в код карты, то он, по идее, сделает проверку в начале игры. Нет. Он запустится тогда, когда ты из любого триггера вызовешь какую-нибудь функцию.Quote (Нестандартный комментарий к коду) Введите ниже нестандартный код для указанной карты. Этот текст будет включен в код карты после объявления переменных и до кода любого триггера.
|
|
|
|
Dmitri-O_o | Дата: Суббота, 12 Июня 2010, 13:37:36 | Сообщение # 17 |
7 уровень
Группа: Проверенные
Сообщений: 254
Награды: 0
Репутация: 47
Блокировки:
| ладно, тогда объясните почему бот у которого вообще не может быть дерева выигрывает?
|
|
|
|
SirNikolas | Дата: Суббота, 12 Июня 2010, 13:43:33 | Сообщение # 18 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Quote (SirNikolas) (MaxWooder Древесина (текущ.)) < ((Player((Integer A))) Древесина (текущ.)) Может быть, ты поставил не "меньше", а "больше"?
Сообщение отредактировал SirNikolas - Суббота, 12 Июня 2010, 13:44:28 |
|
|
|
Dmitri-O_o | Дата: Суббота, 12 Июня 2010, 13:44:37 | Сообщение # 19 |
7 уровень
Группа: Проверенные
Сообщений: 254
Награды: 0
Репутация: 47
Блокировки:
| SirNikolas, я делаю тем кодом, который мне дали. откуда я знаю что там поставили.
|
|
|
|
Самокат | Дата: Суббота, 12 Июня 2010, 14:41:33 | Сообщение # 20 |
5 уровень
Группа: Проверенные
Сообщений: 124
Награды: 0
Репутация: 15
Блокировки:
| Я нашёл ошибку вот код: Code function GetMaxWoodPlayer takes nothing returns player local integer a = 1 local player MaxWooder = Player(0) loop exitwhen a > 11 if GetPlayerState(MaxWooder, PLAYER_STATE_RESOURCE_LUMBER) < GetPlayerState(Player(a), PLAYER_STATE_RESOURCE_LUMBER) then set MaxWooder = Player(a) endif set a = a + 1 endloop return MaxWooder endfunction
|
|
|
|