Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Prorok.18 on May 16, 2015, 08:39:47 PM
-
Как обратиться к массиву $number после того как переменной $number присвоили значение?
ARRPUSH($number,"text")
$number=1
-
Переменная превращается в массив если в нее записывают несколько строк командой ARRPUSH или указанием номера ячейки.
ARRPUSH($number,"text 1") // в ячейку 0
ARRPUSH($number,"text 2") // в ячейку 1
$number=1 // так не правильно но видимо запись идет в ячейку 0
LOGWRITE ("Массив: ", $number[0]) // выводим результат
LOGWRITE ("Массив: ", $number[1])
LOGWRITE ("Переменная: ", $number)
HALT
22:23:35 Массив: 1
22:23:35 Массив: text 2
22:23:35 Переменная: 1
Так что используй разные имена для переменных и массивов чтобы не путаться.
-
Привет Всем! Я как всегда, чтобы не создавать новую тему, в какой-нибудь похожей напишу :)
Глупейшие, наверное вопросы, но я как-то это не использовал, а сейчас понадобилось, и не пойму - как?! :)
Так вот. Как использовать Arrpop?! :)
Элементарный сценарий на пример.
for($i=0,$i<14)
arrpush($rp, $i)
end_cyc
Вот я задал 15 массивов. И да именно так, как есть. Мне в конце цикла нужно извлечь все эти массивы. Я понимаю, что при помощи функции arrpop, но как её использовать? Единственное, как она у меня работает, это как в примере print( arrpop($arr) ). Т.е. через принт. Если просто пишу arrpop($arr), то ничего не происходит, - почему?! Как её использовать? Через принт мне не пойдёт. Вот элементарное примеры, как нужно. Первое так же через цикл:
for($i=0,$i<14)
ARRPOP($rp[$i])
end_cyc
//или
for($i=0,$i<14)
ARRPOP($rp)
end_cyc
Так, не работают почему то?! И я не понимаю, как её прописывать, чтобы извлечь все массивы?
Ещё вопрос, это как бы это можно было бы через цикл использовать, чтобы ещё проще, тоже не пойму.
WHILE($rp=0)
ARRPOP($rp)
END_CYC
Т.е. если вы подскажите, как использовать arrpop, то я ещё не понял, как использовать вайл, т.е., что нужно в скобках прописать, чтобы он сам себя проверял, что пока ещё есть хотя бы один массив, он продолжает извлечение пока всех не будет.
Спасибо, Большое :)
-
Ты ж не написал куда извлекать.
for($i=0,$i<14)
arrpush($rp, $i)
end_cyc
for($i=0,$i<14)
$massiv = ARRPOP($rp) // извлекаем например в переменную
LOGWRITE ("Массив: ", $massiv) // смотрим что в переменной
end_cyc
HALT
Но надо помнить что функция ARRPOP извлекает и удаляет последний элемент массива. Тоесть возвращает значения с конца.
Вот другой вариант извлечения данных от начала и до конца массива.
Функцией ARRSIZE($rp) можно определить размер массива
for($i=0,$i<14)
arrpush($rp, $i)
end_cyc
for($i=0,$i<ARRSIZE($rp))
$massiv = $rp[$i]
LOGWRITE ("Массив: ", $massiv)
end_cyc
UNDEFINE($rp) // обнуляем массив
HALT
При этом значения массива не удаляются, и чтобы их удалить нужно использовать команду UNDEFINE.
-
Блин, чё-то я не понял, что именно делает arrsize? В описании - возвращает кол-во элементов в массиве. Куда возвращает, и что это значит? Мудрил, мудрил, но так и не понял. И я не понял, что именно ты сделал этим примером? Что-то как-то не доходит. И вот эта последняя строчка UNDEFINE($rp) - она сразу все 15 массивов обнуляет? А на счёт arrpop - да я знаю, что с конца, мне как бы всё равно, мне лишь бы массивы, как бы убрать. И можно ли ведь такое через While сделать?
-
... И вот эта последняя строчка UNDEFINE($rp) - она сразу все 15 массивов обнуляет? А на счёт arrpop - да я знаю, что с конца, мне как бы всё равно, мне лишь бы массивы, как бы убрать. И можно ли ведь такое через While сделать?
Хммм...
Массив один $rp, а в нём 15 элементов.
UNDEFINE($rp) удаляет весь массив, сколько бы элементов он не содержал.
Блин, чё-то я не понял, что именно делает arrsize? В описании - возвращает кол-во элементов в массиве. Куда возвращает, и что это значит?
Куда вставиш туда и возвращает. Вместо ARRPOP($rp) будет в итоге число, которое функция вернёт.
-
Привет Игорь! Скажу так. Я так и не понимаю, что значит возвращает? Т.е.,что он делает этим? Но пока можно не отвечать, хоть я хотел очень разобраться в этом, чтобы не спрашивать каждый раз, как делать, а самому понимать, как происходит этот процесс.
Но, чтобы не путать себя сейчас, я разобрался, как мне надо. Поэтому огромное Спасибо за то, что объяснил про undefine. Во первых я даже не знал, что его к массивам можно применять :), а во вторых это за то, что объяснил, что массив один, а в скобках - это элементы. И что Undefine может удалить весь массив. Сейчас многое прояснилось вообще :) Спасибо. В общем просто сейчас без всяких arrsize и arrpop просто пишу это UNDEFINE($rp) и всё, и у меня всё работает, пока, как мне надо. Благодарю :)
-
возвращает, значит кликер видит вместо функции некое значение. Его либо записывают в переменную либо сразу используют в другой функции.
Размер массива $rp 14 ячеек
Для кликера строчка
for($i=0,$i<ARRSIZE($rp))
Будет выглядеть так
for($i=0,$i<14)
-
Oraven, не подскажешь, что изменить в коде, чтоб цвета генерелись по убывающей? Поменять r и b местами в colorgen?
$clm = 4 // уровень коррекции от 0 до 8
SWITCH($clm)
CASE(0)
$bit=1
CASE(1)
$bit=2
CASE(2)
$bit=4
CASE(3)
$bit=8
CASE(4)
$bit=16
CASE(5)
$bit=32
CASE(6)
$bit=64
CASE(7)
$bit=128
CASE(8)
TFWRITE(STRCONCAT("Цвета для Уровня ", $clm,".txt"), 0)
$bit=256
DEFAULT
HINTPOPUP("Задан не верный уровень коррекции!", "Ошибка")
halt
END_SWITCH
$r=-1
$g=-1
$b=-1
inc($r,$bit)
inc($g,$bit)
inc($b,$bit)
WHILE($b < 256)
WHILE($g < 256)
WHILE($r < 256)
TFWRITE(STRCONCAT("Цвета для Уровня ", $clm,".txt"), colorgen($r,$g,$b))
inc($r,$bit)
END_CYC
$r=-1
inc($r,$bit)
inc($g,$bit)
END_CYC
$r=-1
$g=-1
inc($r,$bit)
inc($g,$bit)
inc($b,$bit)
END_CYC
halt
-
Вот, теперь генерирует сразу прямой и обратные списки, при этом используется запись в массив и только на последнем этапе происходит сброс списка в файл что ускоряет процесс за счет уменьшения доступа к диску.
$clm = 4 // уровень коррекции от 0 до 8
SWITCH($clm)
CASE(0)
$bit=1
CASE(1)
$bit=2
CASE(2)
$bit=4
CASE(3)
$bit=8
CASE(4)
$bit=16
CASE(5)
$bit=32
CASE(6)
$bit=64
CASE(7)
$bit=128
CASE(8)
ARRPUSH($arr_out, 0)
$bit=256
DEFAULT
HINTPOPUP("Задан не верный уровень коррекции!", "Ошибка")
halt
END_SWITCH
$r=-1
$g=-1
$b=-1
inc($r,$bit)
inc($g,$bit)
inc($b,$bit)
WHILE($b < 256)
WHILE($g < 256)
WHILE($r < 256)
ARRPUSH($arr_out, colorgen($r,$g,$b))
inc($r,$bit)
END_CYC
$r=-1
inc($r,$bit)
inc($g,$bit)
END_CYC
$r=-1
$g=-1
inc($r,$bit)
inc($g,$bit)
inc($b,$bit)
END_CYC
TFWRITEARR(STRCONCAT("Цвета для Уровня ", $clm," прямой порядок.txt"), $arr_out)
$count = ARRSIZE($arr_out)
FOR($a=0,$a<$count)
ARRPUSH($arr_out2, ARRPOP($arr_out))
END_CYC
TFWRITEARR(STRCONCAT("Цвета для Уровня ", $clm," обратный порядок.txt"), $arr_out2)
halt
-
Интересное решение), но если нужен сразу обратный порядок?
-
Интересное решение), но если нужен сразу обратный порядок?
Этот скрипт генерирует готовый список, потрать 5-10 секунд (зависит от компа) своего времени и пользуйся каким нужно списком.
-
за 10 секунд ракета пролетит 100-150 км :(
-
Что за ракета со второй и почти третьей космической скоростью.
Бери попроще ракету. Кликермэн может управлять ракетой только до первой космической.
-
Каких 10 сек
времени затрачено: 2726 мс
И не нужно список формировать во время работы основного скрипта. Списки нужно подготовить предварительно.