1

Тема: AHK: Ошибка в коде с If/else

Здравствуйте.  Дабы обучения языку AHK и просто развлечения написал скрипт-игру, в котором нужно угадать число от 1 до 10.

loop
{
Random, Rand, 1, 10
InputBox, UserVar, Игра на удачу, Угадай число от 1 до 10
   If UserVar in %Rand%
    MsgBox, 4, Победа, Вы угадали. Ещё раз?
     IfMsgBox Yes
       Continue
     IfMsgBox No
       ExitApp
   else
    MsgBox, 4, Вы проиграли, Загаданное число: %Rand%. Ещё раз?
      IfMsgBox Yes
        Continue
      IfMsgBox No
      ExitApp
}

Но когда пользователь не угадывает число и решает попытаться ещё раз, то при повторном неверном угадывании снова появляется окно ввода, обходя всё, что написано ниже else. Так как я ещё очень плохо знаю AHK прошу указать мне на ошибку в коде.

2

Re: AHK: Ошибка в коде с If/else

loop
{
Random, Rand, 1, 10
InputBox, UserVar, Игра на удачу, Угадай число от 1 до 10
   If UserVar in %Rand%
   {
    MsgBox, 4, Победа, Вы угадали. Ещё раз?
     IfMsgBox Yes
       Continue
     IfMsgBox No
       ExitApp
   }
   else
   {
    MsgBox, 4, Вы проиграли, Загаданное число: %Rand%. Ещё раз?
      IfMsgBox Yes
        Continue
      IfMsgBox No
      ExitApp
   }
}

А лучше так:

Loop  {
   Random, Rand, 1, 10
   InputBox, UserVar, Игра на удачу, Угадай число от 1 до 10
   if (UserVar = Rand)
      MsgBox, 4, Победа, Вы угадали. Ещё раз?
   else
      MsgBox, 4, Вы проиграли, Загаданное число: %Rand%. Ещё раз?
   IfMsgBox No
      break
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Ошибка в коде с If/else

Спасибо большое за улучшенный вариант. Но я плохо понимаю, в чём проблема моей версии скрипта?

4

Re: AHK: Ошибка в коде с If/else

В фигурных скобках, ограничивающих блоки if и else. Без скобок можно использовать только однострочный вариант:

   if (UserVar = Rand)
      MsgBox, 4, Победа, Вы угадали. Ещё раз?
   else
      MsgBox, 4, Вы проиграли, Загаданное число: %Rand%. Ещё раз?
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder