#javascript #bbc-microbit #makecode
Вопрос:
В настоящее время я пытаюсь создать змею внутри микро:бита. Но одна проблема заключается в том, что когда я использую оператор if, чтобы определить, касается ли змея яблока, это сработает один раз, но затем я вызываю функцию, которая говорит
function createApple() { let apple = game.createSprite(randint(0, 5), randint(0, 5)); }
Создание переменных с помощью оператора let делает его локальной переменной, работающей только с другими операторами внутри функции, но когда я пытаюсь создать переменную с помощью var, в ней говорится, что я должен определять переменные с помощью оператора let. Есть ли способ создать глобальные переменные внутри функций и других блоков кода, которые работают? (Пожалуйста, ответьте на это так, чтобы это не было субъективно для моей ситуации и охватывало множество подобных сценариев для людей, включая меня)
(Вот мое утверждение «если», если оно каким-то образом требуется от кого-то, кто отвечает)
loops.everyInterval(1, function () { if (snakeHead.isTouching(apple)) { apple.delete(); createApple(); } });
Ответ №1:
Вы можете объявить переменную вне функции, чтобы сделать ее глобальной. Если вы начинаете с пустой глобальной переменной, вам нужно добавить тип переменной, стоящей за ней :
let apple : game.LedSprite function createApple() { apple = game.createSprite(randint(0, 5), randint(0, 5)); }
Если вы не знаете тип переменной (в данном случае game.LedSprite
), вы можете найти ее, наведя курсор мыши на функцию createSprite
, см. Скриншот:
Комментарии:
1. Когда я использовал
let apple
его, он говорит: «Переменная»apple» неявно имеет тип «любой»». Возможно ли это исправить?2. Извините, да, вам нужно добавить тип переменной, если вы не заполните ее немедленно. Я отредактировал ответ.