Author Topic: Каждые 10 пикселей заносить в массив  (Read 1266 times)

0 Members and 1 Guest are viewing this topic.

Fugger

  • Освоившийся
  • **
  • Posts: 20
    • View Profile
Доброго вечера. Столкнулся с проблемой, что не получается сделать так, чтобы пиксели добавлялись в массив реверсивно. Возможно вам не очень понятно, о чём я. Скрипт должен заносить каждые 10 пикселей в массив, находящиеся между координатами которые я определю. Сделать это у меня вышло. Я нажимаю в одном месте z, в другом - x, и координаты заносятся, но мне нужно сделать, чтобы координаты заносились в обратном порядке когда x меньше z. Я пытался заменить + на -, но программа переставала работать.
Code: [Select]
IF(iskeydown(#z)=1)
   $x1 = $_xmouse
   $y1 = $_ymouse
   
   elz:
   waitms(10)
   IF(iskeydown(#x)=1)
      $x2 = $_xmouse
      $y2 = $y1
      if ($x2>$x1)
         $count=$x2-$x1
      else
         $count=$x1-$x2
         
      end_if
      $count=$count/10
      $count=round($count)
      for($a=1,$a<$count+1)
         arrpush($aCor,$x1+$a*10)
         arrpush($aCor,$y1)
      end_cyc
     
     
   else
      goto(elz)
   END_if
END_IF
И ещё, если сможете, помогите придумать как сделать чтобы каждые 10 пикселей квадратной области заносились в массив по очереди, буду благодарен.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Каждые 10 пикселей заносить в массив
« Reply #1 on: October 18, 2017, 08:13:47 AM »
Code: (clickermann) [Select]
IF(ISKEYDOWN(#Z)=1)
   WHILE(ISKEYDOWN(#Z)=1)
      WAITMS(5)
   END_CYC
   $x1 = $_xmouse
   $y1 = $_ymouse
   $check = 0
   WHILE((ISKEYDOWN(#Z)=0)&($check = 0))
      IF(ISKEYDOWN(#X)=1)
         WHILE(ISKEYDOWN(#X)=1)
            WAITMS(5)
         END_CYC
         $x2 = $_xmouse
         $check = 1
         IF($x1 < $x2)
            FOR($i=$x1,$i<$x2,10)
               arrpush($aCor,$i)
               arrpush($aCor,$y1)
            END_CYC
         ELSE
            FOR($i=$x1,$i>$x2,-10)
               arrpush($aCor,$i)
               arrpush($aCor,$y1)
            END_CYC
         END_IF
         
         //=== Вывод массива в лог для тестирования ====
         LOGCLEAR         
         FOR($a=0,$a<ARRSIZE($aCor))
            LOGWRITE ($aCor[$a])
         END_CYC
         HALT
         //=============================================
         
      ELSE
         WAITMS(20)
      END_IF
   END_CYC
ELSE
   WAITMS(20)
END_IF

Fugger

  • Освоившийся
  • **
  • Posts: 20
    • View Profile
Re: Каждые 10 пикселей заносить в массив
« Reply #2 on: October 18, 2017, 01:20:19 PM »
может есть смысл сканировать указанную область по диагонали или по сетке, так-же как х наращивая у ?
Да, была такая мысль, спасибо.
Но мне нужно не удалять координаты из массива, а проходить по ним циклом, так что не вариант

Fugger

  • Освоившийся
  • **
  • Posts: 20
    • View Profile
Re: Каждые 10 пикселей заносить в массив
« Reply #3 on: October 18, 2017, 02:39:53 PM »
Code: (clickermann) [Select]
IF(ISKEYDOWN(#Z)=1)
   WHILE(ISKEYDOWN(#Z)=1)
      WAITMS(5)
   END_CYC
   $x1 = $_xmouse
   $y1 = $_ymouse
   $check = 0
   WHILE((ISKEYDOWN(#Z)=0)&($check = 0))
      IF(ISKEYDOWN(#X)=1)
         WHILE(ISKEYDOWN(#X)=1)
            WAITMS(5)
         END_CYC
         $x2 = $_xmouse
         $check = 1
         IF($x1 < $x2)
            FOR($i=$x1,$i<$x2,10)
               arrpush($aCor,$i)
               arrpush($aCor,$y1)
            END_CYC
         ELSE
            FOR($i=$x1,$i>$x2,-10)
               arrpush($aCor,$i)
               arrpush($aCor,$y1)
            END_CYC
         END_IF
         
         //=== Вывод массива в лог для тестирования ====
         LOGCLEAR         
         FOR($a=0,$a<ARRSIZE($aCor))
            LOGWRITE ($aCor[$a])
         END_CYC
         HALT
         //=============================================
         
      ELSE
         WAITMS(20)
      END_IF
   END_CYC
ELSE
   WAITMS(20)
END_IF
большущее спасибо