Author Topic: Скрипт с IF работает, не могу понять как сделать с SWITCH  (Read 3836 times)

0 Members and 1 Guest are viewing this topic.

alizonjohn

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Всем привет!
Задача такая, есть ВСЕГО 2 ВАРИАНТА - на экране появляется или красный или синий пиксель. В зависимости от этого выполняются 2 разные алгоритма. Все сделал через IF по инструкции. Все работает.

Но!!! - теперь есть 3 ВАРИАНТА - красный, синий и зеленый пиксели.

Хочу использовать SWITCH как мне задать значение $var (что бы красный был 1, синий 2, зеленый 3)?

Благодарю за помощь.

alizonjohn

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Я имею ввиду, что пытаюсь сделать по аналогии с примером из справки

Code: [Select]
// генерируем случайное значение
$var = rnd(1,5)

// анализируем значение переменной
// при этом явно обрабатываем случаи 1,2 и 3 и неявно в блоке по умолчанию

switch($var)
case(1)
  print("one")
case(2)
  print("two")
case(3)
  print("three")
default
  print("smth else")
  print("$var = ", $var) 
end_switch

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Code: (clickermann) [Select]
GETSCREEN

switch(pxl($x, $y))  //вписываешь свои координаты пикселя
   
case(255)
   print("красный")
   // действия, если пиксель красный (вместо 255 впиши свой номер цвета )
   
case(65280)
   print("зеленый")
   // действия, если пиксель зеленый (вместо 65280 впиши свой номер цвета )
   
case(16711680)
   print("синий")
   // действия, если пиксель синий (вместо 16711680 впиши свой номер цвета )
   
default
   print("найден другой цвет пикселя = ", pxl($x, $y))   
   // действия, если пиксель другого цвета
   
end_switch
waitms(50)

если бы ты показал свой код с условиями IF, было бы намного проще.

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
да сложно понять что именно нужно автору вопроса. :-\
 вместо обозваний цветов можешь вписать их номера.
Code: (clickermann) [Select]

//Хочу использовать SWITCH как мне задать значение $var
//(что бы красный был 1, синий 2, зеленый 3)?
// генерируем случайное значение
$var = rnd(1,5)

// анализируем значение переменной
// при этом явно обрабатываем случаи 1,2 и 3 и неявно в блоке по умолчанию

switch($var)
case(1)
  print("one")
   $var1=красный
case(2)
  print("two")
$var1=синий
case(3)
  print("three")
$var1=зилёнай
default
  print("smth else")
  print("$var = ", $var)
  $var1=непойми какой
end_switch

LOGWRITE ($var1)
 LOGWRITE (" ")
HALT
« Last Edit: November 19, 2016, 01:46:04 PM by Золотой »

alizonjohn

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Спасибо, вроде понятно.

Тогда еще один вопрос: как задать каждому пикселю свои координаты? Имеется ввиду
красный появляется только сверху слева
синий только по центру
зеленый только снизу справа

Вариант выбрать областью поиска весь экран - не подходит!


Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
даже автору вопроса и то ВРОДЕ  всё понятно. мне вот, к сожалению ничего ни понятно. Как любят писать на нашем форуме " Уже всю голову сломал!"   :'(

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Уйду я от вас  ;) или в Автоит или сразу в "Битву экстрасенсов", а что - зачем такому опыту по чтению несформулированных мыслей пропадать, да этож золотое дно! ;D

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Может над  вашим кодом вместе поржём,  ;D так сказать развеим смутные сомненья? ::)

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile

Тогда еще один вопрос: как задать каждому пикселю свои координаты? Имеется ввиду
красный появляется только сверху слева
синий только по центру
зеленый только снизу справа

Вариант выбрать областью поиска весь экран - не подходит!

если я правильно понял вопрос , то

 с переключателем switch тут не прокатит. пишем с помощью обычных условий  if else .

Code: (clickermann) [Select]
//$x1, $y1,  $x2, $y2 , $x3, $y3  задаешь каждому пикселю свои координаты
GETSCREEN
IF(pxl($x1, $y1) = 255)
   print("красный")
   // действия, если пиксель красный (вместо 255 впиши свой номер цвета )
   
ELSE
   IF(pxl($x2, $y2) = 65280)
      print("зеленый")
      // действия, если пиксель зеленый (вместо 65280 впиши свой номер цвета )
     
   ELSE
      IF(pxl($x3, $y3) = 16711680)
         print("синий")
         // действия, если пиксель зеленый (вместо 65280 впиши свой номер цвета )
         
      ELSE
         print("ниодин из пикселей не найден")
         // действия, если пиксели другого цвета

      END_IF
   END_IF
END_IF
waitms(50)

alizonjohn

  • Зашел в гости
  • *
  • Posts: 10
    • View Profile
Спасибо dramster! Именно это я и хотел!

Золотой - ну ты и флудер
« Last Edit: November 19, 2016, 02:09:17 PM by alizonjohn »

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
так будет работать, если  координаты искомых пикселей статичны.  но можно сделать  поиск этих цветов в небольших областях. но тебе виднее
Code: (clickermann) [Select]
GETSCREEN
IF_PIXEL_IN($x1, $y1, $x1+(ширина обл), $y1+(высота обл), 255)
   print("красный")
   // действия, если  красный пикс есть в обл (вместо 255 впиши свой номер цвета )
   
ELSE
   IF_PIXEL_IN($x2, $y2, $x2+(ширина обл), $y2+(высота обл), 65280)
      print("зеленый")
      // действия, если зеленый пикс есть в обл (вместо 65280 впиши свой номер цвета )
     
   ELSE
      IF_PIXEL_IN($x3, $y3, $x3+(ширина обл), $y3+(высота обл), 16711680)
         print("синий")
         // действия, если синий пикс есть в обл (вместо 16711680 впиши свой номер цвета )
         
      ELSE
         print("ниодин из пикселей не найден")
         // действия, если пиксели другого цвета
      END_IF
   END_IF
END_IF
« Last Edit: November 19, 2016, 02:14:05 PM by dramster »

Золотой

  • Оплот сообщества
  • ****
  • Posts: 312
    • View Profile
Спасибо dramster! Именно это я и хотел!

Золотой - ну ты и флудер

Класс и я же ещё и флудер, только по тому что кто-то не может понятно сформулировать, что именно ему нужно и каждый раз решает угадал отвечающий или нет. >:(