Author Topic: нахождение правого нижнего пикселя  (Read 2767 times)

0 Members and 1 Guest are viewing this topic.

aast2012

  • Освоившийся
  • **
  • Posts: 24
    • View Profile
нахождение правого нижнего пикселя
« on: September 26, 2018, 07:42:47 PM »
писал в группу в ВК, необходимо найти правую сторону фигуры... есть фигуры двух цветов и какае-то будет правее... пиксель беру пересечение текущей цены и фигуры... и мне необходимо узнать координаты правого края.... причем фигура может быть как красная так и зеленая, и может стоять рядом, и вообще вариаций очень много.... как мне написать код что-бы оно проверило фигуры красные, потом зеленые и сравнило их кто же из них правее????

aast2012

  • Освоившийся
  • **
  • Posts: 24
    • View Profile
Re: нахождение правого нижнего пикселя
« Reply #1 on: September 27, 2018, 05:32:13 AM »
через биржу труда мне от исполнителя надо было бы целый алгоритм поиска нужного направления, ввод и анализ результата... а тут мне надо простой код нахождения пикселя правого края... а то что мне дали ранее у меня не работает... вопрос в том что я там не так сделал???
GETSCREEN
SCANPXL($ARR_SCAN, 0,0, $_xmax,$_ymax, 255)
$Y=ARRPOP($arr)
$X=ARRPOP($arr)
LCLICK($X, $Y) // Клик по нижнему правому пикселю
WAITMS(100)
UNDEFINE($ARR_SCAN)
Есле нужна точка именно в середине, то последователено расширяйте сектор сканирования от нужного места вверх и вниз.
Вот этот код мне дали ранее, я меняю число 255 на свой цвет пикселя и он мне кликает в верхний левый угол, независимо какой я выбираю пиксель, потом меняю диапазон и оно клацает так же в самый левый угол.... не видит диапазон... может я что-то не так делаю, может по другому надо, обращаюсь чтоб помогли новичку
« Last Edit: September 27, 2018, 05:51:34 AM by aast2012 »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: нахождение правого нижнего пикселя
« Reply #2 on: September 27, 2018, 09:42:58 AM »
Код дали почти правильный. Или он неправильно переписан.
Элементарные вещи нужно и самому контролировать. Почему имя массива то $ARR_SCAN, то $arr? Задать правильно одно имя и всё будет работать.

Такие вещи тестируются за две минуты. Вывести в лог длину массива и значения $X, $Y и сразу стало бы видно, что в координатах нули.


aast2012

  • Освоившийся
  • **
  • Posts: 24
    • View Profile
Re: нахождение правого нижнего пикселя
« Reply #3 on: September 27, 2018, 06:44:13 PM »
скрипт работает... но как мне сделать первый цыкл с нахождением 1го цвета и потом второго и определить кто из двух правее???
« Last Edit: September 27, 2018, 06:47:12 PM by aast2012 »

aast2012

  • Освоившийся
  • **
  • Posts: 24
    • View Profile
Re: нахождение правого нижнего пикселя
« Reply #4 on: September 27, 2018, 06:53:19 PM »
я думаю
GETSCREEN
    SCANPXL($ARR_SCAN, 169,240, 1231,573, 7765503)
    $Y=ARRPOP($ARR_SCAN)
    $X=ARRPOP($ARR_SCAN)
    //LCLICK($X, $Y) // Клик по нижнему правому пикселю
   // print ($X, $Y)
    WAITMS(100)
    UNDEFINE($ARR_SCAN)
   
    GETSCREEN
    SCANPXL($ARR1_SCAN, 169,240, 1231,573, 9036139)
    $Y1=ARRPOP($ARR1_SCAN)
    $X1=ARRPOP($ARR1_SCAN)
   // LCLICK($X1, $Y1) // Клик по нижнему правому пикселю
   // print ($X1, $Y1)
    WAITMS(100)
    UNDEFINE($ARR1_SCAN)
   
    if($X1>$X)
    print ("понижение")
    end_if
   
    if($X1<$X)
  print ("повышение")
    end_if

aast2012

  • Освоившийся
  • **
  • Posts: 24
    • View Profile
Re: нахождение правого нижнего пикселя
« Reply #5 on: September 27, 2018, 06:58:55 PM »
Да мой код работает... спс за помощь... подскажите ещё как мне оптимально написать код:
GETSCREEN
    SCANPXL($ARR_SCAN, 169,240, 1231,573, 7765503)
ИЛИ
GETSCREEN
    SCANPXL($ARR1_SCAN, 169,240, 1231,573, 9036139)
То есть, любой из двух пикселей будет делать код... Я думаю
 SCANPXL($ARR_SCAN, 169,240, 1231,573, 7765503, 9036139)

aast2012

  • Освоившийся
  • **
  • Posts: 24
    • View Profile
Re: нахождение правого нижнего пикселя
« Reply #6 on: September 27, 2018, 07:03:36 PM »
не работает((( или так???
GETSCREEN
    SCANPXL($ARR_SCAN, 169,240, 1231,573, 7765503)
else

    SCANPXL($ARR_SCAN, 169,240, 1231,573, 9036139)
UNDEFINE($ARR_SCAN)

aast2012

  • Освоившийся
  • **
  • Posts: 24
    • View Profile
Re: нахождение правого нижнего пикселя
« Reply #7 on: September 27, 2018, 07:11:32 PM »
чет я не разобрался как сделать по двум разным пикселям этот код

aast2012

  • Освоившийся
  • **
  • Posts: 24
    • View Profile
Re: нахождение правого нижнего пикселя
« Reply #8 on: September 27, 2018, 08:47:25 PM »
   GETSCREEN
    SCANPXL($ARR_SCAN, 0,0, $_xmax,$_ymax, 7765503)
   
   
    $Y=ARRPOP($ARR_SCAN)
    $X=ARRPOP($ARR_SCAN)
   
   
     if($X>0)
      WAITMS(100)
     else
    UNDEFINE($ARR_SCAN)
       SCANPXL($ARR_SCAN, 0,0, $_xmax,$_ymax, 9036139)
     $Y=ARRPOP($ARR_SCAN)
    $X=ARRPOP($ARR_SCAN)
   
   
    WAITMS(100)
      
    end_if
     
   LCLICK($X, $Y) // Клик по нижнему правому пикселю
    print ($X, $Y)
    WAITMS(100)   
 
    UNDEFINE($ARR_SCAN)

Вот этот код работает... кто подскажет как его модернизаровать или упростить???