Author Topic: Массивы  (Read 64422 times)

0 Members and 1 Guest are viewing this topic.

rulentus

  • Зашел в гости
  • *
  • Posts: 14
    • View Profile
Re: Массивы
« Reply #30 on: March 18, 2015, 02:36:32 PM »
Блин. Точняк. Надо пробовать. Спасибо.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Массивы
« Reply #31 on: March 18, 2015, 02:53:07 PM »
Можешь и через массив. Так даже проще если координат много.
Code: (clickermann) [Select]
STRSEPARATE("100:110:200:210:300:310:400:410:500:510", ":", $arr)
$r = RND(0,ARRSIZE($arr)/2-1)
LCLICK($arr[$r*2], $arr[$r*2+1])
« Last Edit: March 18, 2015, 02:54:51 PM by Vint »


Alex Li

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: Массивы
« Reply #32 on: January 27, 2016, 01:01:53 AM »
А как можно создать копию массива?
Я пробовал $var2=$var, но копировало только одно значение из массива.

Doda

  • Guest
Re: Массивы
« Reply #33 on: January 27, 2016, 01:10:26 AM »
так в справке все написано же) (c)Alex Li
чтобы обратиться к массиву, нужно вызывать   элемент по индексу.
у вас есть массив $var, из 5 элементов, если хотите скопировать  массив, в другой массив $ret (только смысл?)
через цикл
Code: (clickermann) [Select]
for($i=0,$i<arrsize($var))
arrpush($ret, $var[$i])
end_cyc

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Re: Массивы
« Reply #34 on: January 27, 2016, 01:11:13 AM »
А как можно создать копию массива?
Я пробовал $var2=$var, но копировало только одно значение из массива.
Code: (clickermann) [Select]
// записывает массив в файл
TFWRITEARR("file.txt", $arr1)
//списывает массив  из файла
TFREADARR("file.txt", $arr2)
//удаляет файл
TFCLEAR("file.txt", 1)

Alex Li

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: Массивы
« Reply #35 on: January 27, 2016, 09:31:00 PM »
Quote
так в справке все написано же)

Надеялся на некий незадокументированный способ  ;)
А так действительно смысла нет - легче не arrpop' ом а просто считывать
Браm комара, Золотой спасибо!
« Last Edit: January 27, 2016, 09:33:12 PM by Alex Li »

zanogu

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Массивы
« Reply #36 on: September 19, 2016, 03:24:06 PM »
Привет!
Подскажите как сделать сравнение переменной с каждым значением в массиве, если значение уникальное (в массиве нет такого) внести в этот же массив и т.д. Размерность массива 30

Заранее благодарю за ответ.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Массивы
« Reply #37 on: September 19, 2016, 04:18:47 PM »
Привет!
Подскажите как сделать сравнение переменной с каждым значением в массиве, если значение уникальное (в массиве нет такого) внести в этот же массив и т.д. Размерность массива 30

Заранее благодарю за ответ.


Code: (clickermann) [Select]
ARRPUSH($arr, 1) // создаем массив $arr для примера
ARRPUSH($arr, 2)
ARRPUSH($arr, 3)

$c = 5 // переменная $c для сравнения с массивом

$check = 1 // флаг переключатель
FOR($a=0,($a<ARRSIZE($arr))&($check = 1)) // цикл сравнения
   IF($arr[$a] = $c)
      $check = 0 // если совпадение найдено, выключаем
   END_IF
END_CYC
IF($check = 1) // если совпадение не было найдено
   ARRPUSH($arr, $c) // добавляем значение в массив
END_IF

SSJnix

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Re: Массивы
« Reply #38 on: September 17, 2017, 02:25:18 PM »
// массив из трех элементов
$var[0] = 1
$var[1] = 2
$var[2] = 3

$result = 0 // накапливаемая сумма

// перебор через цикл элементов массива [0 .. 2]
for($i, $i < 3)
  $result = $result + $var[ $i-1 ]
end_cyc

// вывод суммы элементов
print( $result )

в справке массивов данный код выдает ошибку интерпретации строки $result = $result + $var[ $i-1 ]

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Массивы
« Reply #39 on: September 17, 2017, 03:10:35 PM »
Там просто старый пример, раньше цикл FOR работал иначе. Теперь -1 в $var[ $i-1 ] писать не надо.

SSJnix

  • Зашел в гости
  • *
  • Posts: 2
    • View Profile
Re: Массивы
« Reply #40 on: September 17, 2017, 03:32:15 PM »
Спасибо за ответы

PasqualeAcosta

  • Освоившийся
  • **
  • Posts: 25
    • View Profile
Re: Массивы
« Reply #41 on: December 01, 2019, 01:20:42 AM »
Доброго времени суток! Создал массив по примеру описанному в шапке. Суть скрипта, нужно искать совпадения картинок и делать с ними определенные действия (удаляя координаты уже отработанных из массива). По факту фарм мобов в игре.
В итоге когда добавляю колормод во второй строке скрипкт выдает ошибку. Так же при нахождении нескольких картинок цикл не повторяется. В чем может быть проблема?

