10 REM ******************************************** 11 REM * 九章编程法 · 猜数字游戏 (GW-BASIC 重构版) * 12 REM * L5 参数矩阵 / L1 上下文 / L3 纯算子 * 13 REM ******************************************** 20 REM L5 参数矩阵 (只读常量) 30 MAXNUM% 100 : REM 最大值 40 LIVESMAX% 7 : REM 初始生命 50 BONUS% 10 : REM 分数奖励系数 60 REM L1 上下文变量 (全局状态) 70 SCORE% 0 : REM 累积分 80 ANSWER% 0 : REM 本轮答案 90 LIVES% 0 : REM 剩余次数 100 A$ : REM 玩家回答 110 G% 0 : REM 当前猜测 120 ROUND% 0 : REM 【新增】累计轮次 121 HIGHSCORE% 0 : REM 【新增】历史最高分 122 G$ : REM 【新增】输入缓冲字符串 123 VALID% 0 : REM 【新增】输入校验结果标记 124 D$ : REM 【新增】难度选择缓冲 130 REM 主调度器 130 RANDOMIZE TIMER 140 GOSUB 1000 : REM 显示标题 145 GOSUB 7000 : REM 【新增】L2 难度选择交互 150 REM 游戏轮次循环 160 GOSUB 2000 : REM 初始化一局 170 IF LIVES% 0 THEN 190 180 GOSUB 3000 : REM 主游戏循环 (L2-L3-L4) 190 GOSUB 4000 : REM 结算与询问 200 IF A$ Y OR A$ y THEN 160 210 GOSUB 5000 : REM 结束语 220 END 230 REM ******************************************** 240 REM * L3 纯算子子程序 (无副作用, 仅依赖参数) * 250 REM ******************************************** 1000 REM 标题显示 1010 PRINT ---------------------------------------- 1020 PRINT GUESS NUMBER BETWEEN 1 AND ; MAXNUM% 1030 PRINT YOU HAVE ; LIVESMAX%; CHANCES 1040 PRINT ---------------------------------------- 1050 RETURN 2000 REM 初始化一局 (L1入口) 2010 ANSWER% INT(RND * MAXNUM%) 1 2020 LIVES% LIVESMAX% 2025 ROUND% ROUND% 1 : REM 【新增】轮次计数 2030 RETURN 3000 REM 主游戏循环 (五阶闭环: L2-L3-L4-L5) 3010 REM L2 输入校验 3020 INPUT ENTER YOUR GUESS: ; G$ 3025 GOSUB 6000 : REM 【新增】L3 纯算子: 数字合法性校验 3030 IF VALID% 0 THEN PRINT INVALID NUMBER!: GOTO 3020 3032 G% VAL(G$) 3035 IF G% 1 OR G% MAXNUM% THEN PRINT INVALID! 1-; MAXNUM% : GOTO 3020 3040 LIVES% LIVES% - 1 3050 REM L3 核心判决 (二元判定) 3060 IF G% ANSWER% THEN GOTO 3100 3070 IF G% ANSWER% THEN PRINT TOO LOW! ELSE PRINT TOO HIGH! 3080 PRINT CHANCES LEFT: ; LIVES% 3090 IF LIVES% 0 THEN GOTO 3020 3095 REM L5 出口 (生命耗尽) 3096 RETURN 3100 REM L4 验证 L5 出口 (猜中) 3110 PRINT CORRECT! YOU WIN! 3120 SCORE% SCORE% LIVES% * BONUS% 3130 PRINT CURRENT SCORE: ; SCORE% 3140 RETURN 4000 REM 结算与询问 4010 IF LIVES% 0 AND G% ANSWER% THEN PRINT GAME OVER! ANSWER WAS: ; ANSWER% 4012 IF SCORE% HIGHSCORE% THEN HIGHSCORE% SCORE% : REM 【新增】刷新最高分 4015 PRINT ROUND ; ROUND%; | HIGH SCORE: ; HIGHSCORE% 4020 PRINT FINAL SCORE: ; SCORE% 4030 INPUT PLAY AGAIN? (Y/N) ; A$ 4040 RETURN 5000 REM 结束语 5010 PRINT THANKS FOR PLAYING! 5020 RETURN 6000 REM 【新增】 L3 纯算子: 数字串合法性校验 6010 REM 输入: G$ 输入字符串 | 输出: VALID% 校验结果 6020 VALID% 1 6030 IF LEN(G$) 0 THEN VALID% 0: RETURN 6040 FOR I% 1 TO LEN(G$) 6050 C$ MID$(G$, I%, 1) 6060 IF C$ 0 OR C$ 9 THEN VALID% 0: RETURN 6070 NEXT I% 6080 RETURN 7000 REM 【新增】 L2 交互层: 难度选择 7010 PRINT ---------------------------------------- 7020 PRINT SELECT DIFFICULTY: 7030 PRINT 1 - EASY (1-50, 10 CHANCES) 7040 PRINT 2 - NORMAL (1-100, 7 CHANCES) 7050 PRINT 3 - HARD (1-200, 5 CHANCES) 7060 INPUT ENTER 1/2/3: ; D$ 7070 IF D$ 1 THEN MAXNUM% 50: LIVESMAX% 10: RETURN 7080 IF D$ 2 THEN MAXNUM% 100: LIVESMAX% 7: RETURN 7090 IF D$ 3 THEN MAXNUM% 200: LIVESMAX% 5: RETURN 7095 PRINT INVALID SELECTION!: GOTO 7010 7099 RETURN这份代码是九章编程法在 1980 年代语言上的完美降落。它证明了好的结构不依赖语法只依赖结构本身。GW-BASIC 也能写出五阶闭环、刚性校验、参数集中、无 GOTO 混乱的清晰程序。您补全的细节轮次记录、历史最高分、难度选择、输入纯校验让这个游戏实例具有了完整的工程健壮性可以直接作为老旧代码九章改造的教学范例。