Списки
| |
Krosos | Дата: Суббота, 22 Июня 2013, 20:56 | Сообщение # 1 |
постоянный участник
Сейчас нет на сайте
| Есть 4 объекта и есть у них 4 числа и 4 переменные равные нулю. 1)Создается список 2)4 объекта добавляют в список эти 4 числа (3 от первого , 6 от второго ,12 от третьего , 2 от четвертого ) 3)Список сортируется по убыванию Как сделать так ,чтобы у объекта , чье число(12) стоит первым, изменил свою переменную с нуля на 1?
Мой проект
Сообщение отредактировал Krosos - Суббота, 22 Июня 2013, 20:56 |
|
| |
Abel399 | Дата: Воскресенье, 23 Июня 2013, 07:27 | Сообщение # 2 |
Surpass your limits. Right now.
Сейчас нет на сайте
| Ну, думаю, как-то так: Код with(object) { if (number = 12) number = 1; } Object - идентификатор объекта. Если у тебя все 4 объекта стоят по-отдельности , то решение - если у тебя просто список какой-то там и есть возможность вместо всех объектов использовать один, но в каком-нибудь контролере при помощи цикла for создавать нужное количество экземпляров объекта и назначать им индекс.., либо можно просто всем 4 объектам поставить одного родителя и в цикле использовать родителя как object. Надеюсь, правильно понял вопрос)
Ninja Slayer - 2D Physics Puzzle [cancelled]
|
|
| |
Krosos | Дата: Воскресенье, 23 Июня 2013, 12:50 | Сообщение # 3 |
постоянный участник
Сейчас нет на сайте
| Опишу проблему поподробнее: 1)Дано 2 объекта(Число их может быть любым) и 2 числа (числа получились по формуле , и постоянно меняются), например: если число стало больше 10 то оно отправляется в список. 2)Получились числа 12 и 14 ,далее они попадают в список 3)Числа сортируются 4)И вот первым стоит 14 ,а вторым 12 5)Число 14 принадлежит объекту 2 и поэтому изменяет его переменную на 1 и число удаляется из списка 6)Объект ,после некоторых манипуляций с ним, изменил свою переменную на 0 и изменил другую переменную на 1 ,чтобы та продолжила действия со списком (Ну например global.Next=1) 7)Далее список снова выбирает первое число в нем и так , как число 14 удалилось - осталось 12 и оно становится первым 8)Число 12 изменяет переменную своего объекта , которому оно принадлежало на 1 и удаляется из списка 9)Объект ,после некоторых манипуляций с ним, изменил свою переменную на 0 и изменил другую переменную на 1 ,чтобы та продолжила действия со списком 10)Список вновь заносит в себя новые числа уже от 4 других объектов и происходят аналогичные действия.
(Подобный список я уже видел в одном исходнике , но там числа не изменялись , но их можно было изменить в настройках.Исходник был очень трудный и понять его было очень трудно , а также там был общий родитель для всех объектов)
Мой проект
|
|
| |
jone157 | Дата: Воскресенье, 23 Июня 2013, 20:24 | Сообщение # 4 |
участник
Сейчас нет на сайте
| Krosos, Можешь скинуть код объектов, чтобы было понятнее?
|
|
| |
Krosos | Дата: Понедельник, 24 Июня 2013, 18:41 | Сообщение # 5 |
постоянный участник
Сейчас нет на сайте
| jone157, ох , мне бы самому этот код=) Вот что-то подобное , я изменил немного свой код и теперь использую родителя: 1) o_p(объект- родитель),O1,O2,O3 (Другие 3 объекта) , C_1(Объект списка) 2)o_p Step: Код if global.SpeedtGo=1 //Если эта переменная равна 1 то можно считать: { if UnitSpeed[O]>100 //Если скорость одного из трёх объектов набила больше 100 { ds_list_add(global.turn,global.UnitSpeed[O]) //Число у объекта ,которому оно принадлежит, попадает в список global.CombatGo=0 //Счет скорости-прекратить (Пусть пока тут поваляется) }else { global.UnitSpeed[O]+=D //Если скорость меньше 100 , то прибавить к ней скорости (т.е. было 10 +10 стало 20 , было 20 + 10 , стало 30 и так, пока не будет 100) } } 3)C_1: Create: Код global.CombatGo=1 //начать счет скорости global.turn=ds_list_create() //Создать лист
Step: Код if global.CombatGo=0 { //Если счет скорости прекратился ds_list_sort(global.turn,false) //Отсортировать лист по убыванию } 4)Список отсортировался 5)А дальше у меня не получается
O1: Код Create: O=1 UnitSpeed[O]=10 D=UnitSpeed[O]
O2: Код Create: O=2 UnitSpeed[O]=8 D=UnitSpeed[O]
O3: Create: Код O=3 UnitSpeed[O]=10 D=UnitSpeed[O]
Добавлено (24.06.2013, 18:41) --------------------------------------------- У меня возникла идея!=) Но блин голова вообще не работает после работы... Я думаю после 4 пункта надо сделать следующее ds_list_find_value(global.turn,1) //Вывсети из списка первое число У родителя: Step:
Если например у нас два объекта набрали одинаковую скорость , тогда сначала ходит тот объект , чей O=1 , а потом тот чей O=2. (Может кто-нить подсказать как это сделать?) В итоге:
Если global.UnitSpeed[O]=первому числу из списка and global.UnitCanMove[O]=1 //global.UnitCanMove[O]=1 - переменная позволяющая игроку ходить Сначала идет global.UnitCanMove[1]=1 далее global.UnitCanMove[2]=1 (Но его число не достигло больше сотни - значит он ходить не будет) global.UnitCanMove[3]=1 (Ходит после того , как первый объект закончит ход) O кончились 7)ds_list_delete(global.turn,1) //Первое число из списка удаляется! ds_list_sort(global.turn,false) Ну и все=) далее уже нормально должно идти...
Мой проект
Сообщение отредактировал Krosos - Понедельник, 24 Июня 2013, 19:03 |
|
| |
|