九章编程法 · 猜数字游戏 (GW-BASIC 重构版) *

复制代码
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 混乱的清晰程序。您补全的细节(轮次记录、历史最高分、难度选择、输入纯校验)让这个游戏实例具有了完整的工程健壮性,可以直接作为老旧代码九章改造的教学范例。

相关推荐
邵宇然1 小时前
跨沙箱动态传递:WASM 与宿主环境间变长文本数据的零拷贝读取
人工智能
小小小花儿1 小时前
如何使用Codex进行Vibe Coding
人工智能
信也科技布道师1 小时前
Agent Skills + Vibe Testing:构建人机协作的测试闭环
人工智能·agent skills
朱大喜1 小时前
BI 平台搭建:从数仓到自助分析的实战路径
人工智能
一切皆是因缘际会1 小时前
LLM轻量化联邦微调机理
数据结构·人工智能·数学建模·ai
Lkstar1 小时前
万字长文Query改写与多路召回实战|从HyDE到RRF融合,召回率提升22%的完整方案
数据库·人工智能·llm
星辰AI打工人2 小时前
Agent-Reach 源码级解析:一个 30-200 行的插件系统凭什么治理 14 个平台
人工智能
张彦峰ZYF2 小时前
从嵌入、表征到潜空间:理解大模型向量世界的三种视角
人工智能·大模型·向量空间