Смена костюма не срабатывает при тех же условиях, что и другие вещи, успешно срабатывающие

Я прохожу курс повышения квалификации по C, SQL и т. д., и во вводном задании мы используем Scratch, с которым я не знаком. Короче говоря, я делаю игру, в которой летучая мышь полуслучайно прыгает по экрану, отскакивая от шаров, которые можно перемещать, щелкая по ним, и пытаясь добраться до яблока. Когда летучая мышь и яблоко соприкасаются (т.е. для моих целей, когда расстояние летучей мыши от яблока ‹ 50), летучая мышь выполняет анимацию победы. Кроме того, я запрограммировал яблоко на переключение костюмов на недоеденную версию, когда его расстояние от летучей мыши ‹ 50. Однако яблоко не делает этого, хотя процедуры летучей мыши выполняются правильно. Что еще более странно, если я повторно запущу программу после ее завершения, яблоко может появиться в своем недоеденном костюме.

Я пытался:

  • Добавление дополнительных действий летучей мыши (отсюда и вращение) на случай, если программа завершается слишком рано, чтобы яблоко могло что-либо сделать. Те же результаты.
  • Позволить смене костюма яблока срабатывать, когда его расстояние ‹ большее число, поэтому у него есть шанс переключиться до того, как летучая мышь выполнит свои критерии. Те же результаты.
  • Посмотреть, может ли яблоко переключиться на недоеденный костюм в более простых условиях, например, прямо при запуске программы, на случай, если с самим костюмом возникнут какие-то проблемы. Это работает нормально.

Код для летучей мыши

Код для яблока

Если я не ошибаюсь, на Scratch нет возможности переключиться в расширенный режим, где я мог бы видеть код под капотом; в противном случае я бы чувствовал себя более комфортно, разбираясь с проблемой оттуда, исходя из моего предыдущего опыта. Пожалуйста, дайте мне знать, если есть такая функция, которую мне не хватает, потому что я вполне могу решить проблему таким образом. Спасибо!


person Nick    schedule 20.10.2020    source источник


Ответы (1)


Ваш код Apple запускается только один раз, когда вы нажимаете зеленый флажок. Вы должны запустить его в цикле, постоянно проверяя свое расстояние, чтобы он обновлялся (предпочтительно делать паузу между каждой итерацией цикла, чтобы он не проверял слишком часто). Причина, по которой яблоко иногда начинается как наполовину съеденное, заключается в том, что оно оказалось на расстоянии ‹ 50 единиц от летучей мыши в момент щелчка по флажку.

person Random Davis    schedule 20.10.2020