IF语句内Goto无法生效,其余代码正常运行的问题求助
解决Goto重启无效的替代方案
别用Goto,改用**子程序(Sub)**封装游戏重启逻辑,这是更规范可靠的写法,也能解决你当前的问题。
1. 封装重启逻辑为子程序
把你原本放在Start标签下的初始化代码,全部放到自定义子程序里,比如RestartGame():
Sub RestartGame ' 这里放入原Start标签下的所有初始化代码: NumberOfIncorrectLetters = 0 GraphicsWindow.Clear() ' 比如重新随机选单词、重置画布元素、初始化交互逻辑等 ' ...其他必要的初始化操作 EndSub
2. 修改IF语句,用子程序替代Goto
把原来的Goto Start改成调用这个子程序:
if NumberOfIncorrectLetters = 13 Then GraphicsWindow.PenColor="white" HangmanPart13 = Shapes.AddRectangle(40,5) Shapes.Move(HangmanPart13,1133,575) GraphicsWindow.DrawBoundText(1000,900,500,"You Lost, the word was : " + WordYouNeedToGuess) NumberOfIncorrectLetters = 0 ' 调用重启子程序,替代Goto Start RestartGame() EndIf
3. 游戏启动时直接调用子程序
游戏开头不用写Start标签,直接调用RestartGame()完成初始化:
' 游戏入口 RestartGame() ' 后续的游戏逻辑(比如按键监听、猜字母判断等) ' ...
为什么Goto可能失效?
- 你的
Start标签可能嵌套在循环、条件语句这类代码块内部,Small Basic要求Goto标签必须在全局代码区域,不能嵌套在其他结构里。 - Goto本身容易让代码逻辑混乱,子程序是更清晰的结构化写法,后期维护也更方便。
内容的提问来源于stack exchange,提问作者Geekknight
相关产品推荐
相关产品推荐

