Воскресенье, 12 Июля 2020, 23:07

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Списки
Списки
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 puzzle game with physics
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
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Списки
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2020
free games download
Рейтинг