Basic Computer Games 项目解析:用 MiniScript 与 Mini Micro 运行经典独立钻石棋 High IQ
示例工程【免费下载链接】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点击查看免费下载High IQ独立钻石棋是 1978 年经典《Basic Computer Games》合集中的一局逻辑游戏本仓库在00_Alternate_Languages/48_High_IQ/MiniScript/目录下提供了完整的 MiniScript 移植版。本文将围绕 MiniScript 运行说明 展开完整讲解两种官方推荐的运行方式命令行 MiniScript 与 Mini Micro 图形环境并深入到 highiq.ms 的源码剖析棋盘建模、走子合法性判定、终局判定等核心实现最后对照原始 BASIC 版本 说明移植思路。读完本文你既能立刻跑起这局游戏也能理解其数据结构与算法设计可据此复刻到任意语言。游戏背景High IQ 是什么根据 48_High_IQ/README.md 的项目说明High IQ 是一款经典欧洲单人跳棋European solitaire的计算机化版本游戏使用一个十字形cross-shaped棋盘除中心孔外每个孔都插有钉子peg共 32 枚。玩家通过跳子将钉子跳入空孔被跳过的钉子被移除目标是移除全部 32 枚钉子——若无法全部移除则尽可能多移。游戏存在多种可获胜的策略且每种策略在棋盘上可沿八个方向施展。该游戏由 Charles Lund 在荷兰海牙的美国学校The American School in The Hague期间编写最初收录于 1978 年版《Basic Computer Games》。其 BASIC 源码由 Vintage Basic 归档收录本仓库在 48_High_IQ/highiq.bas 保留了原始实现。在仓库结构上00_Alternate_Languages/目录见 00_Alternate_Languages/README.md存放的是不属于约定 10 种主语言、但被社区欢迎的备选语言移植版MiniScript 移植即归此类主要供教育学习用途。该目录下每个游戏子目录都遵循游戏名/MiniScript/README.md *.ms的组织方式High IQ 对应 MiniScript 目录其中包含两个文件README.md移植说明与运行指南即本文主体文档highiq.ms完整可运行的 MiniScript 源码约 160 行。运行方式一命令行 MiniScript关联文档给出的第一种运行方式是使用 MiniScript 的命令行解释器Command-Line MiniScript。完整步骤如下前往 MiniScript 官方命令行版本下载页获取适配你操作系统的安装包按官方说明完成安装确保miniscript命令可用在终端中进入本仓库的00_Alternate_Languages/48_High_IQ/MiniScript/目录或用绝对路径指定文件执行miniscript highiq.ms程序随即启动先打印标题与带钉子编号的初始棋盘图提示玩家记下编号后按回车开始之后进入输入走子编号 → 显示更新棋盘 → 判定终局的循环。运行方式二Mini Micro 图形环境第二种方式是在 Mini MicroMiniScript 官方内置的虚拟计算机/图形环境中运行适合希望在图形化文件系统与终端中操作的用户下载并启动 Mini Micro点击顶部磁盘槽位top disk slot选择Mount Folder...挂载文件夹在弹出的对话框中选择包含highiq.ms与README.md的 MiniScript 文件夹即本仓库的00_Alternate_Languages/48_High_IQ/MiniScript/完成挂载在 Mini Micro 的命令行提示符下依次输入load highiq runload会从挂载的文件夹载入highiq.ms程序run则启动它。Mini Micro 方式的好处是不需要单独安装命令行解释器并且加载后可以方便地查看、编辑脚本源码。源码剖析一十字棋盘的建模理解了两种运行方式后再深入 highiq.ms 看棋盘是如何在内存中表达的。setupBoard函数highiq.ms构建了一个 9×9 的二维数组t作为棋盘使用三种数值标记格子状态5该格有钉子pin0该格是空孔hole-5该格无效棋盘外的区域不参与游戏。globals.t [[-5]*10] pinNums [13,14,15,22,23,24,29,30,31,32,33,34,35,38,39,40,41, 42,43,44,47,48,49,50,51,52,53,58,59,60,67,68,69] for row in range(1,9) t.push [-5]*10 for col in range(1,9) if row 2 or row 8 or col 2 or col 8 or ((row 4 or row 6) and (col 4 or col 6)) then t[row][col] -5 else t[row][col] 5 pinToPos[pinNums.pull] [row,col] end if end for end for t[5][5] 0坐标系中(row 2 or row 8 or col 2 or col 8)抠出 7×7 的方形区域而((row 4 or row 6) and (col 4 or col 6))再抠掉四角恰好形成十字形状随后t[5][5] 0将正中心置为空孔——这正是32 枚钉子 中心空位的经典开局。同时函数用globals.pinToPos字典建立了钉子编号 → [行, 列]的映射33 个有效位置按上、中、下三段的顺序依次分配编号 1369编号模式与原始 BASIC 版完全一致见下节。这套二维数组 编号映射的双重结构是后续所有走子与判定逻辑的基础。源码剖析二走子合法性判定游戏规则要求跳过相邻钉子跳入空孔isValidJumphighiq.ms用非常直观的方式实现了该判定isValidJump function(pinFrom, pinTo) if not pinToPos.hasIndex(pinFrom) then return false posFrom pinToPos[pinFrom] if not isHole(pinTo) then return false posTo pinToPos[pinTo] // check that the Manhattan distance is exactly 2 dist abs(posFrom[0] - posTo[0]) abs(posFrom[1] - posTo[1]) if dist ! 2 then return false // and check that the intervening position contains a pin if t[(posFrom[0]posTo[0])/2][(posFrom[1]posTo[1])/2] ! 5 then return false return true end function判定分三步起点必须是真实存在的钉子isPin见 highiq.ms终点必须是空孔isHole见 highiq.ms起终点的曼哈顿距离必须恰好为 2即水平或垂直相隔一格且二者正中间的那格必须包含一枚钉子。三步全过才算合法跳子。getMovehighiq.ms把该判定封装进一个while true输入循环先询问 Move which piece?若起点是钉子再询问 To where?只有同时通过isHole与isValidJump检查才跳出循环否则打印Illegal move, try again...并重新输入——这保证了非法输入绝不会污染棋盘状态。执行走子则落在doOneMovehighiq.ms将起点格置 0钉子离开、终点格置 5钉子落入、中间格置 0被跳过的钉子移除三次数组写入完成一次完整的跳子。源码剖析三终局判定与计分checkGameOverhighiq.ms遍历棋盘上每一枚钉子检查其上下左右两格远处[row-2, row2]、[col-2, col2]是否存在合法跳点只要找到任意一个合法跳子就立即返回false游戏未结束全部遍历完仍无合法跳子才返回true。主循环highiq.ms则串联起整局流程while true setupBoard printBoard while true doOneMove print printBoard if checkGameOver then break end while print; print The game is over. pinsLeft 0 ... print You had pinsLeft pieces remaining. if pinsLeft 1 then print Bravo! You made a perfect score! print Save this paper as a record of your accomplishment! end if yn input(Play again (yes or no)? ).lower if yn and yn[0] n then break end while print; print So long for now.; print终局后程序统计剩余钉子数遍历数组计数5若恰好剩 1 枚则打印满分祝贺语随后询问 Play again (yes or no)?输入以n开头大小写不敏感.lower统一转小写即退出否则重置棋盘开始新一局。棋盘渲染由printBoardhighiq.ms完成无效格输出两个空格、空孔输出o、钉子输出!与原始 BASIC 版的字符风格保持一致。与原始 BASIC 版的对应关系对照 highiq.bas 可以看出 MiniScript 移植保留了原版的数据结构与流程骨架只是用现代语言特性重写职责BASIC 原版highiq.basMiniScript 移植highiq.ms棋盘建模DIM T(9,9)5/-5/0三态标记L4、L28-L659×9 数组t同三态标记setupBoard钉子编号DATA语句声明 33 个编号 B(M)-7映射L36-L41pinNums列表 pinToPos字典走子合法性借助B()数组与算术判断L100-L190isPin/isHole/isValidJump函数打印棋盘GOSUB 500L56-L72TAB(Y*2)排版printBoard函数更新棋盘GOSUB 1000L73-L98doOneMove函数终局判定GOSUB 1500L99-L133checkGameOver函数值得注意的是BASIC 版的编号体系13、14、15 / 22、23、24 / 2935 / 3844 / 4753 / 58、59、60 / 67、68、69被 MiniScript 版原样继承这意味着两版的走子输入方式与玩家操作体验完全一致也便于对照调试。此外BASIC 版的中心编号为 41B(41)-3即初始空孔与 MiniScript 版t[5][5]0语义等价。运行与验证要点预期输出程序启动后依次打印标题 H-I-Q、Creative Computing 版权行、带编号的完整棋盘图以及压缩版棋盘使用提示游戏过程与结束时的提示语均可在源码print语句中核对如Illegal move, try again...、The game is over.、You had N pieces remaining.、Bravo! You made a perfect score!。两种运行方式的选择仅需终端执行脚本用命令行 MiniScript希望在可视化虚拟磁盘中浏览文件、编辑源码则用 Mini Micro 的 Mount Folder... 挂载方式。二者加载的都是同一个highiq.ms行为一致。适用前提命令行方式要求系统已安装 MiniScript 命令行解释器Mini Micro 方式要求已安装 Mini Micro。本仓库只提供.ms脚本与说明文档不包含解释器本身首次运行前需先完成对应环境的安装与挂载配置。通过本文你既掌握了在两种环境下运行 High IQ MiniScript 移植版的具体操作也理解了其9×9 三态棋盘 编号映射 曼哈顿距离判定的实现范式——这套模式在00_Alternate_Languages目录下其他 MiniScript 移植如 Craps、Diamond 等中同样适用可作为学习 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点击查看免费下载相关推荐shopspring/decimal 深入解析Loki 依赖链中防止浮点精度丢失的任意精度十进制库shopspring/decimal 深入解析Loki 依赖链中防止浮点精度丢失的任意精度十进制库 导读 本文以 Loki 仓库中 vendored 的 sh示例工程用 MiniScript 运行经典纸牌游戏 War从安装、运行到源码解析basic-computer-games用 MiniScript 运行经典纸牌游戏 War从安装、运行到源码解析basic computer games 本文以 basic computer g示例工程basic-computer-games 仓库实战用 MiniScript 运行经典《Math Dice》骰子算术教学游戏basic computer games 仓库实战用 MiniScript 运行经典《Math Dice》骰子算术教学游戏 导读 本文以 basic comp示例工程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

