JMeter性能测试实战:从环境配置到结果分析的完整避坑指南
2026/6/17 15:56:59
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 混乱的清晰程序。您补全的细节(轮次记录、历史最高分、难度选择、输入纯校验)让这个游戏实例具有了完整的工程健壮性,可以直接作为老旧代码九章改造的教学范例。