用 Java 复刻了高中时在塞班上玩的「熔岩矿车」:纯 Swing、零依赖、没有一张图片,一个 jar 双击就能玩

钻得越深,矿越值钱 ------ 记得留够油回家。

⚠️ 先说清楚:这是一个 Java 程序,电脑上要先装 Java(8 或以上版本)才能玩。 怎么检查、怎么装,第三节一步步写了。

一、那台小小的矿车

不知道还有没有人记得「熔岩矿车」。

那是塞班还在的年代。手机屏幕只有巴掌大,按键是实体的,玩游戏全靠方向键和中间那颗确认键。课间十分钟、晚自习下课前那一小会儿,把手机藏在桌肚里,开着一台小矿车往地底下钻 ------ 那是我高中时最上头的游戏之一。

规则简单到一句话就能说完:往下挖矿,回地面卖钱,升级车子,再挖得更深。

可它偏偏有一个让人又爱又恨的设定:油。

越往下矿越值钱,可回去的路也越长。你看着货舱里那颗刚挖出来的红宝石,再看看见底的油表,心里开始算:再挖一块,还回得去吗?

很多次答案是回不去。矿车在半路"砰"一声炸掉,一整趟的货全没了。然后你骂一句,重新加满油,又一头扎下去。

后来塞班没了,那台手机不知道丢在了哪儿,那个游戏也再没找到过。

十几年后,我用 Java 把它重新做了出来。

二、它现在长这样

还是那个熟悉的循环:地面上有四家店 ------ 加油站、矿石收购站、改装厂、道具店。加满油,找块空地往下钻。

浅层是煤炭、铁矿、铜矿,值个十几几十块;往下是金矿、翡翠、红宝石、钻石;再往下,是欧泊、陨铁、星核。一共 27 种矿石,每一种都有自己的样子 ------ 有的会闪光,有的会冒烟,有的带着电弧。

地底最深处,一千多米的地方,藏着 6 颗「熔岩之心」,一颗卖 30000。全部挖出来卖掉,就通关。

路上还埋着 4 种宝藏:古钱罐、恐龙骨架、远古神像,还有一种......挖到你就知道了。

赚来的钱拿去改装厂,7 种部件,每种 7 档,从"出厂"一路升到"传说":

当年那种"再挖一块就回去"的纠结,我也原样留下来了,还多加了几道坎:

  • 熔岩:钻进去会烧伤,越深越疼
  • 瓦斯:长得和普通泥土一模一样,偶尔冒个小气泡,一挖就炸
  • 地热:150 米以下越深越热,越热越费油
  • 地震落石:300 米以下,头顶开始掉灰,就是碎石要下来了

燃油条上有一根白线,那是"飞回地面大约要的油"。油快掉到白线时,屏幕会闪红、报警 ------ 这是我给当年那个一次次炸在半路上的自己,补上的一点温柔。

但规矩没变:油烧光或者车身打坏,车就会爆炸。一整舱的货全丢,还要交 25% 的救援费。满了就是满了,炸了就是炸了 ------ 没有这份心疼,就不是那个游戏了。

三、怎么玩起来

⚠️ 运行环境:必须先装 Java(8 或以上版本)。 游戏本身就是一个 jar 文件,电脑上没有 Java 的话,它打不开。

第 1 步:检查电脑上有没有 Java

Windows 按 Win + R,输入 cmd 回车,在黑窗口里输入:

bash 复制代码
java -version
  • 能看到 java version "1.8.0_xxx"、openjdk version "17.x" 这类版本号 → 已经装好了,直接跳到第 3 步
  • 提示「'java' 不是内部或外部命令」→ 没装,看第 2 步

第 2 步:安装 Java(已经装了就跳过)

去 Adoptium 下载 Temurin,版本选 17 或 21 都行(8 也能跑),Windows 下载 .msi 安装包,一路下一步装完。装完重新开一个 cmd 窗口,再输一次 java -version,能看到版本号就成功了。

macOS 也是在 Adoptium 下载 .pkg 安装;Linux 用系统的包管理器装 OpenJDK 就行。

第 3 步:下载游戏

https://github.com/xiaoqiMikko/games/releases/download/v1.0/LavaDigger.jar

第 4 步:运行

在 jar 所在的文件夹打开命令行,输入:

bash 复制代码
java -jar LavaDigger.jar

Windows 上如果 .jar 已经关联了 Java,直接双击也能打开。双击没反应,或者被解压软件当成压缩包打开了,说明没关联,用上面的命令行方式启动就行。

