Author Topic: исключить цвет  (Read 2461 times)

0 Members and 1 Guest are viewing this topic.

aheart82

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
исключить цвет
« on: December 15, 2014, 04:37:15 PM »
Есть квадратная картинка. пусть будет допустим 10*10
в каждом пикселе есть цвет (всего 3 цвета)

известно 2 цвета
$color1=1
$color2=2
третий цвет меняется.
какое условие надо написать,чтобы клик был именно по третьему ?

не нашел метода исключения ((


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: исключить цвет
« Reply #1 on: December 15, 2014, 04:46:23 PM »
Не очень понятно задание. "картинка" - это область на экране?
Предположу что так
Code: (clickermann) [Select]
GETSCREEN
FOR($i=0, $i<10)
   FOR($j=0, $j<10)
      $P = PXL($i, $j)
      IF(($P ! $color1) & ($P ! $color2))
         LCLICK($i,$j)
         $i = 100
         $j = 100
      END_IF
   END_CYC
END_CYC

Если не так понял, объясни по другому.
« Last Edit: December 15, 2014, 05:18:38 PM by Vint »


Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: исключить цвет
« Reply #2 on: December 15, 2014, 04:57:15 PM »
скобки где?
Code: (clickermann) [Select]
IF(($P ! $color1) & ($P ! $color2))

aheart82

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: исключить цвет
« Reply #3 on: December 15, 2014, 04:59:05 PM »
вот так наверно проще..
игра game.ioxapp.com/color/

Code: [Select]
$color1=14540253    //рамка  .это цвет №1

GETSCREEN

if(PXL(595,220)=PXL(1083,220))   //ищем цвет №2 исключением
   $color2= PXL(595,220)    //если 2 квадрата сверху равны, значит цвет №2 найден
else
   $color2= PXL(595,698)  //иначе берем снизу
end_if

aheart82

  • Зашел в гости
  • *
  • Posts: 13
    • View Profile
Re: исключить цвет
« Reply #4 on: December 15, 2014, 06:04:11 PM »
Code: [Select]
LCLICK(821,326) // запускаем  заново игру

igra:

$color1=14540253    //рамка  .это цвет №1

GETSCREEN
 if(PXL(598,220)=PXL(1083,220))   //ищем цвет №2 исключением
   $color2= PXL(598,220)    //если 2 квадрата сверху равны, значит цвет №2 найден
else
   $color2= PXL(598,698)  //иначе берем снизу
end_if



rnd:  //заново рандуем коры, хоть это и не есть гуд-время тянется
$x=RND(595,1085)
$y=RND(220,700)

if((PXL($x,$y) ! $color2)&(PXL($x,$y) ! $color1))
LCLICK($x,$y)
else
   goto (rnd)
end_if


 goto (igra)

рекорд 471.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: исключить цвет
« Reply #5 on: December 15, 2014, 10:05:39 PM »
Разгадал я их секрет. У искомого цвета изменяется RGB относительно основного цвета на случайное число одинаковое для всех трех каналов.
Например R+5 G+5 B+5
Чаще всего прибавляется по 5, 10, 15 и тд. до 255, но иногда по 4, 8, 12 и тд.

Вот мой скрипт и результат.
скрипт автоматически рассчитывает координаты, ничего менять не нужно.


Правда иногда застревает на углах. Там есть небольшой переход цвета.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: исключить цвет
« Reply #6 on: December 16, 2014, 12:54:58 PM »
Я вчера тоже накатал и тоже сначала столкнулся с переходными цветами. Сегодня чуть подправил и прикрутил автоопределение от андрея.

Правда он медленней.
Хоть вариант Андрея и заедает переодически, результат у него хороший (скриншот), мой намного скромнее.
« Last Edit: December 16, 2014, 01:01:43 PM by Vint »