FastNetMon 为何选用 FerretDB 构建 SaaS:从 MongoDB 到开源替代的迁移决策实录

FastNetMon 为何选用 FerretDB 构建 SaaS:从 MongoDB 到开源替代的迁移决策实录

后端数据库文档数据库 【免费下载链接】FerretDB A truly Open Source MongoDB alternative 项目地址: https://gitcode.com/gh_mirrors/fe/FerretDB 点击查看 免费下载 本文以 FastNetMon(电信网络 DDoS 检测厂商)在 2023 年 11 月发布的客…

2026/9/23 20:00:12 阅读更多 →
六级预测作文保姆级教程:3种备考方案深度对比与实战代码解析

六级预测作文保姆级教程:3种备考方案深度对比与实战代码解析

六级预测作文保姆级教程:3种备考方案深度对比与实战代码解析 报错一堆看不懂 StackTrace?别慌。面对六级预测作文这种“玄学”题型,很多人陷入死循环:背模板背到吐,写出来还是像机器生成的。这篇保姆级教程,不灌鸡汤,直接拆解三种主流备考…

2026/9/23 20:00:12 阅读更多 →
JDK 22 Windows ZIP 包落地避坑指南

JDK 22 Windows ZIP 包落地避坑指南

简介:本资源为Oracle官方发布的JDK 22 Windows 64位标准安装包(jdk-22_windows-x64_bin.zip),面向Java初学者、高校教学环境及企业开发人员,解决Java开发环境快速搭建与版本统一管理问题。压缩包共417个文件&#xff0…

