夜雨聆风学习资料网

ARTICLE · 997706

《阿特拉斯铁路》收入计算器 设计文档

《阿特拉斯铁路》收入计算器 设计文档
依据官方英文规则书《Railways of the Lost Atlas》整理实现。本工具为玩家辅助计算器,所有数值均可手动核对,不替代规则书裁决。小程序链接放在原文链接里,感兴趣的小伙伴可以试试,有bug或者规则错误欢迎跟我说~~~

一、功能模块划分

小程序采用四页 Tab 结构 + 共享规则引擎与本地存档模块:
miniprogram/├── app.js / app.json / app.wxss全局配置、全局样式、设置持久化├── utils/rules.js★规则引擎(纯函数,全部计算逻辑) ├── utils/store.js★ 公司存档 / 营运顺序 / 结算历史└── pages/       ├── index/「收入结算」  公司设置 → 路线录入 → 分红/留存 → 股东明细 → 股价事件      ├── companies/   「公司管理」  多公司存档、营运轮行动顺序视图、已行动翻转、结算历史      ├── merger/      「合并·清算」 合并计算、清算了结、强制购车破产判定、终局计分      └── reference/   「规则速查」 火车表、阶段股价区间、起始资金、判定口诀、自定义设置

模块

职责

对应规则

① 公司设置

公司类型(小/大)、当前股价(±1 档步进或直输)、国库现金

股份结构:小 5 股×20%,大 10 股×10%

② 路线录入

每列火车一条路线;站点价值快捷点选(10–60)或自定义;郊区 +10 开关

路线价值 = 站点价值之和,站数 ≤ 火车点数

③ 分配结算

分红 / 留存切换;自动判定股价 −1 / 不变 / +1 / +2 档

P.14 分配收入

④ 股东明细

股东行(姓名、股数 ±、是否国库自持);逐人分红额、占比、合计校验

分红按持股比例,自持股入国库

⑤ 股价快捷事件

卖股 −1 档、全售奖励 +1 档、发行 / 赎回 1 股

P.13–14 股价轨道

⑥ 合并计算

两小公司 → 大公司:新股价、国库与火车合并、超限弃置、股东 1:1 换算与新总裁判定

P.18 合并轮

⑦ 清算

股价归 0 解散清单生成

P.11 清算

⑧ 破产判定

强制购车:国库 → 总裁现金 → 逐股卖股的筹资模拟

P.16–17

⑨ 终局计分

个人现金 + 持股按最终股价折算

P.20 游戏结束

⑩ 规则速查/设置

火车表、阶段区间、起始资金;自定义股价轨道与变体开关

全局

⑪ 公司管理

多公司状态存档(名称/类型/股价/国库);营运轮行动顺序自动排序(股价降序、同价先进入者先行动);已行动翻转标记;结算结果自动回写与历史流水;每股分红走势图(最近 10 次柱图)

P.11 行动顺序与标记翻转

⑫ 玩家资产

玩家档案(现金 + 持股),持股直接引用公司存档、股价实时联动;终局资产排名自动计算

P.20 游戏结束计分

⑬ 合并存档联动

合并页可从存档选择 A/B 公司自动填入股价国库;「合并并存档」一键生成大公司存档并移除原两家小公司

P.18 合并轮

二、数据输入与展示形式

输入方式(手动录入 + 快速选择并存)

  • 数字直输:股价、国库、站点值、火车价格等均可直接输入。
  • 快捷点选:站点价值提供快捷标签,点一下加一个站点,点已添加的标签即可删除;股数用±按钮步进;股价用±1档按钮沿轨道步进。
  • 开关切换:公司类型、分红/留存、郊区 +10、国库自持、变体规则均为点按开关。
  • 动态行:路线、股东、持股、可卖股票均可增删行。

