Суббота, 03 Июня 2023, 14:27

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » вывод инфы об определенном экзэмпляре обьекта
вывод инфы об определенном экзэмпляре обьекта
zaicev9797Дата: Среда, 24 Апреля 2013, 16:00 | Сообщение # 1
AbRaKaDaBrA
Сейчас нет на сайте
1)у меня есть обьект астероид
у него есть параметр "масса"(при старте произвольна в опр. пределах)
и параметр "включен"(при старте =0)
при клике мышкой по астероиду "включен" присваивается1

дык вот мне надо выводить на экран инфу("масса") именно того обьекта которому "включен" присвоена 1

2)может вобще ктонить подкинуть инфу о том как ид обьектов использовать (функции там всякие примеры , статьи)


проект Mysterious Space. The losted moment

Сообщение отредактировал zaicev9797 - Среда, 24 Апреля 2013, 17:56
dimonnomidДата: Среда, 24 Апреля 2013, 16:35 | Сообщение # 2
был не раз
Сейчас нет на сайте
Цитата
дык вот мне надо выводить инфу("масса") на экран именно того обьекта которому "включен" присвоена 1

а можно уточнить что вы имеете ввиду под "выводить инфу("масса") на экран именно того обьекта"?
что такое экран объекта?

draw_text(x,y,string)

вместо string ставим переменную "масса"... не помню как там по синтаксису вставлять переменную


Сообщение отредактировал dimonnomid - Среда, 24 Апреля 2013, 16:36
zaicev9797Дата: Среда, 24 Апреля 2013, 17:55 | Сообщение # 3
AbRaKaDaBrA
Сейчас нет на сайте
простите исправил

1)у меня есть обьект астероид
у него есть параметр "масса"(при старте произвольна в опр. пределах)
и параметр "включен"(при старте =0)
при клике мышкой по астероиду "включен" присваивается1

дык вот мне надо выводить на экран инфу("масса") именно того обьекта которому "включен" присвоена 1

2)может вобще ктонить подкинуть инфу о том как ид обьектов использовать (функции там всякие примеры , статьи)


проект Mysterious Space. The losted moment
GameMixДата: Среда, 24 Апреля 2013, 18:25 | Сообщение # 4
старожил
Сейчас нет на сайте
В Create астероида:
Код
massa = irandom_range(50, 150); // назначение случайной индивидуальной массы
active = false; // статус - выключен

В событии нажатия ЛКМ:
Код
with (object_index) // применяем ко всем экземплярам данного объекта...
     active = false; // ...действие отключенния

active = true; // включаем только данный экземпляр
global.m = massa; // записываем массу данного экземпляра

Для наглядности можно ещё в Draw записать:
Код
draw_sprite(sprite_index, image_index, x, y); // отрисовываем собственный спрайт объекта
draw_text(x, y, string(massa)); // поверх рисуем индивидуальную массу


И создадим объект, который будет хранить массу выбранного экземпляра и отображать её.
В Create:
Код
global.m = 0; // переменная, в которой будет храниться масса выбранного экземпляра

В Step или EndStep:
Код
room_caption = "m = " + string(global.m); // отображаем переменную в заголовке окна с пояснением


Steel Standoff - 2D аркада.
Мои статьи
zaicev9797Дата: Среда, 24 Апреля 2013, 18:36 | Сообщение # 5
AbRaKaDaBrA
Сейчас нет на сайте
сясь папыробуэм biggrin

Добавлено (24.04.2013, 18:36)
---------------------------------------------
а по поводу второго пункта?


проект Mysterious Space. The losted moment
nekroo98Дата: Среда, 24 Апреля 2013, 18:39 | Сообщение # 6
почетный гость
Сейчас нет на сайте
че тут сложного? по клику мышки пишешь

Код
global.id_asteroida = id;


В рисующем обьекте пишешь например

Код
draw_text('Масса :'+string(global.id_asteroida.mass))


Здесь считается, что в обьекте-астероиде параметр массы хранится в переменной mass.
zaicev9797Дата: Среда, 24 Апреля 2013, 18:42 | Сообщение # 7
AbRaKaDaBrA
Сейчас нет на сайте
Цитата (zaicev9797)
функции там всякие примеры , статьи


проект Mysterious Space. The losted moment
GameMixДата: Среда, 24 Апреля 2013, 18:46 | Сообщение # 8
старожил
Сейчас нет на сайте
zaicev9797, справка Game Maker 8!

