проблема с использованием списка в Game Maker Studio - PullRequest
0 голосов
/ 26 марта 2020

Я новичок в создании игр. Я создал список и хочу сравнить все данные в списке с указанным значением c. Я использовал следующий код:

for(var i=0;i<ds_list_size(lst);i++;)
{
    if ds_list_find_value(lst,i)>tmp
       ds_list_replace(lst,i,ds_list_find_value(lst,i)-1);
}

, и я столкнулся со следующей ошибкой:

Pu sh :: Ошибка выполнения - Переменная Get -1.lst (100001, - 1)
at gml_Object_object0_RightButtonPressed_1 (строка 21) - для (var i = 0; i

, где моя проблема?

Спасибо всем.

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

если вы первый для l oop i = 0; и когда первая запись в списке меньше tmp, она пытается заменить первое место в списке несуществующим. так что вы можете либо проверить, является ли первая запись списка с помощью

if ( i == 0 ) { }

, либо вы можете начать для l oop со второй записи с

for(var i=1;i<ds_list_size(lst);i++;)
0 голосов
/ 27 марта 2020

Я думаю, что ; в конце i++; не требуется, вам нужно только использовать ; в for-l oop в качестве разделителя.

GML дает больше свободы для общего Хотя C# правила (например, как нет необходимости заключать скобки в условие if), так что, возможно, это разрешено.

Другая возможность может заключаться в том, что индекс находится вне диапазона в ds_list_replace()

...