Code: [Select]
GETSCREEN (264,112,1030,646)
COLORMODE(7,264,112,1030,646)
WAITMS(300)
scanpicture ($var,264,112,1030,646,"textures\002.bmp", -1, 05)
WAITMS(300)
LOGWRITE (ARRSIZE($var))
while (arrsize($var) > 0)
   $y = arrpop($var)
   $x = arrpop($var)
   WAITMS(300)
   lclick($x+100, $y-30) // клик моба
   WAITMS(500)
   GETSCREEN (658,666,658,666)
   COLORMODE(4,658,666,658,666)
   IF(PXL(658,666)=3100575)
      WAITMS(500)
      GETSCREEN (619,105,625,117)
      COLORMODE(8,619,105,625,117)
      IF_PICTURE_IN (619,105,625,117, "textures\004.bmp", -1, 70)
         WAITMS(100)
         LOGWRITE ("S моб")
         LCLICK(457,525)  // выходим
      ELSE
         WAITMS(300)
         LOGWRITE ("бьем"," ",$x+100,", ",$y-30)
         LCLICK(658,666)  // 3100575  атака
         WAITMS(300)
         LCLICK(723,219)  // 3885367
         WAITMS(300)
         LCLICK(733,291)  // 9874874
         WAITMS(300)
         LCLICK(739,367)  // 2105376
         WAITMS(300)
         LCLICK(742,483)  // 2499878
         WAITMS(300)
         LCLICK(739,549)  // 2302499
         WAITMS(300)
         LCLICK(640,686) // в бой
         WAITMS(30000)
      END_IF
   ELSE
   END_IF
end_cyc

LOGWRITE ("херушки")

HALT




Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Массивы
« Reply #42 on: December 01, 2019, 08:29:32 AM »
Что еще за 05? Число не может начинаться с нуля.

Code: (clickermann) [Select]
GETSCREEN (264,112,1030,646)
COLORMODE(7,264,112,1030,646)
scanpicture ($var,264,112,1030,646,"textures\002.bmp", -1, 5)
LOGWRITE (ARRSIZE($var))
while (arrsize($var) > 0)
   $y = arrpop($var)
   $x = arrpop($var)
   lclick($x+100, $y-30) // клик моба
   WAITMS(500)
   GETSCREEN (658,666,658,666)
   COLORMODE(4,658,666,658,666)
   IF(PXL(658,666)=3100575)
      GETSCREEN (619,105,625,117)
      COLORMODE(8,619,105,625,117)
      IF_PICTURE_IN (619,105,625,117, "textures\004.bmp", -1, 70)
         LOGWRITE ("S моб")
         LCLICK(457,525)  // выходим
         WAITMS(100)
      ELSE
         LOGWRITE ("бьем"," ",$x+100,", ",$y-30)
         LCLICK(658,666)  // 3100575  атака
         WAITMS(300)
         LCLICK(723,219)  // 3885367
         WAITMS(300)
         LCLICK(733,291)  // 9874874
         WAITMS(300)
         LCLICK(739,367)  // 2105376
         WAITMS(300)
         LCLICK(742,483)  // 2499878
         WAITMS(300)
         LCLICK(739,549)  // 2302499
         WAITMS(300)
         LCLICK(640,686) // в бой
         WAITMS(30000)
      END_IF 
   END_IF
end_cyc

LOGWRITE ("херушки")

HALT

Graubart

  • Освоившийся
  • **
  • Posts: 44
  • Alles wird gut
    • View Profile
Re: Массивы
« Reply #43 on: December 01, 2019, 06:11:17 PM »
Что еще за 05? Число не может начинаться с нуля.
Вполне может. Допускается перед значимым числом ставить любое количество нулей. Кроме того, перед десятичной точкой можно нуль вообще не ставить. Вот простая прога, доказывающая это:
Code: (clickermann) [Select]
$value_1=5
 $value_2=05
 $value_3=0005
 $value_4=0.5
 $value_5=000.5
 $value_6=.5
 $mes=STRCONCAT($value_1,"=5",CHAR(13),$value_2,"=05",CHAR(13),$value_3,"=0005",CHAR(13),$value_4,"=0.5",CHAR(13),$value_5,"=0000.5",CHAR(13),$value_6,"=.5")
 $mr=DIALOGBOX($mes,0)
   HALT
Ошибка скорее всего кроется в том, что неправильно указан путь к файлу 002.bmp.

Просто объяснить сложное - сложно. Сложно объяснить сложное - просто.
• Альберт Эйнштейн

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Re: Массивы
« Reply #44 on: December 01, 2019, 08:22:30 PM »
Это не доказывает, что параметр точности принимает что либо еще, кроме целочисленного значения от 1 до 100
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»