Steel Standoff - 2D аркада.
Мои статьи
zaicev9797Дата: Среда, 24 Апреля 2013, 19:53 | Сообщение # 9
AbRaKaDaBrA
Сейчас нет на сайте
Цитата (GameMix)
active = false

не могу понять зачем это нужно?


проект Mysterious Space. The losted moment
dimonnomidДата: Среда, 24 Апреля 2013, 23:09 | Сообщение # 10
был не раз
Сейчас нет на сайте
zaicev9797,

Цитата
active = false

не могу понять зачем это нужно?


Это просто переключатель. это то же самое что 0 и 1
zaicev9797Дата: Четверг, 25 Апреля 2013, 05:56 | Сообщение # 11
AbRaKaDaBrA
Сейчас нет на сайте
не, просто если убрать эту чатсь кода то впринципе ничего не меняется
помоему это лишняя строка, да и по логике не понятно что она там выполняет,
а вот
Цитата (GameMix)
active = true
и понятно-зачем, и нужно


проект Mysterious Space. The losted moment

Сообщение отредактировал zaicev9797 - Четверг, 25 Апреля 2013, 05:57
GameMixДата: Четверг, 25 Апреля 2013, 14:56 | Сообщение # 12
старожил
Сейчас нет на сайте
Цитата (zaicev9797)
не, просто если убрать эту чатсь кода то впринципе ничего не меняется
помоему это лишняя строка, да и по логике не понятно что она там выполняет,

Вот отсюда потом и появляются магические баги и быдлокод. Эта строка не лишняя, просто прими, как факт smile


Steel Standoff - 2D аркада.
Мои статьи


Сообщение отредактировал GameMix - Четверг, 25 Апреля 2013, 14:57
zaicev9797Дата: Четверг, 25 Апреля 2013, 16:44 | Сообщение # 13
AbRaKaDaBrA
Сейчас нет на сайте
блин, в справке даже если и есть что то про ай ди то там это так написано что это даже не разобрать в контексте. я просмотрел все вкладки гмл
и не заметил там ничего об ид
может мне ктонить помочь?


проект Mysterious Space. The losted moment
dimonnomidДата: Пятница, 26 Апреля 2013, 17:52 | Сообщение # 14
был не раз
Сейчас нет на сайте
zaicev9797,

В игре основными представителями являются экземпляры различных объектов. В течение запуска игры Вы можете изменить множество аспектов этих экземпляров. Также Вы можете создать новые экземпляры объекта и их уничтожить. Кроме перемещения, связанных с переменными, обсуждаемых выше - будет рассмотрено рисование, связанное с переменными, которые будут обсуждаться ниже. Каждый экземпляр объекта имеет следующие переменные:

object_index* Идентификатор объекта, которому принадлежит текущий экземпляр. Эта переменная не может быть изменена.
id* Уникальный идентификационный номер текущего экземпляра объекта (больше 100000). При создании экземпляров объектов в комнатах Вы можете увидеть id экземпляра объекта, если наведёте на него курсор.)
mask_index Идентификатор спрайта, который используется в качестве маски столкновений для текущего экземпляра объекта. Значение -1 означает, что в качестве маски используется текущий спрайт объекта.
solid Отражает, является ли текущий экземпляр объекта твёрдым. Это может быть изменено в течение игры.
persistent Отражает, является ли текущий экземпляр объекта постоянным, и будет ли он появляться при переходе в другую комнату. Вы часто можете захотеть выключить "постоянность" в определённых моментах. (Например, когда Вы возвращаетесь в первую комнату.)

Есть одна проблема при работе с экземплярами объекта. Идентифицировать индивидуальные экземпляры объекта не так уж легко. У них нет имени. Когда есть только один экземпляр конкретного объекта, то Вы можете использовать имя объекта, но в противном случае, Вам нужно будет получить идентификатор экземпляра. Вы можете использовать его в операторе with и как объектный идентификатор. К счастью, существует множество переменных и функций, которые помогут Вам разместить экземпляры объекта.

instance_count* Содержит общее количество экземпляров в текущей комнате.
instance_id[0..n-1]* Содержит идентификатор конкретного экземпляра. Где n является номером экземпляра.
Заметьте, что присваивания происходят в экземплярах в каждом шаге, поэтому Вы не сможете использовать значения из предыдущих шагов (если они изменились). Также в массиве, описанном выше, список обновляется только в конце шага. Так что удаленные экземпляры остаются в нём до конца шага, поэтому проверяйте действительно ли существует экземпляр. Рассмотрим на примере. Предположим, каждое устройство в Вашей игре имеет определённую мощность, и Вы хотите найти самое мощное устройство, то Вы можете использовать следующий код:

