You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 03:07:08