1 个不稳定版本
0.1.0 | 2021 年 10 月 8 日 |
---|
#2196 在 算法 中
78 每月下载量
在 9 个 crate 中使用 (5 直接)
275KB
6.5K SLoC
Rusty Train
用于构建 18xx 地图和识别最佳火车路线的图形用户界面。
示例用法
使用 cargo run --release
启动 Rusty Train
使用 Ctrl+O
加载 1867_bc
示例游戏,该游戏位于 ./examples/output/1867_bc.game
按 r
以找到公司的最佳路线。选择 大西部铁路 并点击 OK
该公司拥有 5-train
和 8-train
,并且没有收到右侧列出的四个奖励。输入这些详细信息并点击 OK
在搜索最佳路线时,地图被禁用并淡出
找到最佳路线后,它们将被绘制在地图上(用绿色和红色突出显示),并在窗口标题中显示净收入
使用箭头键(<Left>
、<Right>
、<Up>
、<Down>
)循环查看单独的路线;火车名称和路线收入显示在窗口标题中
按 d
显示股息支付
按 Esc
或 Return
返回到默认用户界面模式。
用户指南
有四种不同的用户界面 模式
- 默认:选择和旋转地图块,切换到其他模式。
- 替换地图块:放置和升级地图块。
- 编辑代币:在地图块上放置和移除代币。
- 查找路线:识别公司的最佳路线和收入。
每种模式都响应不同的按键组合(见下文部分)。
还有一些全局键可以在任何模式下执行相同操作
键 | 操作 |
---|---|
q ,Q |
退出 |
s ,S |
保存当前地图的截图 |
Ctrl+n ,Ctrl+N |
开始新游戏 |
Ctrl+o ,Ctrl+O |
从磁盘加载已保存的游戏 |
Ctrl+s ,Ctrl+S |
将当前游戏保存到磁盘 |
+ |
放大 |
- |
缩小 |
默认模式
使用此模式选择瓦片或六边形空间,切换到其他模式以放置瓦片、放置标记和选择最佳路线。
键 | 操作 |
---|---|
e ,E |
切换到替换瓦片模式,选择任何瓦片 |
u ,U |
切换到替换瓦片模式,选择一个升级瓦片 |
t ,T |
切换到编辑标记模式 |
r ,R |
切换到查找路线模式 |
<左> |
选择当前六边形的左侧六边形 |
<右> |
选择当前六边形的右侧六边形 |
<上> |
选择当前六边形的上方六边形 |
<下> |
选择当前六边形的下方六边形 |
任何鼠标按钮 | 选择光标下的六边形 |
, , < |
逆时针旋转当前瓦片 |
. , > |
顺时针旋转当前瓦片 |
<退格键> |
移除当前瓦片 |
<删除键> |
移除当前瓦片 |
p ,P |
更改游戏阶段 |
替换瓦片模式
使用此模式放置和升级瓦片。
键 | 操作 |
---|---|
Esc |
返回到默认模式,忽略任何编辑 |
返回 |
返回到默认模式,保存任何编辑 |
o ,O |
显示(如果有)原始瓦片 |
<上> |
选择下一个可用的瓦片 |
<下> |
选择上一个可用的瓦片 |
, , < |
逆时针旋转所选瓦片 |
. , > |
顺时针旋转所选瓦片 |
编辑标记模式
使用此模式在瓦片上放置和移除标记。
键 | 操作 |
---|---|
Esc |
返回到默认模式,忽略任何编辑 |
返回 |
返回到默认模式,保存任何编辑 |
<左> |
选择活动瓦片上的上一个标记 |
<右> |
选择活动瓦片上的下一个标记 |
<上> |
将当前标记(如果有)替换为下一个可用的标记 |
<下> |
将当前标记(如果有)替换为上一个可用的标记 |
0 |
移除当前标记 |
<删除键> |
移除当前标记 |
<退格键> |
移除当前标记 |
查找路线模式
使用此模式选择一家公司并找到该公司的最佳路线和收入。
用户将被提示选择在地图上放置了标记的公司之一。然后,他们将被提示选择此公司的可用火车和任何相关奖励。
这将启动路线查找过程;根据潜在路线的数量,这可能需要几分钟才能完成。
最佳路线将随后在地图上绘制,并显示最佳收入。用户可以使用箭头键循环浏览各个路线。
键 | 操作 |
---|---|
Esc ,Return |
返回到默认模式 |
<Left> ,<Up> |
显示上一个火车路线 |
<Right> ,<Down> |
显示下一个火车路线 |
d ,D |
显示股息支付 |
支持的游戏
以下游戏实现了地图、瓦片和火车
- 1830:铁路和强盗大亨
- 1861:俄罗斯帝国的铁路
- 1867:加拿大的铁路
- 1889:四国铁路史(四国1889)
许可证
根据以下之一获得许可:
- Apache License,版本2.0(《LICENSE-APACHE》或https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(《LICENSE-MIT》或http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在作品中的任何贡献,应按上述方式双重许可,不得附加任何额外条款或条件。
lib.rs
:
提供图块目录,并根据18xx图块数据库定义通用图块。
概述
此模块定义了一个[Builder]类型,该类型将图块组装成目录,并提供许多预定义图块。
目录定义了可以放置在地图上的图块范围及其可用性。
// Construct a small catalogue of standard tiles, identified by name.
let tiles = vec![
(Kind::_3, Availability::Limited(4)),
(Kind::_208, Availability::Unlimited),
];
let catalogue = Builder::with_tiles(tiles).unwrap().build();
依赖关系
~8MB
~162K SLoC