Я работаю над интересным проектом в Excel, создающим игру. Он отлично работает, за исключением того, что примерно через минуту времени выполнения это ошибки, потому что это из пространства стека. Я понял, что это потому, что технически я использую рекурсии в функции stepEvent
, которая выглядит следующим образом:Из-за проблемы с пространством стека - могу ли я повторить суб, не перезаписывая его?
Private Sub stepEvent()
' All the game code
start = Timer
Do While Timer < start + 0.15
DoEvents
Loop
stepEvent
End Sub
Ни в одном из случаев stepEvent
никогда не решить до тех пор, как игрок не теряет, или он бежит из стека и ошибки. Мой вопрос в том, есть ли способ разрешить рекурсивные субмарины, но как-то сохранить контроль, или если есть альтернативный метод, чтобы повторить этот юг, не используя рекурсию.
Ждите, у вас есть * весь код игры * в этой одной процедуре? –
Пожалуйста, никогда не используйте 'DoEvents'. Это было действительно только для того, чтобы позволить приложениям VB6 обновляться. Это вызовет у вас больше горя от проблем с реорганизацией, чем это стоит. – Enigmativity
Нет, он разделен, но я не думал, что это действительно имеет отношение к проблеме. Я пытался максимально упростить мой вопрос, ха-ха. Есть ли что-то еще, что я должен использовать вместо DoEvents, который позволит пользователю по-прежнему изменять выбор, а не «замораживать» во время его запуска? – Cameron