操作按键:

按键 作用
← → (或 A D) 左右行驶
↑ (或 W) 喷气往上飞(很费油);往下掉时按住能刹车
↓ (或 S) 向下钻
贴着墙按 ← / → 横着钻
回车 (或 E) 在商店门口进店
F / R / X / T 备用油桶 / 修理包 / 炸药 / 紧急传送
Esc 暂停 / 存档 / 看说明
M / F11 静音 / 全屏

会自动存档,存在 jar 旁边的 save/lava.properties。关掉游戏,下次打开选「继续游戏」,矿车还停在你离开的地方。

四、做的时候的几个小心思

写给同样想动手做点小游戏的朋友。

1. 一张图片都没有。

整个游戏只有一个约 90KB 的 jar。矿车、四家商店、几十种矿石的贴图、土层的颜色、窗口和任务栏的图标,全部是启动时用 Java2D 一笔一笔画出来的;爆炸声、挖矿声也是用代码合成的 PCM 波形。

这么做一开始是图省事 ------ 不用找素材、不用管版权、不用操心资源路径。做到后面发现它有个意外的好处:想给矿石加个闪光、给宝藏加圈光晕,改几行代码就有了。

2. 纯 Swing,零依赖。

没有用任何游戏引擎和第三方库,只用 JDK 自带的 Swing。画面先画到一张固定 960×640 的缓冲图上,再等比缩放到窗口,所以窗口随便拉、F11 全屏都不会变形。游戏逻辑用 1/120 秒的小步长更新,高速下落时也不会穿墙。

3. 用一个"机器人玩家"来调数值。

这类游戏最难的不是写代码,是数值:升级太便宜,一小时就通关,没意思;太贵,挖到最后也凑不够钱,更没意思。

我写了一个经济模拟程序,让它按固定策略自动玩完一整局,算出通关要多少小时、全部升满要多少小时,换 8 个随机种子各跑一遍。每次改价格、改矿价、改油耗,都重跑一次。现在的节奏大概是通关 3~5 小时。

4. 存档要能"长大"。

游戏前后改了四个大版本,矿从 8 种加到 27 种,又加了宝藏。老存档不能因为更新就作废,所以存档带版本号:读到老版本存档时,自动往还没挖过的泥土里补上新矿、补上宝藏。为此定了一条死规矩 ------ 矿石的编号就是存档里的格子编码,新矿只能往后追加,不能插队。

整个项目源码 src/ 下一共 11 个文件、不到 5000 行,另外配了离屏自测:不开窗口,模拟按键把各种场景跑一遍、断言结果、把画面存成图片检查。

五、最后

写到最后一颗熔岩之心被卖掉、通关画面弹出来的那一刻,我愣了一下。

高中那会儿,我好像一直都没能通关过。

如果你也玩过塞班上的熔岩矿车,或者只是想找个能安安静静玩几个小时的小游戏,欢迎下载试试。也欢迎在评论区聊聊:你当年在塞班上玩的是哪个游戏?

源码在这里,喜欢的话点个 Star:

👉 https://github.com/xiaoqiMikko/games

钻得越深,矿越值钱。

记得留够油回家。

相关推荐
知了学历孙老师1 小时前
小自考的校考和统考,出题方和难度差在哪
java·大数据·前端
Java爱好狂.1 小时前
Java初学者如何一周速通SpringBoot!
java·spring boot·后端·spring·高并发·架构师·java面试
秋饼2 小时前
LLM API密钥动态轮换实战:Spring Vault + Spring AI + 多Provider路由
java·ai·技术分享·后端开发
福兮说4 小时前
JSON 格式正确,数据就可靠吗?我用一份自编配置检查类型与空值
java·前端·json
紧跟先前的步伐5 小时前
Go AI Agent 实战 03|Token、上下文窗口与模型调用成本
java·人工智能·golang
郝学胜_神的一滴5 小时前
游戏设计:原型与开发 06:读懂游戏设计最容易被忽略的文化层
游戏·游戏开发
const_qiu6 小时前
第四章 00:开篇 —— 从「会聊天」到「记得住、会干活、能协作」
java·开发语言·人工智能·python
Wang's Blog6 小时前
Java 项目实战: 交友项目 - 个人资料管理的更新接口实现与坑
java·开发语言·交友
Promising_GEO6 小时前
GEE实战02期:从卫星波段开始:利用 Sentinel-2 自己计算 NDVI
java·sentinel·遥感·空间分析