Пятница, 19 Апреля 2024, 15:44

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Логика GML (где-тут логика??)
Логика GML
vsDaTavsДата: Пятница, 23 Сентября 2011, 15:23 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Не понимаю принцип чтения кода

В результате должно плучиться следуещее:
каждый промежуток времени пункты хода строительства должны уменьшеаться на 5
А на деле уменьшается в 2 раза больше

Хочу разобраться в логике мышления ГМЛ


http://farchive.jino.ru/

Сообщение отредактировал vsDaTavs - Пятница, 23 Сентября 2011, 18:41
михаДата: Пятница, 23 Сентября 2011, 16:00 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
И... что здесь непонятного?
vsDaTavsДата: Пятница, 23 Сентября 2011, 16:31 | Сообщение # 3
почетный гость
Сейчас нет на сайте
почему выражение z-=5 выполнячется по 2 раза?

http://farchive.jino.ru/
михаДата: Пятница, 23 Сентября 2011, 17:23 | Сообщение # 4
почти ветеран
Сейчас нет на сайте
vsDaTavs, потому что используется цикл.
vsDaTavsДата: Пятница, 23 Сентября 2011, 18:46 | Сообщение # 5
почетный гость
Сейчас нет на сайте
А можно нормально объяснить?
или вы не поняли код?

миха если вы все же не понимаете кода, тогда попрошу вас воздержаться от комментариев. А если понимаете, то объясните как идет расчет, а не обобщенно -

Добавлено (23.09.2011, 18:46)
---------------------------------------------
Я знаю как работает цикл. Я пытался вручную посчитать что происходит с кодом.

цикл - это все равно что кварцевые часы. только полный оборот будет составлять не 12часов а столько, сколько будет задано.
предположим час - это действие.
Проблема в точ, то каждый час действие совершается 2 раза. Вот что я хочу знать. Какие этому препосылки

П.С. Когда нижнюю часть кода я перенес из шага в тригер, нисколько не меняя сам код, то отниматся стало нормально по 5, в независимости от "цикла"


http://farchive.jino.ru/

Сообщение отредактировал vsDaTavs - Пятница, 23 Сентября 2011, 18:57
михаДата: Пятница, 23 Сентября 2011, 19:12 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
Не ждите теперь помощи. Неблагодарный вы человек.
vsDaTavsДата: Пятница, 23 Сентября 2011, 21:07 | Сообщение # 7
почетный гость
Сейчас нет на сайте
а за что вас благодарить если вы даже отвечаете косвенно?

http://farchive.jino.ru/

Сообщение отредактировал vsDaTavs - Пятница, 23 Сентября 2011, 21:20
BaHu3aTopДата: Пятница, 23 Сентября 2011, 21:35 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Поставь z-=2.5 и будет отниматься по 5.

noTformaTДата: Пятница, 23 Сентября 2011, 21:55 | Сообщение # 9
Ukrainian independent game developer
Сейчас нет на сайте
vsDaTavs,
Quote (vsDaTavs)
for(i=1;i<31;i++)
{
z=ds_list_find_value(ds_list_find_value(obj_Base,base[i,8],0),9)
z=z-5
ds_list_insert(ds_list_find_value(obj_Base.base[i,8],0),9,z)
ds_list_delete(ds_list_find_value(obj_Base.base[i,8],0),10)
}

мммм, этот цикл выполнится 30 раз, и не больше и не меньше, так как параметры итерации цикла заданы константно, в первой итерации переменная i будет равна 1, в последней 30.
В теле цикла 4 строчки кода.
В первой строчке мы что то получаем и засовываем полученное значение в переменную z.
Во второй строчке мы от переменной Z отнимаем 5
в третей засовываем z в лист или что то подобное
в четвертое удаляем что то из листа.

Я не знаком с синтаксисом ГМЛ, и я хз что такое ds_list_insert ds_list_delete ds_list_find_value, но строчка кода z=z-5 выполняется только один раз за итерацию цикла )

Quote (BaHu3aTop)
Поставь z-=2.5 и будет отниматься по 5

)))


@noTformaT
BaHu3aTopДата: Пятница, 23 Сентября 2011, 22:15 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
for(i=1;i<31;i++)
В гм нету такой функции и как это так код компилируется, без ошибок?


vsDaTavsДата: Пятница, 23 Сентября 2011, 23:11 | Сообщение # 11
почетный гость
Сейчас нет на сайте
Quote
Поставь z-=2.5 и будет отниматься по 5.

Так почти все объекты завязаны на счетчике времени, вы представляете себе сколько надо править А там где сложные мат функции, править надо мозги иметь. Да и в отличие от данного кода, прочие написаны в других объектах, нет гарантий что баг будет везде.

+Я же написал что проблема решена. Я жду не советов, а объяснения почему произошел баг


Quote
Я не знаком с синтаксисом ГМЛ, и я хз что такое ds_list_insert ds_list_delete ds_list_find_value, но строчка кода z=z-5 выполняется только один раз за итерацию цикла )

так должно быть, но на практике отнимается по 10 если держать код в шаге объекта, а когда код переношу в тригер, тогда отнимается 5

Добавлено (23.09.2011, 23:11)
---------------------------------------------
ds_list_find_value(id,pos) - функция находит элемент в позиции pos сприска с идентификатором id
ds_list_insert(id,pos,value) - записывает значение val в указанную позицию списка. При этом значение в этой же позиции меняет свою позицию на +1
а поэтому
ds_list_delete(id,pos)-удаляет элемент в указанной позиции

Quote
for(i=1;i<31;i++)

писал вручную .. и в ГМ часто нарываюсь на такую ошибку biggrin
конечно же i+=1


http://farchive.jino.ru/

Сообщение отредактировал vsDaTavs - Пятница, 23 Сентября 2011, 23:29
VinchensooДата: Суббота, 24 Сентября 2011, 08:22 | Сообщение # 12
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Quote (vsDaTavs)
писал вручную .. и в ГМ часто нарываюсь на такую ошибку конечно же i+=1

А может стоить писать код с проекта, чтобы могли люди проверить и найти ошибку, а не переписывать от руки неизвестно что, где ошибки может и нет.


vsDaTavsДата: Суббота, 24 Сентября 2011, 13:04 | Сообщение # 13
почетный гость
Сейчас нет на сайте
Понимаю негодования.Код и писал с проекта но вручную(т к на другом компе)
Quote
проверить и найти ошибку

Ошибок нет!!, код полностью функционален. И на синтаксис языка здесь смотреть необязательно

Я сначала подумал что дело в списках. Потому как в других вариантах цикла в шаге таких багов не наблюдал. Я умею пользоваться списками, но плохо себе представляю как они реализовываются компилятором.
А может еще что...Нужно знать сам принцип выполнения кода


http://farchive.jino.ru/

Сообщение отредактировал vsDaTavs - Суббота, 24 Сентября 2011, 13:35
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Логика GML (где-тут логика??)
  • Страница 1 из 1
  • 1
Поиск:

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