展示形式(实时联动)

  • 任何输入变化立即重算:总收入大数字、每股分红、股价变动判定(涨红跌绿)、逐股东分红明细、银行池股数提示。
  • 分项明细:每条火车路线单独小计;分红页逐股东列出"股数 · 占比 · 应得";合并页列出均价、取整后新股价、保留/弃置火车、合并后各人持股与新总裁;破产页逐步列出筹资过程。
  • 校验提示:持股总数超限警告、国库不足赎回提示、股价归0弹窗警告。
  • 设置持久化:自定义股价轨道与变体开关存,跨会话保留。

模块

职责

对应规则

① 公司设置

公司类型(小/大)、当前股价(±1 档步进或直输)、国库现金

股份结构:小 5 股×20%,大 10 股×10%

② 路线录入

每列火车一条路线;站点价值快捷点选(10–60)或自定义;郊区 +10 开关

路线价值 = 站点价值之和,站数 ≤ 火车点数

③ 分配结算

分红 / 留存切换;自动判定股价 −1 / 不变 / +1 / +2 档

P.14 分配收入

④ 股东明细

股东行(姓名、股数 ±、是否国库自持);逐人分红额、占比、合计校验

分红按持股比例,自持股入国库

⑤ 股价快捷事件

卖股 −1 档、全售奖励 +1 档、发行 / 赎回 1 股

P.13–14 股价轨道

⑥ 合并计算

两小公司 → 大公司:新股价、国库与火车合并、超限弃置、股东 1:1 换算与新总裁判定

P.18 合并轮

⑦ 清算

股价归 0 解散清单生成

P.11 清算

⑧ 破产判定

强制购车:国库 → 总裁现金 → 逐股卖股的筹资模拟

P.16–17

⑨ 终局计分

个人现金 + 持股按最终股价折算

P.20 游戏结束

⑩ 规则速查/设置

火车表、阶段区间、起始资金;自定义股价轨道与变体开关

全局

⑪ 公司管理

多公司状态存档(名称/类型/股价/国库);营运轮行动顺序自动排序(股价降序、同价先进入者先行动);已行动翻转标记;结算结果自动回写与历史流水;每股分红走势图(最近 10 次柱图)

P.11 行动顺序与标记翻转

⑫ 玩家资产

玩家档案(现金 + 持股),持股直接引用公司存档、股价实时联动;终局资产排名自动计算

P.20 游戏结束计分

⑬ 合并存档联动

合并页可从存档选择 A/B 公司自动填入股价国库;「合并并存档」一键生成大公司存档并移除原两家小公司

P.18 合并轮

三、不同规则情景下的计算规则

1. 营运收入

  • 路线价值 = 该火车经过的所有站点(城市 + 远方目的地)价值之和,站数 ≤ 火车点数;可少跑(Local 本地路线只计枢纽城一站)。
  • 总收入 = 各列火车路线价值之和。
  • 公司技能修正(录入时体现):Suburban 郊区城市每列经过的火车 +10(路线上的"郊区+10"开关);Express 仅一列火车时 +1 站(多录一个站点即可);远方目的地价值随阶段变化(按收入卡面值录入)。

2. 分红(Pay out)

  • 每股分红:小型公司 = 总收入 × 20%;大型公司 = 总收入 × 10%。
  • 每位股东应得 = 每股分红 × 持股数(总裁证按 2 股计)。
  • 公司国库中自持的股同样分红,金额进入国库;银行池中的股不分红。
  • 股价判定(比较分红总额与当前股价):
    • 0 < 总额 < 股价 → 不变,标记移到该列底部
    • 总额 ≥ 股价 → +1 档
    • 总额 ≥ 2× 股价 → +2 档(双跳)

3. 留存(Withhold)

  • 总收入全额入国库;股价−1 档
  • 无火车公司收入视为 0,分配时股价 −1 档。

4. 股票轮价格事件

  • 玩家卖股:每次出售动作 −1 档(无论卖几股;变体可切为每股 −1 档)。
  • 股票轮结束时股份全部由玩家持有:+1 档。
  • 发行1股:国库 +当前股价,股价−1档;赎回1股:国库−当前股价,股价不变。
  • 持股约束提示:单人 ≤ 60%;银行池 ≤ 50%。

