Название кнопки не меняется - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь построить игру с нестандартной птицей, в которой вы можете выбрать одну из 3 различных сложностей.Но метка кнопки не изменится.Прямо сейчас у меня есть функция, которая должна изменить сложность.Вот код

Я пытался изменить заглавные буквы кода, хотя это не сработало.

Это код кнопки сложности:

on mouseUp
    changeDiff
end mouseUp

Это код на карточке:

put 1 into difficulty    

on changeDiff
   if difficulty = 2 then
      put 1 into difficulty
      set the Label of btn "Difficulty" to "normal"
   end if
   if difficulty = 1.5 then
      put 2 into difficulty
      set the Label of btn "Difficulty" to "DEMON"
   end if
   if difficulty = 1 then
      put 1.5 into difficulty
      set the Label of btn "Difficulty" to "hard"
   end if
end changeDiff

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Рассмотрим этот подход:

Используйте кнопку меню параметров с вариантами 1, 1.5 и 2 для выбора уровня сложности.Сценарий меню параметров, как это, передавая выбранный параметр в качестве параметра:

on menuPick pItemName
    changeDiff pItemName
end menuPick

Затем в сценарии вашей карты:

local difficulty 

on changeDiff pDiff
    switch pDiff
        case 2
            put 1 into difficulty
            set the label of btn "Difficulty" to "normal"
            break
        case 1.5
            put 2 into difficulty
            set the label of btn "Difficulty" to "DEMON"
            break
        case 1
            put 1.5 into difficulty
            set the label of btn "Difficulty" to "hard"
            break
    end switch
end changeDiff
0 голосов
/ 30 января 2019

Непонятно, как вы справляетесь с «сложностью 1».Как написано, это ничего не сделает.Если я понимаю, что вы пытаетесь сделать, это значение необходимо сохранить в переменной, и если значение по умолчанию всегда начинается с «1», вы можете сделать что-то вроде:

local затруднение = 1

Кроме того, ваш обработчик changeDiff должен использовать операторы "else" или рассмотреть возможность выхода из вашего обработчика после того, как было установлено значение, чтобы избежать одного оператора "if", устанавливающего истинное условие для другого - в вашем нынешнем виде - вашего кода.будет чередоваться только между первыми двумя вариантами «если».Вы могли бы написать обработчик как:

local difficulty = 1

on changeDiff
   if difficulty = 2 then
      put 1 into difficulty
      set the label of btn "Difficulty" to "normal"
   else
      if difficulty = 1.5 then
         put 2 into difficulty
         set the label of btn "Difficulty" to "DEMON"
      else
         if difficulty = 1 then
            put 1.5 into difficulty
            set the label of btn "Difficulty" to "hard"
         end if
      end if
   end if
end changeDiff

Вы могли бы рассмотреть возможность использования оператора switch (немного проще для чтения), например:

local difficulty = 1

on changeDiff
   switch difficulty
      case 2
         put 1 into difficulty
         set the label of btn "Difficulty" to "normal"
         break
      case 1.5
         put 2 into difficulty
         set the label of btn "Difficulty" to "DEMON"
         break
      case 1
         put 1.5 into difficulty
         set the label of btn "Difficulty" to "hard"
   end switch
end changeDiff

Если вы хотите быть эффективным (меньше строк кода), вы можете использовать одну инструкцию «установить метку» и получить имя метки из набора элементов метки (значения сложности 1, 2, 3):

local difficulty = 1

on changeDiff
   add 1 to difficulty
   if difficulty > 3 then put 1 into difficulty
   set the label of btn "Difficulty" to item difficulty of "Normal,Hard,Demon"
end changeDiff

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...