2026/9/23 20:00:12 阅读更多 →

最新新闻

在 EOSIO 中使用 `cleos wallet import` 导入密钥对:完整操作指南与源码原理剖析

在 EOSIO 中使用 `cleos wallet import` 导入密钥对:完整操作指南与源码原理剖析

区块链 【免费下载链接】eos An open source smart contract platform 项目地址: https://gitcode.com/gh_mirrors/eo/eos 点击查看 免费下载 本篇指南聚焦 EOSIO 智能合约平台(当前仓库 eo/eos)中最常用的密钥管理操作——使用 cleos wall…

2026/9/23 21:28:23 阅读更多 →
GAN行人重识别:用特征空间对齐提升跨摄像头匹配精度

GAN行人重识别:用特征空间对齐提升跨摄像头匹配精度

简介:本资源是一套完整的基于生成对抗网络(GAN)的行人重识别毕业设计实现方案,面向深度学习初学者与计算机视觉方向本科生,聚焦跨摄像头场景下的身份匹配问题,适用于课程设计、毕设开发与算法复现学习。压缩…

2026/9/23 21:28:23 阅读更多 →
Akka Streams StreamConverters.asJavaStream 详解:将 Akka Sink 物化为 Java 8 Stream 的桥接之道

Akka Streams StreamConverters.asJavaStream 详解:将 Akka Sink 物化为 Java 8 Stream 的桥接之道