5. 合并(Merger Round)

  • 前提:两家小型公司总裁同意(变体:敌意合并按持股投票),且一方能沿路线 trace 到对方至少一个 hub。
  • 新股价 = 两家股价平均值,向下取整到票面档位
  • 股份 1:1 兑换为大公司股份(小总裁证 2 股 → 大公司 2 股);持股最多者任新总裁,并列时归营运顺序靠前公司的总裁。
  • 国库、火车合并;超出当前上限的火车由总裁选 1 列放入银行池。
  • 小公司技能在合并后保留。

6. 清算(股价归 0)

  • 全部股份移出游戏(无补偿);国库现金归还银行;火车入银行池;地图上 hub 标记移除。

7. 强制购车与破产

  • 无火车公司必须购车:国库出资 → 总裁个人现金 → 逐股卖股(卖股不得导致本公司总裁易主、不得使银行池 >50%;每个被卖公司只降 1 档)。
  • 仍不足 → 总裁破产,通常立即结束游戏;继续游戏时按规则移除其公司及资产,其他玩家持股按最终股价兑现。

8. 终局计分

  • 短局 4 循环 / 长局 6 循环后结束:玩家总分 = 个人现金 + Σ(持股 × 最终股价);公司国库不计分。

四、视觉主题

UI 直接取材自规则书的视觉语言:

规则书元素

小程序映射

封面深蓝织物底 + 铜橙新艺术装饰字体与双线框

每页顶部横幅(深蓝渐变 + 铜色双线内框)、Tab 栏深蓝底铜色选中

内页羊皮纸底色

页面背景 #f4eedd + 极淡轨道网格纹理

内页卡片式版心与细线框

卡片羊皮纸白 + 铜色双线内框(双层 inset box-shadow 模拟)

铁路六边形板块(hex tiles)

卡片标题前缀铜色 ⬢ 六边形符号,标题后铜色延展线

黄/绿/紫/灰四阶段板块色

火车表与阶段区间的阶段色标签(tag-phase-*)

衬线字体排版

全局 Palatino/Georgia/宋体系衬线栈

主色板:深蓝#17333f、铜橙#c96f3f/#e08b5a、羊皮纸#f4eedd、卡片#fdfaf1;涨(+分红/升档)用砖红#a53d2c,跌(留存/降档)用墨绿#3d6b34(延续 A 股红涨绿跌习惯)。

五、实现方案

5.1 技术选型

  • 原生微信小程序,无第三方框架依赖。
  • 全部计算收敛在utils/rules.js纯函数规则引擎中,页面只负责录入与渲染。
  • preview.html为同逻辑单文件浏览器版,便于无开发者工具时演示核对。

5.2 目录与数据流

用户输入 → Page.data(routes/holders/price/…)        → recalc() 调 rules.js 纯函数        → setData 渲染结果区(明细 + 判定 + 警告)"应用结算结果" → 把 newPrice / 国库变化写回 data,完成一次结算闭环设置 → app.globalData + wx.setStorageSync('atlas_settin

5.3 关键设计

  • 股价轨道抽象:所有"±N 档"通过 moveOnLadder(price, steps, ladder)在可配置轨道上移动解决,天然支持"向下取票面"(floorToLadder)与归 0 清算检测。

  • 变体开关:卖股按股/按次、股价轨道档位均可在设置页修改并持久化。

  • 金额精度:分红采用 ×100 取整再除回的两步处理,避免浮点误差;非整数分红如实显示(物理游戏中以零钱支付)。

5.5 更新

  • 收入板模式:每股分红走势已实现基础柱图,可升级为曲线图与多公司对比。
  • 玩家分红自动入账:结算页股东与玩家档案关联后,应用结算时自动累加各玩家现金。

相关学习资料

返回首页浏览学习资料