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

QBasic井字棋函数报错:Expected ) on current line 求助

QBasic井字棋获胜判断函数问题修复

1. 解决"Expected )"报错

你遇到的函数声明行错误,是因为QBasic(尤其是旧版本)的函数返回字符串的语法要求不同。正确写法有两种:

  • 方法一:使用字符串后缀$声明函数,无需额外写返回类型声明
FUNCTION HayGanador$()
  • 方法二:确保AS关键字与类型之间的格式符合规范(仅部分新版本QBasic支持)
FUNCTION HayGanador () AS STRING

原代码中FUNCTION HayGanador() as string的括号后直接紧跟as,不符合QBasic的语法解析规则,导致出现期望右括号的错误。

2. 实现字符串类型返回

你当前代码里赋值的-1和0是数值类型,要返回字符串,需改为返回获胜玩家的标记(比如"X"或"O"),或者表示无胜者的字符串。修改后的完整代码如下:

' 使用$后缀声明字符串返回类型
FUNCTION HayGanador$()
    FOR i = 1 TO 3
        ' 检测横向获胜
        IF Tablero(i, 1) <> "" AND Tablero(i, 1) = Tablero(i, 2) AND Tablero(i, 1) = Tablero(i, 3) THEN
            HayGanador$ = Tablero(i, 1) ' 返回获胜玩家的标记(X/O)
            EXIT FUNCTION
        END IF

        ' 检测纵向获胜
        IF Tablero(1, i) <> "" AND Tablero(1, i) = Tablero(2, i) AND Tablero(1, i) = Tablero(3, i) THEN
            HayGanador$ = Tablero(1, i)
            EXIT FUNCTION
        END IF
    NEXT i

    ' 检测左上到右下对角线获胜
    IF Tablero(1, 1) <> "" AND Tablero(1, 1) = Tablero(2, 2) AND Tablero(1, 1) = Tablero(3, 3) THEN
        HayGanador$ = Tablero(1, 1)
        EXIT FUNCTION
    END IF
    ' 检测右上到左下对角线获胜
    IF Tablero(1, 3) <> "" AND Tablero(1, 3) = Tablero(2, 2) AND Tablero(1, 3) = Tablero(3, 1) THEN
        HayGanador$ = Tablero(1, 3)
        EXIT FUNCTION
    END IF
    
    ' 无胜者时返回空字符串或自定义提示
    HayGanador$ = "" ' 也可改为"无胜者"
END FUNCTION

关键修改说明

  • 函数声明改为HayGanador$(),明确返回字符串类型,直接解决语法报错
  • 将原赋值的-1替换为Tablero中对应的玩家标记,直接返回获胜者的字符串
  • 无获胜情况时返回空字符串(或自定义提示字符串),符合字符串返回类型要求

内容的提问来源于stack exchange,提问作者JUAN CAMILO MARIN LOPEZ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 03:28:21