一个用QBASIC写就的21点游戏,能够下赌注与AI(美其名曰)玩,字符界面的人机交互。
DECLARE SUB yingying (y!, c!, d!) DECLARE SUB shushu (y!, c!, d!) DECLARE SUB ying (y!, c!, d!) DECLARE SUB shu (y!, c!, d!) DECLARE SUB prinqian (y!, c!) DECLARE SUB prindian (dian!) DEF fnzhi (qq) IF qq <= 10 THEN zhi = qq ELSE zhi = 10 END IF fnzhi = zhi END DEF CLS you = 100: computer = 100 DO WHILE NOT you < 0 AND NOT computer < 0 a = 0: b = 0 DO CALL prinqian(you, computer) input "input the number of money:"; duzhu LOOP UNTIL duzhu <= 20 AND duzhu >= 5 AND FIX(duzhu) = duzhu nd = 1 FOR n = 1 TO 2 RANDOMIZE TIMER aa = INT(RND * 13 + 1) bb = INT(RND * 13 + 1) a = a + fnzhi(aa) b = b + fnzhi(bb) NEXT n '*****b***** DO WHILE b <= 16 b = b + fnzhi(INT(RND * 13 + 1)) LOOP '*****b***** flag = 1 DO WHILE flag = 1 AND a < 22 CALL prindian(a) DO IF nd = 1 THEN input "input the number of money again."; duzhu2 END IF nd = 0 LOOP UNTIL duzhu2 <= 20 AND FIX(duzhu2) = duzhu2 AND duzhu2 >= 0 duzhu = duzhu + duzhu2 duzhu2 = 0 a: input "1 or 0:"; flag IF flag = 0 THEN EXIT DO ELSEIF flag = 1 THEN aa = INT(RND * 13 + 1) a = a + fnzhi(aa) ELSE GOTO a END IF LOOP PRINT a, b IF a > b AND a <= 21 OR b > 21 AND a <= 21 THEN PRINT "You win." IF a = 21 THEN CALL yingying(you, computer, duzhu) ELSE CALL ying(you, computer, duzhu) END IF ELSE PRINT "You fail." IF b = 21 THEN CALL shushu(you, computer, duzhu) ELSE CALL shu(you, computer, duzhu) END IF END IF you = you - 2 LOOP IF you < 0 THEN PRINT "Try again." ELSE PRINT "You are the winner." END IF END SUB prindian (dian) PRINT "dian:"; dian END SUB SUB prinqian (y, c) PRINT "You:"; y, "Computer:"; c END SUB SUB shu (y, c, d) y = y - d c = c + d END SUB SUB shushu (y, c, d) c = c + 2 * d y = y - 2 * d END SUB SUB ying (y, c, d) y = y + d c = c - d END SUB SUB yingying (y, c, d) c = c - 2 * d y = y + 2 * d END SUB
这段代码写于03年,彼时为了中考加分而准备计算机二级考试,考试内容是QBASIC。而我学了点东西,应付考试不在行,总爱瞎鼓捣,这算是当时的“得意之作”。彼时不知面向对象为何物,只知顺序,分支,循环;只知冒泡排序,朴素的选择排序,而不知有快速排序。
以我自己今天的眼光来看这段代码,亦非全然一塌糊涂——比如把常用的功能写成子程序,函数,甚至还检查了用户输入的合法性。不足之处在于,整个程序结构欠清晰,毫无可扩展性可言。
QBASIC带给我的快乐与成就感萦绕心间,虽历3年高中生活,未尝尽忘,后来填志愿时便计算机了。
3179

被折叠的 条评论
为什么被折叠?



