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
相关产品推荐
相关产品推荐

