
示例工程【免费下载链接】basic-computer-gamesAn updated version of the classic Basic Computer Games book, with well-written examples in a variety of common MEMORY SAFE, SCRIPTING programming languages. See https://coding-horror.github.io/basic-computer-games/项目地址https://gitcode.com/gh_mirrors/ba/basic-computer-games点击查看免费下载导读Mugwump 是经典书籍《Basic Computer Games》中的第 62 个程序玩家要在 10×10 网格上找出 4 只隐藏的 Mugwump 怪兽。本篇文章以 00_Alternate_Languages/62_Mugwump/MiniScript/README.md 为核心结合仓库中的 MiniScript 移植源码 与 原始 BASIC 源码完整讲解游戏规则、移植实现思路以及如何在 Try-It! 网页、命令行 MiniScript 和 Mini Micro 三种环境中运行它。读完本文你将同时掌握该游戏的结构化移植手法与 MiniScript 程序的实际运行流程。一、项目背景Mugwump 为什么出现在 Alternate Languages 目录本仓库是经典图书《Basic Computer Games》David Ahl 著Creative Computing 出品的现代化重制项目。项目为每款游戏维护了 C#、Java、JavaScript、Kotlin、Lua、Perl、Python、Ruby、Rust、VB.NET 这 10 个“约定语言”的移植依据 TIOBE 流行度、内存安全、脚本语言三项标准详见根目录 README.md。而 Mugwump 的 MiniScript 移植位于00_Alternate_Languages目录——按 00_Alternate_Languages/README.md 的说明该目录专门收录不属于约定 10 种语言的移植例如 C、Pascal 和这里的 MiniScript。这些移植不参与 10 语言的三项标准约束仅用于教育目的同时要求“忠实于原版的控制台外观与体验”remain faithful to original look-and-feel。本目录下的 MiniScript/README.md 说明了两点关键事实原始 BASIC 源码下载自 Vintage Basicwww.vintage-basic.net/games.html该文件是到 MiniScript 语言miniscript.org的转换版本。二、游戏规则10×10 网格上的四位寻宝Mugwump 的规则在源码开头的打印语句中完整给出mugwump.ms 与 mugwump.bas 完全一致可归纳如下要素规则目标在 10×10 网格上找到 4 只 mugwump坐标系原点 Homebase 位于 (0,0)猜测输入每次猜两个数字均在 0 到 9含之间第一个数字为相对 Homebase 向右的距离第二个为向上的距离尝试次数共 10 次反馈机制每次猜测后程序报告你与每只尚未找到的mugwump 之间的直线距离胜利条件10 次内全部找到否则公布 4 只 mugwump 的最终藏身坐标这里的“距离”是欧几里得距离。BASIC 原版用DSQR((P(I,1)-M)^2(P(I,2)-N)^2)计算并输出(INT(D*10))/10即保留一位小数MiniScript 版对应实现为d sqrt((pos[0]-x)^2 (pos[1]-y)^2)并配合round(d, 1)保留一位小数。三、MiniScript 移植源码结构解析完整的移植实现只有 65 行mugwump.ms。相比原版 BASIC 中大量GOTO跳转240 GOSUB 1000、260、400、470等行号体操MiniScript 版遵循了项目“使用结构化编程、使用子程序、大量注释”的现代代码规范核心逻辑被收敛为一个playOneGame函数。3.1 数据结构字典 坐标数组mugwump {} // key: number 1-4; value: [x,y] position for i in range(1, 4) mugwump[i] [floor(10*rnd), floor(10*rnd)] end for这里用 MiniScript 字典以“编号 1~4 → 坐标 [x,y]”的方式存储 4 只怪兽与 BASIC 版的二维数组DIM P(4,2)语义对应。随机坐标由floor(10*rnd)生成保证 x、y 落在 0~9 的整数范围内与原版P(I,J)INT(10*RND(1))一致。3.2 输入解析容忍逗号与多空格inp input(Turn no. turn -- what is your guess? ) inp inp.replace(,, ).replace( , ).split if inp.len 2 then breakinput(...)带提示符读取一行replace(,, )把逗号统一成空格因此用户既可输入3,5也可输入3 5.replace( , ).split处理多余空格并按空白拆分成列表if inp.len 2 then break校验必须恰好两个数否则一直循环重新提问——这是对原版INPUT M,N的现代健壮性改进项目准则之一就是“improved error handling for bad or erroneous input”。3.3 距离反馈与命中判定for i in range(1, 4) pos mugwump[i] if pos null then continue // (already found) if pos [x,y] then print You have found mugwump i mugwump[i] null found 1 else d sqrt( (pos[0] - x)^2 (pos[1] - y)^2 ) print You are round(d, 1) units from mugwump i end if end for值得注意的实现技巧用null标记已找到命中后将mugwump[i]置为null后续循环用if pos null then continue跳过不再提示该怪兽的距离这对应 BASIC 版用P(I,1)-1标记的哨兵手法距离计算sqrt((pos[0]-x)^2 (pos[1]-y)^2)即平面两点间欧氏距离round(d, 1)对应原版INT(D*10)/10的四舍五入BASIC 版是截断MiniScript 版是舍入这是移植中的微小行为差异命中时输出“You have found mugwump i”未命中时输出“You are X.X units from mugwump i”保持原版对话风格。3.4 胜败判定与主循环if found 4 then print You got them all in turn turns! return end iffound 4时提前结束本局并报告所用回合数若 10 回合结束仍未找全则打印Sorry, thats 10 tries.并逐只公布藏身坐标跳过已找到的null项。最外层则是一个无限主循环while true playOneGame print That was fun! Lets play again....... print Four more mugwumps are now in hiding. end while对应原版630 GOTO 240的无休止重玩机制——一局结束后立刻重新随机布怪、进入下一局没有退出条件与原版行为一致属于“保持原版外观与行为”的刻意保留。四、三种运行方式README 核心操作指南MiniScript/README.md 给出了三种由易到难的运行途径。注意该 README 中的示例文件名沿用了同仓库 61_Math_Dice 移植的模板写成了mathdice.ms实际运行 Mugwump 时应全部替换为mugwump.ms仓库实际文件为 mugwump.ms。方式 0Try-It! 网页零安装浏览器打开 MiniScript 官方 Try-It! 页面https://miniscript.org/tryit/清空代码编辑器中的示例代码将 mugwump.ms 的完整内容粘贴进去点击Run Script按钮。程序输出以及交互输入会显示在代码编辑器右侧或下方的绿底黑字终端显示区中。这是最快、最适合快速体验或演示的运行方式无需安装任何软件。方式 1命令行 MiniScriptminiscript命令从https://miniscript.org/cmdline/下载对应你操作系统的命令行版本并安装在包含mugwump.ms的目录下执行miniscript mugwump.ms即可在当前终端中直接进行交互式游玩。这种方式适合脚本化运行、调试以及把移植程序当作普通命令行程序使用。方式 2Mini Micro图形化虚拟主机环境从https://miniscript.org/MiniMicro/下载并启动 Mini Micro点击顶部磁盘槽位选择Mount Folder...选中同时包含mugwump.ms与README.md的 MiniScript 目录即 00_Alternate_Languages/62_Mugwump/MiniScript 文件夹在 Mini Micro 命令提示符下依次输入load mugwump runload会从挂载的磁盘目录中加载名为mugwump.ms的脚本run启动执行。Mini Micro 提供了内置编辑器与文件系统适合边玩边改代码的学习场景。五、与原版 BASIC 的行为对照行为原版 mugwump.basMiniScript 版 mugwump.ms标题横幅PRINT TAB(33);MUGWUMP Creative Computing 版权行print *33 Mugwump 相同版权行随机布怪P(I,J)INT(10*RND(1))二维数组mugwump[i] [floor(10*rnd), floor(10*rnd)]字典列表已找到标记P(I,1)-1哨兵值置为null距离输出INT(D*10)/10截断一位小数round(d, 1)四舍五入一位小数输入处理INPUT M,NBASIC 原生解析非法输入会报错字符串replace/split解析长度校验循环重试程序结构GOTO/GOSUB行号控制流playOneGame函数 while true主循环重玩630 GOTO 240外层无限while true可以看出MiniScript 移植在输出文案、回合数、随机规则、胜负逻辑上与原版一一对应符合项目“stay true to the original program”的准则而在结构组织与输入容错上则做了符合现代编程习惯的改进恰好体现了该移植作为“教学示例”的价值。六、快速上手总结要亲自体验 Mugwump 的 MiniScript 移植最小操作路径是打开 Try-It! 页面粘贴 mugwump.ms 全文点击 Run Script 即可开始输入格式为两个 0~9 的整数可逗号或空格分隔例如3 5依据每轮反馈的欧氏距离不断收窄范围在 10 回合内找出全部 4 只 mugwump想进一步体验本地运行可按 README 安装命令行miniscript执行miniscript mugwump.ms或用 Mini Micro 的load mugwump/run组合。该 README 及其移植文件位于 00_Alternate_Languages/62_Mugwump/MiniScript/同类 MiniScript 移植在00_Alternate_Languages下每个游戏的 MiniScript 子目录中均可找到可作为学习 MiniScript 与经典游戏移植的对照参考集。赞分享示例工程【免费下载链接】basic-computer-gamesAn updated version of the classic Basic Computer Games book, with well-written examples in a variety of common MEMORY SAFE, SCRIPTING programming languages. See https://coding-horror.github.io/basic-computer-games/项目地址https://gitcode.com/gh_mirrors/ba/basic-computer-games点击查看免费下载相关推荐Basic Computer Games 之 Chemist 的 MiniScript 移植版玩法、源码解析与三种运行方式Basic Computer Games 之 Chemist 的 MiniScript 移植版玩法、源码解析与三种运行方式 导读 本文围绕经典 BASIC 游示例工程gRPC-Go 如何配置客户端透明健康检查让 RPC 自动避开不健康的后端gRPC Go 如何配置客户端透明健康检查让 RPC 自动避开不健康的后端 当你用一条 ClientConn 连接多个后端实例时某个实例挂掉或不可用会直接造示例工程basic-computer-games 之 Boxing 的 MiniScript 移植版安装运行与源码玩法解析basic computer games 之 Boxing 的 MiniScript 移植版安装运行与源码玩法解析 本篇技术指南聚焦《Basic Comput示例工程上一篇10个n8n-mcp批量操作技巧一次更新多个工作流节点的高效方法下一篇docopt在数据科学中的应用构建数据分析命令行工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考