示例工程【免费下载链接】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点击查看免费下载本文以 00_Alternate_Languages/45_Hello/README.md 为核心文档围绕经典《Basic Computer Games》合集中 Hello 游戏的非主流语言移植展开先阐明 Alternate Languages 目录的定位与遴选标准再逐一解析 ANSI C、C、Go、MiniScript、Swift 五份移植实现的流程结构与关键代码最后给出各端口的运行方式和新增移植的贡献指引。读完本文你将理解该项目10 大语言 任意附加语言的组织策略并能对照原始 BASIC 程序读懂任意一种端口的移植逻辑。一、文档背景Alternate Languages 目录是什么Hello 游戏所在的 00_Alternate_Languages 目录存放的是各游戏在非约定 10 大语言下的实现。按 00_Alternate_Languages/README.md 的说明主仓库约定的 10 种语言需要同时满足三项标准流行Popular以 TIOBE 指数衡量内存安全Memory safe通常被视为脚本语言Generally considered a scripting language。而 Alternate Languages 目录中的实现不受这三项标准约束——因此这里允许出现 C、Pascal 这类非脚本语言本游戏的 hello.c 就是典型例子。目录还给出了两条移植规范忠实还原原貌尽量保持与原版一致的控制台应用观感console applications保持可移植性除非无法做到否则尽量保持代码可移植并在 README 和文件夹命名中明确说明任何平台限制。需要特别强调的是这些附加移植仅供教育目的for educational purposes only不计入项目最终的目标移植数量。这也是 00_Alternate_Languages/45_Hello/README.md 要求读者参考父目录 README的原因——单看子目录文档只有一段说明其完整的组织规则都定义在父目录中。二、游戏本体Hello 的原始 BASIC 程序结构Hello 是一个趣味交互程序心理咨询师模拟原始实现位于 00_Alternate_Languages/45_Hello/hello.bas。它虽然以Hello命名但核心逻辑是一条完整的对话状态机主要分为五个阶段阶段BASIC 行号行为标题输出2–6用TAB定位居中打印 HELLO 与 CREATIVE COMPUTING MORRISTOWN, NEW JERSEY询问姓名10–20自我介绍后INPUT WHATS YOUR NAME;N$读取用户姓名询问心情30–85问是否玩得开心非 YES/NO 会循环追问四类咨询125–250按 SEX / HEALTH / MONEY / JOB 四类分发不同回复并支持继续提问收费结尾300–390索要 5 美元咨询费校验是否付款后告别程序的关键设计是三类输入校验循环第 40–65 行的 YES/NO 校验、第 125–140 行的四分类校验C$SEX等分支否则输出IS GREEK TO ME并跳转到 250、以及第 210–217 行的 TOO MUCH/TOO LITTLE 子问题校验。移植时这些循环是忠实度检验的试金石。三、ANSI C 移植经典结构化复刻00_Alternate_Languages/45_Hello/ANSI_C/hello.c 是与 BASIC 结构一一对应的 C 实现它用三个辅助函数清晰表达了移植思路tab(int)循环putchar( )复刻 BASIC 的TAB(33)/TAB(15)居中效果get_input(char*)用fgets读取并用strcspn剔除行尾换行对应 BASIC 的INPUTstrings_match基于strncasecmp做大小写不敏感比较把strings_match(reply, YES)直接映射到 BASIC 的IF B$YES。主函数以done、paid、maybe_more、sure四个状态变量驱动while (!strings_match(reply, YES) !strings_match(reply, NO))正是 BASIC 第 40 行校验循环的翻译。值得注意的是仓库根目录下的 hello.c 与之几乎一致唯一实质差异是strings_match使用strncmp大小写敏感——同一游戏存在两份 C 实现可对照观察移植者对输入容错的取舍。四、Go 移植类型化状态机的现代改写00_Alternate_Languages/45_Hello/go/main.go 是五份移植中结构化程度最高的一份它不再逐行镜像 BASIC而是用现代语言特性重构用type PROBLEM_TYPE int8与iota定义SEX/HEALTH/MONEY/JOB/UKNOWN枚举替代 BASIC 中 130–136 行的四次IF C$...串行比较promptForProblems内用switch strings.ToUpper(scanner.Text())做分类分发default分支返回UKNOWN对应 BASIC 第 138 行的 IS GREEK TO ME每个咨询分支solveSexProblem、solveHealthProblem、solveMoneyProblem、solveJobProblem被拆成独立函数askQuestionLoop承担外层ANY MORE PROBLEMS循环收费阶段用time.Sleep(4 * time.Second)模拟原版 BASIC 第 307 行的空转延时循环FOR I1 TO 2000: NEXT I。这份实现展示了从行号 GOTO 结构到函数 枚举 循环的迁移路径是学习移植方法论的最佳范本。五、MiniScript 移植最贴近原版的脚本化直译MiniScript/hello.ms 采用字符串拼接式直译ns input(Whats your name? )与 BASIC 的INPUT一一对应print *33 Hello用字符串乘法替代TAB。其输入处理值得注意bs input.lower直接在读取时统一转小写随后与yes/no比较等效于 ANSI C 版的大小写不敏感策略。该目录还附有 MiniScript/README.md明确给出了两种运行方式命令行版 MiniScript从 miniscript.org/cmdline 下载安装后执行miniscript hello.msMini Micro 环境下载 Mini Micro挂载该目录为磁盘文件夹在命令行输入load hello后run。这是五份移植中唯一附带运行文档的端口体现了保持可移植性并明确说明限制的目录规范。六、Swift 移植默认值兜底与函数式输出Swift/hello.swift 的移植亮点在于健壮性处理var name STRANGER为姓名提供默认值读取输入后判断if (input ! nil input ! )才覆盖默认名对应 BASIC 中未显式处理的空输入边界情况。tab用字符串拼接spaces 配合print(spaces, terminator:)实现不换行的空格输出get_Input()对readLine()的 nil 结果返回空串并统一uppercased()与 ANSI C 的大小写不敏感策略一致。七、五份移植的实现对照端口文件输入比较策略结构风格状态控制ANSI CANSI_C/hello.cstrncasecmp大小写不敏感函数辅助 循环4 个布尔标志C根目录hello.cstrncmp大小写敏感函数辅助 循环4 个布尔标志Gogo/main.gostrings.ToUpper后比较枚举 独立求解函数函数返回 / 循环MiniScriptMiniScript/hello.msinput.lower统一小写直译脚本while truebreakSwiftSwift/hello.swiftuppercased()统一大写函数辅助 循环4 个布尔标志从源码结构看一个共同的移植模式是把 BASIC 的 GOTO 跳转如IF B$YES THEN 70转换为循环内的break/状态位把行号标签如 145/160/180/200转换为独立函数或分支。这正是把 1970 年代 BASIC 结构迁移到现代语言的通用方法论。八、如何贡献新的移植依据两份 README 的约定向 Alternate Languages 目录新增端口需要遵守以下规则任何语言均可不限于约定的 10 种语言C、Pascal、MiniScript 等非内存安全或非脚本语言同样欢迎忠实原貌保持控制台应用观感与原文案原文案本身是复古风格的一部分声明平台限制代码若依赖特定平台必须在 README 与文件夹命名中明确说明教育用途定位附加端口仅供学习不计入项目移植数量目标也不参与项目末尾的捐赠统计。建议新移植以 00_Alternate_Languages/45_Hello/hello.bas 为唯一行为基准先保证姓名输入、YES/NO 校验、四分类咨询、收费结尾五个阶段完整再参考 go/main.go 的函数化拆分思路组织代码结构。九、总结Hello 游戏的五份附加语言移植是理解《Basic Computer Games》项目多语言移植方法论的绝佳入口它体量小但状态机完整从直译MiniScript到重构Go展示了不同抽象层次的移植风格而 00_Alternate_Languages/README.md 则从项目层面定义了10 大语言三标准 附加端口教育用途的组织策略。无论你想学习如何忠实复刻复古终端交互还是想研究 GOTO 结构如何映射到现代控制流这份 8KB 的 BASIC 程序及其五个端口都值得精读。赞分享示例工程【免费下载链接】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 之 Animal备用语言移植Go / MiniScript实现与原理解析Basic Computer Games 之 Animal备用语言移植Go / MiniScript实现与原理解析 导读 00_Alternate_Lan示例工程EdgeLM/fairseq 示例实战基于往返翻译与混合专家模型的文本改写ParaphrasingEdgeLM/fairseq 示例实战基于往返翻译与混合专家模型的文本改写Paraphrasing 本文围绕 fairseq 生态中的 paraphras示例工程Basic Computer Games 备选语言移植指南Batnum 的 Go 与 MiniScript 实现深入解析Basic Computer Games 备选语言移植指南Batnum 的 Go 与 MiniScript 实现深入解析 BATNUMBattle of N示例工程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
TensorFlow图像分类实战:从零搭建小型CNN模型(垃圾分类案例) 简介:这套资料以垃圾分类为切入点,面向入门神经网络与OpenCV图像处理的开发者,适合用来快速搭建一个可用的图像分类演示项目,也可作为课程设计或算法入门实践的参考。压缩包共1046个文件,其中以1041张jpg垃圾分类图片为… · 2026/9/23 16:38:19
3个坑解决g2318报错,高频面试题避坑指南 3个坑解决g2318报错,高频面试题避坑指南 复制来的代码跑不通,报错信息一堆 g2318 ,改半天没思路,是不是觉得特别头疼?这种“玄学”错误在Python开发中太常见了,尤其是处理异步任务或第三方库升级时。很多 高频面试题… · 2026/9/23 16:38:13
日照临街户型怎么选家具?隔音、耐磨、耐脏家居搭配方案 一、日照临街户型独有的居家软装痛点日照多数临街楼栋、沿街小区,虽然采光好、视野开阔,但常年面临灰尘大、路面噪音多、家具损耗快的问题。临街户型日常开窗通风,灰尘、扬尘、尾气颗粒物容易进入室内,普通家具极易积灰、变脏、磨… · 2026/9/23 16:38:07
姿态轨道耦合控制中的EKF:从四元数建模到Matlab工程实现 简介:面向航天器姿态稳定与轨道精确跟踪问题,这份基于EKF(扩展卡尔曼滤波)的姿态-轨道耦合控制系统Matlab实现资源,适用于航天器动力学与控制相关的高年级本科生、研究生开展课程项目、专题研究或毕业设计。资源共89个… · 2026/9/23 17:17:50
程序员规范避坑指南:搞懂ESLint底层逻辑 程序员规范避坑指南:搞懂ESLint底层逻辑 面试被问“为什么团队要强制用Prettier和ESLint?”时,很多人只能答出“为了代码好看”。如果追问到底层实现,比如AST树怎么生成、规则引擎怎么匹配,立马卡壳。这就是典型的原理盲区。今天… · 2026/9/23 17:17:43
材料扭转性能测试装置设计与闭环实现 简介:本资源是一份面向机械工程专业本科生及材料力学测试方向初学者的毕业设计论文,聚焦于材料扭转力学性能测试装置的系统化设计与实现。针对国内传动轴检测设备精度低、自动化不足等现实短板,论文完整覆盖从研究背景分析、国内外技术对比、… · 2026/9/23 17:17:43
风车简笔画背后的Python绘图逻辑,面试必问的底层思维 风车简笔画背后的Python绘图逻辑,面试必问的底层思维 刚学完 import 和 print ,盯着屏幕发呆,觉得代码只是打印“Hello World”的玩具。这种“学会语法却不知怎么搭项目”的无力感,是绝大多数初级开发者的通病。… · 2026/9/23 17:17:37
DeepSeek本地部署与API调用实战:从模型选型到避坑指南 简介:这份PDF由清华大学新闻与传播学院新媒体研究中心整理,以DeepSeek-R1开源推理模型为主线,系统展示智能对话、文本生成、代码补全、知识推理、联网搜索与文件读取等能力,并专门对比了推理模型与非推理模型在快慢思考、创造力、… · 2026/9/23 17:17:31
小图片压缩避坑指南:3个坑让加载速度翻倍的实战经验 小图片压缩避坑指南:3个坑让加载速度翻倍的实战经验 刚接手新项目时,官网首屏加载要等5秒,用户流失率高达40%。查了半天发现是图片太大,官方文档里关于图片优化的章节太厚,抓不住重点。这份避坑指南把踩过的坑全写出来,3分钟就能上手改。… · 2026/9/23 17:17:11
3招搞定手机怎么下载微信面试难题实战项目解析 3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29