后端并发编程异步编程 【免费下载链接】akka-core A platform to build and run apps that are elastic, agile, and resilient. SDK, libraries, and hosted environments. 项目地址: https://gitcode.com/gh_mirrors/ak/akka-core 点击查看 免费下载 Akka Stream…

2026/9/23 21:28:23 阅读更多 →
【有源码】基于Hadoop+Spark的红白葡萄酒品质数据可视化分析平台-基于机器学习与数据挖掘的葡萄酒品质分析与可视化系统

【有源码】基于Hadoop+Spark的红白葡萄酒品质数据可视化分析平台-基于机器学习与数据挖掘的葡萄酒品质分析与可视化系统

注意:该项目只展示部分功能,如需了解,文末咨询即可。 本文目录1 开发环境2 系统设计3 系统展示3.1 大屏页面3.2 分析页面3.3 基础页面4 更多推荐5 部分功能代码1 开发环境 发语言:python 采用技术:Spark、Hadoop、Dja…

2026/9/23 21:28:23 阅读更多 →
基于Python的人脸识别系统毕设源码详解:从环境搭建到算法调优

基于Python的人脸识别系统毕设源码详解:从环境搭建到算法调优

简介:面向本科毕业设计及课程设计场景的人脸识别系统项目,基于Python实现,提供完整可运行的源码、毕业论文文档及配套说明。代码内含详细注释,结构清晰,新手也能快速理解关键逻辑;作者自述为98分高分项目&a…

2026/9/23 21:28:23 阅读更多 →
okbiye AI答辩PPT:功能与作用全解析

okbiye AI答辩PPT:功能与作用全解析

答辩是毕设的最后一道关,很多同学论文写得很好,却栽在了答辩PPT上:答辩前才开始做PPT,一页一页做了一周还是做不好,内容不知道怎么提炼,排版不专业,配色辣眼睛;讲稿写不好&#xff0…

2026/9/23 21:27:23 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →