Как сделать?
…
Aleks Versus,
это один из способов организации двумерного массива. Неудобен он тем, что каждый раз при обращении придется указывать размерность. Впрочем, другие записи тоже не особо удобны.
Ryo,
видимо читали невнимательно. Приведу цитату(упрощу немножко):
x = 2
y = 3
$карта[x+","+y] = "@"
Это - запись символа по координатам 2, 3 в двумерный массив. Для вывода на экран нужно использовать вложенный цикл.
В той же теме по массивам, есть ссылка на архив с примерами кода, вот она. В архиве много полезного, конкретно по двумерному массиву пример находится в файле matrix.qsp.
Вывод массива на экран для приведенного мной способа адресации:
i = 0
:loop_i
j = 0
:loop_j
IF $карта[j+","+i] = "":
*P " "
ELSE
*P $карта[j+","+i]
END
j = j + 1
IF j<10:
JUMP 'loop_j'
END
*NL
i= i + 1
IF i < 10:
JUMP 'loop_i'
END
Матрица будет лучше выглядеть, если использовать моноширинный шрифт(см. справку - $FNAME).
Nex,
Сердечно благодарю. Действительно читал не достаточно внимательно, приношу свои извинения.
подскажите пожалуйста, как сделать, чтобы при нажатии на действие “атаковать”, на след. локации случайным образом были исходы “победа” или “поражение”.
ACT 'Атаковать':
victory = RAND(1, 2)
GOTO 'КонецБитвы'
END
Локация “КонецБитвы”:
IF victory = 1:
'Победа'
ELSE
'Поражение'
END
Большое спасибо!
Добрый день.
Пытаюсь разобраться с QSP, для пробы решаю задачку с распределением характеристик персонажа.
Решаем в лоб:
сила=RAND(1,5)
выносливость=RAND(1,5)
ловкость=RAND(1,5)
GT 'Герой'
...
локация 'Герой'
очки=15-сила-выносливость-ловкость
*PL 'сила=<<сила>>'
*PL 'выносливость=<<выносливость>>'
*PL 'ловкость=<<ловкость>>'
*PL
*PL 'Нераспределенно очков: <<очки>>'
IF очки=0:
ACT 'Продолжить': GT 'Далее'
ELSE
IF сила<10: ACT 'увеличить силу': сила=сила+1 & очки=очки-1 & GT 'Герой'
IF выносливость<10: ACT 'увеличить выносливость': выносливость=выносливость+1 & очки=очки-1 & GT 'Герой'
IF ловкость<10: ACT 'увеличить ловкость': ловкость=ловкость+1 & очки=очки-1 & GT 'Герой'
END
Работает, но выглядит не комильфо. Если дальше придётся работать со многими характеристиками в разных локациях, код растянется на километр.
Переделал:
$char_name[0]='сила' & char_val[0]=RAND(1,5)
$char_name[1]='выносливость' & char_val[1]=RAND(1,5)
$char_name[2]='ловкость' & char_val[2]=RAND(1,5)
GT 'Герой'
...
локация 'Герой'
очки=15
i=0
:loop
if i<6: *PL '<<$char_name[i]>>= <<char_val[i]>>' & очки=очки-char_val[i] & i=i+1 & jump 'loop'
*PL
*PL 'Нераспределенно очков: <<очки>>'
IF очки=0:
ACT 'Продолжить': GT 'Далее'
ELSE
i=0
:loop2
if i<3:
IF char_val[i]<10: ACT 'увеличить характеристику ''<<$char_name[i]>>'':': char_val[i]=char_val[i]+1 & очки=очки-1 & GT 'Герой'
i=i+1
jump 'loop2'
end
END
Результат - отображает названия актов и значения характеристик правильно, а вот на действия не реагирует, ПОЧЕМУ :mad: !!!
никнейм,
во время выполнения кода действия, переменная “i” равняется трем. Соответственно, код
char_val[i]=char_val[i]+1 & очки=очки-1 & GT 'Герой'
на какое бы действие ни ткнули, всегда будет выполнять увеличение “характеристики” под номером 3.
Это распространенная ошибка.
Можно воспользоваться оператором DYNAMIC.
DYNAMIC "
ACT 'увеличить характеристику ''<<$char_name[i]>>'':':
char_val[<<i>>]=char_val[<<i>>]+1 & очки=очки-1 & GT 'Герой'
END
"
P.S. Не рекомендую записывать операторы в одну строку, как правило это приводит к ошибкам.
ага, оказывается в не зависимости от того какое действие я выбираю, характеристика меняться для i=3 (увеличивается char_val[2])
блин.. неужели ничего нельзя придумать?! =(
P.S. Nex - спасиб.
Я уже привел решение.
это старые грабли - у тебя действия добавляются в цикле но поскольку код действия выполняется при выборе то char_val[i]=char_val[i]+1 не обрабатывается правильно - ведь цикл уже отработал и в i у тебя хранится 4 а не номер нужной характеристики
проще всего это исправить с использованием dynamic
dynamic "ACT 'увеличить характеристику <<$char_name[i]>>:': char_val[<<i>>]=char_val[<<i>>]+1 & очки=очки-1 & GT 'Герой'"
Два вопроса:
1. Можно ли при использовании FUNC(…) вернуть в качестве результата функции массив или только строковое/числовое значение?
2. Где на сайте кнопочка “Версия для печати”? Без неё - жутко не удобно темы читать :rolleyes:
никнейм,
1. Можно заполнить массив, который будет доступен глобально, и вернуть его имя.
2. Такой кнопки нет. С мобильника читаешь? На сайте много чего не хватает, впрочем это уже оффтоп. Давай придерживаться темы.
Почему при загрузке какого-либо шрифта в игру, весь текст пропадает?
Winter Wolf,
расскажи подробнее, как ты загружаешь шрифт в игру.
Хм, я шрифт кладу в папку с игрой. Я не понял: Как указать на шрифт?
$FName “Mediaval English.swf” не подходит.