Author Topic: Обработчик нажатий(помогите, я уже замучался)  (Read 1286 times)

0 Members and 1 Guest are viewing this topic.

MaxSt

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
вообщем, суть в следующем, мне надо, что бы когда я зажимал alt + 4(можно не alt) любые цифры, то мне последовательно нажимались цифры числа, равного произведению числа составленного из первых двух чисел и числа составленного из вторых двух чисел и потом enter. Пример:
 я зажимаю alt и нажимаю 1, 2, 3, 4, и мне должны последовательно нажаться(keypress) числа 4 -> 0 -> 8 (т.к. 12*34 = 408) и enter, я пробовал getkeysdown и 4 цикла, идущих друг за другом, но мне всегда выводило (я пытался хотя бы записать числа которые я ввожу в переменные, и в конце их вывести) 4 одинаковые цифры при попытке нажать на любую, вообщем не работало, мб вы поможете?

По большому счету все что мне надо что бы при зажатии alt и нажатии 4 цифр они записались в 4 переменные, дальше я думаю справлюсь, но если с остальным поможете(хотя бы что б я видел как правильно писать код ибо я учусть только) буду очень благодарен
« Last Edit: August 24, 2018, 03:16:02 AM by MaxSt »

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Code: (clickermann) [Select]
IF(ISKEYDOWN(#ALT)=1)
   WHILE(ISKEYDOWN(#ALT)=1)
     
      IF(ISKEYDOWN(#1)=1)
         WHILE(ISKEYDOWN(#1)=1)
            WAITMS(5)
         END_CYC
         ARRPUSH($a_num, 1)
      END_IF
     
      IF(ISKEYDOWN(#2)=1)
         WHILE(ISKEYDOWN(#2)=1)
            WAITMS(5)
         END_CYC
         ARRPUSH($a_num, 2)
      END_IF
     
      IF(ISKEYDOWN(#3)=1)
         WHILE(ISKEYDOWN(#3)=1)
            WAITMS(5)
         END_CYC
         ARRPUSH($a_num, 3)
      END_IF
     
      IF(ISKEYDOWN(#4)=1)
         WHILE(ISKEYDOWN(#4)=1)
            WAITMS(5)
         END_CYC
         ARRPUSH($a_num, 4)
      END_IF
     
      IF(ISKEYDOWN(#5)=1)
         WHILE(ISKEYDOWN(#5)=1)
            WAITMS(5)
         END_CYC
         ARRPUSH($a_num, 5)
      END_IF
     
      IF(ISKEYDOWN(#6)=1)
         WHILE(ISKEYDOWN(#6)=1)
            WAITMS(5)
         END_CYC
         ARRPUSH($a_num, 6)
      END_IF
     
      IF(ISKEYDOWN(#7)=1)
         WHILE(ISKEYDOWN(#7)=1)
            WAITMS(5)
         END_CYC
         ARRPUSH($a_num, 7)
      END_IF
     
      IF(ISKEYDOWN(#8)=1)
         WHILE(ISKEYDOWN(#8)=1)
            WAITMS(5)
         END_CYC
         ARRPUSH($a_num, 8)
      END_IF
     
      IF(ISKEYDOWN(#9)=1)
         WHILE(ISKEYDOWN(#9)=1)
            WAITMS(5)
         END_CYC
         ARRPUSH($a_num, 9)
      END_IF
     
      IF(ISKEYDOWN(#0)=1)
         WHILE(ISKEYDOWN(#0)=1)
            WAITMS(5)
         END_CYC
         ARRPUSH($a_num, 0)
      END_IF
     
   END_CYC
   
   IF(ARRSIZE($a_num) > 3)
      $num = INT(STRCONCAT($a_num[0],$a_num[1]))*INT(STRCONCAT($a_num[2],$a_num[3]))
      HINTPOPUP($num, "Полученное число")
      WAITMS(100)
      KEYSTRING($num) // Печатаем это число
   END_IF
   UNDEFINE($a_num)
   
ELSE
   WAITMS(20)
END_IF

MaxSt

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Спасибо огромное))

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Видишь однотипные куски кода - цикл или подпрограмма.
Code: (clickermann) [Select]
IF(ISKEYDOWN(#ALT) = 1)
    WHILE(ISKEYDOWN(#ALT) = 1)
        FOR($code = 48, $code < 58)
            IF(ISKEYDOWN($code) = 1)
                WHILE(ISKEYDOWN($code) = 1)
                    WAITMS(5)
                END_CYC
                ARRPUSH($a_num, $code - 48)
            END_IF
        END_CYC
    END_CYC
   
    IF(ARRSIZE($a_num) > 3)
        $num = INT(STRCONCAT($a_num[0],$a_num[1]))*INT(STRCONCAT($a_num[2],$a_num[3]))
        HINTPOPUP($num, "Полученное число")
        WAITMS(100)
        KEYSTRING($num) // Печатаем это число
    END_IF
    UNDEFINE($a_num)   
ELSE
    WAITMS(20)
END_IF