{
maxid = -1;
maxpower = 0;
for (i=0; i<instance_count; i+=1)
{
iii = instance_id[i];
if (iii.object_index == unit)
{
if (iii.power > maxpower)
{maxid = iii; maxpower = iii.power;}
}
}
}

После цикла maxid будет содержать идентификатор устройства с самой большой мощностью. (Не уничтожайте экземпляры объекта в течение такого цикла, поскольку они автоматически будут удалены из массива, и в результате начнут пропускаться экземпляры объекта.) Для конкретно этой ситуации Вы можете ипользовать:

{
maxid = -1;
maxpower = 0;
with (unit) do
{
if (power > maxpower)
{maxid = self; maxpower = power;}
}
}

instance_find(obj,n) Возвращает идентификатор экземпляра объекта obj за номером (n+1). Если он не существует, то возвращается специальный объект noone. Заметьте, что назначение экземпляров к своим идентификаторам изменяется каждый шаг, так что Вы не можете использовать переменные из предшествующих шагов.
instance_exists(obj) Возвращает (истина), если экземпляр объекта obj существует. obj может быть объектом, идентификатором экземпляра или всеми сразу.
instance_number(obj) Возвращает количество экземпляров объекта obj. obj может быть объектом, идентификатором экземпляра или всеми сразу.
instance_position(x,y,obj) Возвращает идентификатор экземпляра объекта obj, находящегося в точке (x,y). Если в указанной точке находятся несколько экземпляров объекта obj, то функция возвращает идентификатор первого экземпляра. obj может быть объектом, идентификатором экземпляра или всеми сразу. Если он не существует, то возвращается специальный объект noone.
instance_nearest(x,y,obj) Возвращает идентификатор ближайшего к точке (x,y) экземпляра объекта obj. obj может быть объектом, идентификатором экземпляра или всеми сразу.
instance_furthest(x,y,obj) Возвращает идентификатор наиболее отдалённого от точки (x,y) экземпляра объекта obj. obj может быть объектом, идентификатором экземпляра или всеми сразу.
instance_place(x,y,obj) Возвращает идентификатор экземпляра объекта obj, который встретится, если текущий экземпляр поместить в точку с координатами (x,y). obj может быть объектом, идентификатором экземпляра или всеми сразу. Если он не существует, то возвращается специальный объект noone.

Следующие функции могут быть использованы для создания и разрушения экземпляров объекта.

instance_create(x,y,obj) Создаёт экземпляр объекта obj в точке, с координатами (x,y). Функция возвращает идентификатор созданного экземпляра.
instance_copy(performevent) Создаёт копию текущего экземпляра. performent показывает, следует ли исполнять для полученной копии событие создания. Функция возвращает идентификатор копии экземпляра.
instance_destroy() Уничтожает текущий экземпляр объекта.
instance_change(obj,perf) Заменяет текущий экземпляр объекта на экземпляр объекта obj. Переменная perf показывает, выполнять ли события уничтожения и создания.
position_destroy(x,y) Уничтожает все экземпляры, спрайты которых находятся в точке (x,y).
position_change(x,y,obj,perf) Заменяет все экземпляры (находящиеся в точке x,y) экземплярами объекта obj. Переменная perf показывает, выполнять ли события уничтожения и создания.
zaicev9797Дата: Пятница, 26 Апреля 2013, 20:54 | Сообщение # 15
AbRaKaDaBrA
Сейчас нет на сайте
спасибо, судя по тексту это то что мне нужно но судя по всему мне еще и с массивами разобраться надо,
расскажите мне про массивы пожалуйста biggrin

я вас задолбал, я знаю это bag


проект Mysterious Space. The losted moment
FargostДата: Пятница, 26 Апреля 2013, 21:04 | Сообщение # 16
постоянный участник
Сейчас нет на сайте
Вот

zaicev9797Дата: Пятница, 26 Апреля 2013, 21:08 | Сообщение # 17
AbRaKaDaBrA
Сейчас нет на сайте
спаибо вам огромное biggrin cool

проект Mysterious Space. The losted moment
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » вывод инфы об определенном экзэмпляре обьекта
  • Страница 1 из 1
  • 1
Поиск:

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