Author Topic: нажать клавишу  (Read 5380 times)

0 Members and 2 Guests are viewing this topic.

rasnvas

  • Освоившийся
  • **
  • Posts: 44
    • View Profile
нажать клавишу
« on: February 08, 2017, 08:29:31 PM »
здравствуйте а как быть если для каждой картинке надо выполнить разные функции например ”img1.bmp” нажать клавишу KEYPRESS(#L) а для ”img2.bmp” KEYPRESS(#S) и т.д  помогите плиз  вот код

Code: (clickermann) [Select]
// создаем список и передаём в него изображения
$img[0]=”img1.bmp”
$img[1]=”img2.bmp”
$img[2]=”img3.bmp”
for($i=0,$i<3)// для переменной i=0 пока  i<3
if_picture_in(0,0,$_xmax,$_ymax,$img[i])// если картинка из списка есть
MOVE($_return1+5,$_return2+5)
WAITMS(10)
 LCLICK($_return1+5,$_return2+5)
END_IF// конец условия если
END_CYC// конец цикла для

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: нажать клавишу
« Reply #1 on: February 08, 2017, 09:29:43 PM »
Где ты такие кавычки нашел? И в индексе массива нужно писать переменную а не просто букву. А так же, где GETSCREEN?

Code: (clickermann) [Select]
// создаем список и передаём в него изображения
$img[0]="img1.bmp"
$img[1]="img2.bmp"
$img[2]="img3.bmp"

GETSCREEN
for($i=0,$i<3)// для переменной i=0 пока  i<3
   if_picture_in(0,0,$_xmax,$_ymax,$img[$i])// если картинка из списка есть
      MOVE($_return1+5,$_return2+5)
      WAITMS(10)
      LCLICK($_return1+5,$_return2+5)
      WAITMS(50)
      SWITCH($i) // свитч выполнит ту или иную секцию в зависимости от числа в переменной
      CASE(1)
         KEYPRESS(#L)
         WAITMS(50)
      CASE(2)
         KEYPRESS(#S)
         WAITMS(50)
      END_SWITCH
   END_IF // конец условия если
END_CYC // конец цикла для

Может проще это написать по обычному
Code: (clickermann) [Select]
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "img1.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
   KEYPRESS(#L)
   WAITMS(50)
ELSE
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "img2.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(100)
      KEYPRESS(#S)
      WAITMS(50)
   ELSE
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "img3.bmp", -1, 100)
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         WAITMS(50)
      END_IF
   END_IF
END_IF

rasnvas

  • Освоившийся
  • **
  • Posts: 44
    • View Profile
Re: нажать клавишу
« Reply #2 on: February 08, 2017, 09:49:15 PM »
спасибо большое помогли очень сильно :)

rasnvas

  • Освоившийся
  • **
  • Posts: 44
    • View Profile
Re: нажать клавишу
« Reply #3 on: February 08, 2017, 09:55:38 PM »
А вы не могли бы объяснить как с одного цикла перейти по команде на другой исполнить 30 раз и вернуться к первому

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: нажать клавишу
« Reply #4 on: February 08, 2017, 10:01:21 PM »
А вы не могли бы объяснить как с одного цикла перейти по команде на другой исполнить 30 раз и вернуться к первому

Можно использовать подпрограмму

Code: (clickermann) [Select]
SUB(имя)
   FOR($b=0,$b<5)
      //
   END_CYC
END_SUB



FOR($a=0,$a<5)
   //
   имя()
END_CYC

rasnvas

  • Освоившийся
  • **
  • Posts: 44
    • View Profile
Re: нажать клавишу
« Reply #5 on: February 08, 2017, 10:12:15 PM »
Я правильно понял

Code: (clickermann) [Select]
//1
SUB(имя)
   FOR($b=0,$b<5)
GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "img1.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
   KEYPRESS(#L)
   WAITMS(50)
ELSE
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "img2.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(100)
      KEYPRESS(#S)
      WAITMS(50)
   ELSE
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "img3.bmp", -1, 100)
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         WAITMS(50)
END_CYC
END_SUB
 //2
FOR($a=0,$a<5)

GETSCREEN
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "img1.bmp", -1, 100)
   LCLICK($_return1, $_return2)
   WAITMS(100)
   KEYPRESS(#L)
   WAITMS(50)
ELSE
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "img2.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(100)
      KEYPRESS(#S)
      WAITMS(50)
   ELSE
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "img3.bmp", -1, 100)
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         WAITMS(50)
END_CYC

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: нажать клавишу
« Reply #6 on: February 09, 2017, 08:34:29 AM »
нет неправильно.

rasnvas

  • Освоившийся
  • **
  • Posts: 44
    • View Profile
Re: нажать клавишу
« Reply #7 on: February 09, 2017, 08:45:49 AM »
Я прошу прощения я новенький и тупой в этом деле объясните пожалуйста по подробней

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: нажать клавишу
« Reply #8 on: February 09, 2017, 09:14:25 AM »
Code: (clickermann) [Select]
SUB(Prog1)
   FOR($b=0,$b<5)
      GETSCREEN
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "img4.bmp", -1, 100)
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         IF_PICTURE_IN (0,0, $_xmax,$_ymax, "img5.bmp", -1, 100)
            LCLICK($_return1, $_return2)
            WAITMS(100)
         ELSE
            IF_PICTURE_IN (0,0, $_xmax,$_ymax, "img6.bmp", -1, 100)
               LCLICK($_return1, $_return2)
               WAITMS(100)
            ELSE
               WAITMS(50)
            END_IF
         END_IF
      END_IF
   END_CYC
END_SUB

FOR($a=0,$a<10)
   GETSCREEN
   IF_PICTURE_IN (0,0, $_xmax,$_ymax, "img1.bmp", -1, 100)
      LCLICK($_return1, $_return2)
      WAITMS(100)
   ELSE
      IF_PICTURE_IN (0,0, $_xmax,$_ymax, "img2.bmp", -1, 100)
         LCLICK($_return1, $_return2)
         WAITMS(100)
      ELSE
         IF_PICTURE_IN (0,0, $_xmax,$_ymax, "img3.bmp", -1, 100)
            LCLICK($_return1, $_return2)
            WAITMS(100)
         ELSE
            WAITMS(50)
         END_IF
      END_IF
   END_IF
   Prog1() // переходим в подпрограмму Prog1 там цикл прокрутит код 5 раз и выполнение вернется на следующую строку. выполняем этот цикл второй раз и снова в подпрограмму и тд.
END_CYC

rasnvas

  • Освоившийся
  • **
  • Posts: 44
    • View Profile
Re: нажать клавишу
« Reply #9 on: February 09, 2017, 09:21:35 AM »
теперь яснее стало спасибо огромное реально помогли  :)

rasnvas

  • Освоившийся
  • **
  • Posts: 44
    • View Profile
Re: нажать клавишу
« Reply #10 on: February 09, 2017, 02:51:01 PM »
что та не так не переключает не могу понять почему  :-\

Code: (clickermann) [Select]
FOR($a=0,$a<10)
   
   GETSCREEN
   IF_PICTURE_IN (570,482, 851,508, "ras11.bmp")
      KEYPRESS(#L)
      WAIT(1)
     
   END_IF
   
   GETSCREEN
   IF_PICTURE_IN (570,482, 851,508, "ras10.bmp")
      KEYPRESS(#S)
      KEYPRESS(#L)
      WAIT(1)
     
   END_IF
   
   GETSCREEN
   IF_PICTURE_IN (570,482, 851,508, "ras9.bmp")
      KEYPRESS(#L)
      WAIT(1)
     
   END_IF
   
   GETSCREEN
   IF_PICTURE_IN (570,482, 851,508, "ras8.bmp")
      KEYPRESS(#S)
      KEYPRESS(#L)
      WAIT(1)
     
   END_IF
   
   GETSCREEN
   IF_PICTURE_IN (570,482, 851,508, "ras7.bmp")
      KEYPRESS(#L)
      WAIT(1)
     
   END_IF
   
   GETSCREEN
   IF_PICTURE_IN (570,482, 851,508, "ras6.bmp")
      KEYPRESS(#S)
      KEYPRESS(#L)
      WAIT(1)
     
   END_IF
   
   GETSCREEN
   IF_PICTURE_IN (570,482, 851,508, "ras5.bmp")
      KEYPRESS(#A)
      KEYPRESS(#L)
      WAIT(1)
     
   END_IF
   
   GETSCREEN
   IF_PICTURE_IN (570,482, 851,508, "ras4.bmp")
      KEYPRESS(#S)
      KEYPRESS(#L)
      WAIT(1)
     
   END_IF
   
   GETSCREEN
   IF_PICTURE_IN (570,482, 851,508, "ras3.bmp")
      KEYPRESS(#A)
      KEYPRESS(#A)
      KEYPRESS(#L)
      WAIT(1)
     
   END_IF
   
   GETSCREEN
   IF_PICTURE_IN (570,482, 851,508, "ras2.bmp")
      KEYPRESS(#A)
      KEYPRESS(#A)
      KEYPRESS(#A)
      KEYPRESS(#A)
      KEYPRESS(#L)
      WAIT(1)
     
     
     
   END_IF
   
   
   
   GETSCREEN
   IF_PICTURE_IN (298,484, 543,507, "ras1.bmp")
     
      HALT
     
     
     
     
   END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF


Prog1() // ïåðåõîäèì â ïîäïðîãðàììó Prog1 òàì öèêë ïðîêðóòèò êîä 5 ðàç è âûïîëíåíèå âåðíåòñÿ íà ñëåäóþùóþ ñòðîêó. âûïîëíÿåì ýòîò öèêë âòîðîé ðàç è ñíîâà â ïîäïðîãðàììó è òä.
END_CYC

SUB(Prog1)
FOR($b=0,$b<5)

GETSCREEN
IF_PICTURE_IN (570,482, 851,508, "ras1.bmp")
KEYPRESS(#L)
WAIT(1)

END_IF

GETSCREEN
IF_PICTURE_IN (570,482, 851,508, "ras2.bmp")
KEYPRESS(#S)
KEYPRESS(#L)
WAIT(1)

END_IF

GETSCREEN
IF_PICTURE_IN (570,482, 851,508, "ras3.bmp")
KEYPRESS(#A)
KEYPRESS(#L)
WAIT(1)

END_IF

GETSCREEN
IF_PICTURE_IN (570,482, 851,508, "ras4.bmp")
KEYPRESS(#S)
KEYPRESS(#L)
WAIT(1)

END_IF

GETSCREEN
IF_PICTURE_IN (570,482, 851,508, "ras5.bmp")
KEYPRESS(#A)
KEYPRESS(#A)
KEYPRESS(#L)
WAIT(1)

END_IF

GETSCREEN
IF_PICTURE_IN (570,482, 851,508, "ras6.bmp")
KEYPRESS(#S)
KEYPRESS(#L)
WAIT(1)

END_IF

GETSCREEN
IF_PICTURE_IN (570,482, 851,508, "ras7.bmp")
KEYPRESS(#A)
KEYPRESS(#A)
KEYPRESS(#A)
KEYPRESS(#L)
WAIT(1)

END_IF

GETSCREEN
IF_PICTURE_IN (570,482, 851,508, "ras8.bmp")
KEYPRESS(#S)
KEYPRESS(#L)
WAIT(1)

END_IF

GETSCREEN
IF_PICTURE_IN (570,482, 851,508, "ras9.bmp")
KEYPRESS(#A)
KEYPRESS(#A)
KEYPRESS(#A)
KEYPRESS(#A)
KEYPRESS(#L)
WAIT(1)

END_IF

GETSCREEN
IF_PICTURE_IN (570,482, 851,508, "ras10.bmp")
KEYPRESS(#A)
KEYPRESS(#A)
KEYPRESS(#A)
KEYPRESS(#A)
KEYPRESS(#L)
WAIT(1)



END_IF



GETSCREEN
IF_PICTURE_IN (298,484, 543,507, "b128.bmp")

HALT




END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF

END_CYC
END_SUB

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: нажать клавишу
« Reply #11 on: February 09, 2017, 02:55:35 PM »
Это ужас!!!!
Code: (clickermann) [Select]
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF
END_IF

open_78

  • Активный участник
  • ***
  • Posts: 285
  • v4.13.014 x64
    • View Profile
Re: нажать клавишу
« Reply #12 on: February 09, 2017, 03:00:13 PM »
На каждый IF_... один END_IF.
Тело подпрограммы обязательно выше вызова подпрограммы
Code: (clickermann) [Select]
SUB(Prog1)
////////
END_SUB

Prog1()

rasnvas

  • Освоившийся
  • **
  • Posts: 44
    • View Profile
Re: нажать клавишу
« Reply #13 on: February 10, 2017, 12:15:56 PM »
Спасибо  вроде разобрался

rasnvas

  • Освоившийся
  • **
  • Posts: 44
    • View Profile
Re: нажать клавишу
« Reply #14 on: February 16, 2017, 11:00:54 PM »
Я вот не как не могу понять как можно упростить нажатие клавиши например если мне надо нажать одну клавишу 10 раз подскажите если конечно так возможно.