Как сделать?
…
Darvin432,
Переменные со знаком $ используются для строковых значений. Глаз режет.
1. Для этого лучше использовать временный массив. Помещаешь в него все необходимые значения, находишь минимальное с помощью MIN, а потом его из массива удаляешь.
2. @@@@CODEBLOCK0@@@@
dmvikar,
Ты говорил что в стандартном плейере нельзя поставить картинку фоном на каждую таблицу. А как это сделать в qSpider?
Darvin432,
Я не знаю. Смотри что нить по html/css.
dmvikar
Я вот тут несколько не понял.
Darvin432,
1. Для этого лучше использовать временный массив. Помещаешь в него все необходимые значения, находишь минимальное с помощью MIN, а потом его из массива удаляешь.
Я задаю значение массиву
Скорость_Бой[0] = 256
Скорость_Бой[1] = 5646444
Скорость_Бой[2] = 13
Скорость_Бой[3] = 52352
Скорость_Бой[4] = 352352
Потом ищу максимальное значение и выполняю определенное действие:
if max ('Скорость_Бой') = Скорость_Бой[0]: killvar "Скорость_Бой",0 & gt "локация1"
if max ('Скорость_Бой') = Скорость_Бой[1]: killvar "Скорость_Бой",1 & gt "локация2"
if max ('Скорость_Бой') = Скорость_Бой[2]: killvar "Скорость_Бой",2 & gt "локация3"
if max ('Скорость_Бой') = Скорость_Бой[3]: killvar "Скорость_Бой",3 & gt "локация4"
if max ('Скорость_Бой') = Скорость_Бой[4]: killvar "Скорость_Бой",4 & gt "локация5"
Но так не работает. Потому что если Значение max (’Скорость_Бой’) не Скорость_Бой[4] а как в примере Скорость_Бой[1] то тогда при следующем сравнении массив выглядит так
Скорость_Бой[0] = 256
Скорость_Бой[1] = 13
Скорость_Бой[2] = 52352
Скорость_Бой[3] = 352352
Скорость_Бой[4] = 0
.
Но в этом случае когда определяется новый max (’Скорость_Бой’) выполниться действие gt “локация4” а не gt “локация5”.
Подскажи плиз как правильнее это прописать
Darvin432,
Я не очень понимаю, зачем ты делаешь сравнение. MIN и MAX тебе дают соответствующие значения и ты их сразу можешь использовать а не искать повторно сравнением. Если тебе нужен индекс, то используй arrpos.
А killvar ты можешь применить после перехода на локацию. Однако, я тут тоже не понимаю, как ты собираешься сопоставлять локации, которые статичны и массив, который уменьшается с каждой итерацией. Опиши конкретно, что тебе нужно и какой должен быть результат на примере игры.
Да в принципе я описал тебе ситуацию уже из игры. Есть условно 5 персонажей у каждого своя скорость. В начале каждого периода идет сравнение скорости каждого персонажа. определяется тот у которого максимальная скорость из сравниваемых. После чего идет GT на действие персонажа. ОН совершает действие. и после этого ход должен перейти ко второму по скорости в текущем периоде . Для этого повторно и делается сравнение скоростей с минусом хода того кто уже сходил. и так до того как все персонажи не сходили
Darvin432,
Скорость_Бой[0] = 256
Скорость_Бой[1] = 5646444
Скорость_Бой[2] = 13
Скорость_Бой[3] = 52352
Скорость_Бой[4] = 352352
copyarr 'temp_arr','Скорость_Бой'
a=0
amax=arrsize('temp_arr')
:mark
b=max('temp_arr')
killvar 'temp_arr',arrpos(0,'temp_arr',b)
temp_arr1[]=b
a+=1
if a<amax:jump'mark'
Вот так ты получишь массив, отсортированный по убыванию. Из него будешь доставать первую строчку и удалять. Если нужно получить индекс изначального массива, то используй arrpos, как я уже писал ранее.
dmvikar Спасибо очень помог. Я снова с вопросом)
У меня условно есть таблица 3х3
Spoiler
$Таблица1+="<table>"
$Таблица1+="<tr>"
$Таблица1+="<td>$персонаж1</td>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1="</tr>"
$Таблица1+="<tr>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1="</tr>"
$Таблица1+="<tr>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1="</tr>"
$Таблица1+="</table>"
На которой располагается персонаж и остальные клетки пустые. Но в зависимости от ситуации он может перемещаться по таблице. Вопрос. Как можно это компактно организовать? первая мысль у меня была прописать условие и прописывать каждое положение, вроде :
Spoiler
if позиция =1 :
$Таблица1+="<table>"
$Таблица1+="<tr>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1+="<td>$персонаж1</td>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1="</tr>"
$Таблица1+="<tr>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1="</tr>"
$Таблица1+="<tr>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1="</tr>"
$Таблица1+="</table>"
elseif if позиция =2 :
$Таблица1+="<table>"
$Таблица1+="<tr>"
$Таблица1+="<td>$персонаж1</td>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1="</tr>"
$Таблица1+="<tr>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1="</tr>"
$Таблица1+="<tr>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1+="<td>$картинка_пустой_клетки</td>"
$Таблица1="</tr>"
$Таблица1+="</table>"
и тд.
Но эта идея была откинута как идиотская так как в процессе игры на этих же клетках появиться еще $персонаж2, $персонаж3 и тд. и каждую позицию просто адово прописывать таким образом
Господа, приветствую. Снова я со своим qsp рогаликом. такой вопрос: Можно ли назначить горячие клавиши, чтоб по стрелочкам не тыкать постоянно (и не через девять действий acts, а отдельно назначить)?
так же у меня возникла неудобная кривая проблема, связанная с размером отображаемых блоков. Я хочу сделать в игре настройки, чтоб игрок мог сам выбрать размер иконок 32 на 32 или 64 на 64, но как только я меняю размер иконок во время игры, получается чушь (только иконка игрока меняется). Поскольку размер блоков мира был задан при генерации вместе с HTML лабудой типа <img src=“” widght=“X” height=“X”>, то я незнаю как уже во время игры всё это переделать. Мир уже сгенерирован, переменная отображения уже задана =( .
Дамир Белялов,
1) Тебе сюда
2) Ну, у тебя же сетка как-то создаётся? Где-то храниться? Вот при изменении размера, просто заново её строить уже с учетом новых размеров.
Darvin432,
Без массивов и циклов я даже хз как такое решать с текущим кодом)
Набросал свой вариант: TestGrid.qsp
Перемещаться если что можно нумпадом.
ни один из советов не помог
1) начало статьи про привязку очень точно указывает на мою проблему, однако меня не устраивает то, что нужно задействовать поле ввода. мне нужно без него нажать на клавишу “W”, “A”, “S”, “D”, где в определенной локации нажатие будет инициировать процесс перехода по клеткам.
2) способ годен для “заскриптованной” заданной по каждому блоку карты. Но у меня перед заданными объектами существует ещё и случайное наполнение карты. Если перегенерирую карту - получится бред и это будет ЧРЕЗВЫЧАЙНО заметно игроку. Типа… Чё? мир по новому построился WTF???!
Дамир Белялов,
1) Ну тут только использовать qSpider, на классике тебе этого не достичь, увы.
2) Тогда можно $MainTxt/либо массив/переменная где у тебя хранится текст заменить через $Replace все width и height на нужные значения. Либо через регулярные выражения. Но первое проще, возможно правда медленнее, тут не знаю.
Что-то типа:
$Replace($location[i], "width=32", "width=64")
Dominus спасибо буду разбираться в твоём примере. А он подрузумевает наличие 2го персонажа? например если ближайшая ячейка сверху уже занята то персонаж1 не должен туда переходить
Darvin432,
Нет, но поняв принцип, не составит труда такое реализовать)
Даточно например используя get_cell_by_xy получить содержимое ячейки и узнать, есть ли там кто-то или что-то, на что нельзя наступать. Если есть, то отказать в переходе на ячейку.