2

想当空中交通管制员吗?你可以试试这个 Linux 终端里的硬核游戏 | 分享

 2 years ago
source link: https://zhuanlan.zhihu.com/p/396755966
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

想当空中交通管制员吗?你可以试试这个 Linux 终端里的硬核游戏 | 分享

ATC,是一款 Linux 终端的航空管制模拟游戏,任务是指挥喷气式飞机和螺旋桨飞机进出管制区域和机场。

(本文字数:5031,阅读时长大约:8 分钟)

翻翻网上没有 ATC 的中文教程,特献 ATC 的中文教程。大部分参考 ATC 的手册页,有增删。ATC 的确是一款锻炼一心多用能力的终端游戏,通过更改配置文件缩短更新时间可以让游戏变得很难。

空中交通管制员(Air Traffic Controller) 简称 ATC,是一款 Linux 终端的航空管制模拟游戏,任务是指挥喷气式飞机和螺旋桨飞机进出管制区域和机场,主要锻炼玩家的注意力和一心多用能力,飞机的 速度(update time)和频率取决于所选游戏模式的难度。

Debian 系终端下输入以下命令下载:

sudo apt-get install bsdgames

输入 atc 命令即可开始游戏.

完整语法如下:

atc [ -u?lstp ] [ -gf game name] [ -r random seed ]
  • -u:打印用法行并退出;
  • -?:同 -u
  • -l:打印可用配置文件列表并退出,打印的第 1 个配置文件名是默认配置文件;
  • -s:打印得分列表;
  • -t:同 -s
  • -p:打印配置文件的特殊目录的路径,这在安装程序期间使用;
  • -g game:设置指定的配置文件. 如果输入的名称不是从 -l 选项打印的文件名之一,则运行默认配置文件;
  • -f game:同 -g
  • -r seed:设置随机数种子.

根据运行的终端窗口大小,屏幕将分为4个区域:雷达区、信息区、指令区和作者信息区。Ctrl+L 可以重置游戏。

默认屏幕布局

雷达区

第一个最大的屏幕区域是雷达显示,显示飞机、机场、标准入口/出口、信标、由“+”组成的线(线仅帮助玩家引导飞机)。

白底黑字的“字母 + 数字”表示飞机,如果数字是 1 位数则代表该飞机的高度为几千英尺。大写字母表示螺旋桨飞机,小写字母表示喷气式飞机。

“^ + 数字”、“> + 数字”、“v + 数字”、“< + 数字”表示机场,前面的字符表示跑道的方向(分别为北:0°、东:90°、南:180°、西:270°),飞机只能从这个方向着陆机场,停在机场的飞机也将从这个方向起飞。

“* + 数字”表示信标,仅为玩家提供一个参考点,具体用法请阅读下面“延迟命令”部分.

入口/出口沿雷达的边界显示为数字,飞机将在没有提示的情况下从这些入口飞入,这些入口有一个与它们相关联的方向,飞机总是从这个方向飞入(方向不显示在雷达上)。飞入的飞机总是以 7000 英尺的高度飞行;一架飞机要成功地飞出一个出口,高度必须在 9000 英尺。飞机离开时没有必要朝任何特定方向飞行。

信息区

信息区第一行列出了自开始以来的更新次数和安全完成任务的飞机数量,然后是目前在空中飞行的飞机列表。后跟一个空行,然后是停在机场的飞机列表。“pl” 列包含飞机的名称和当前高度;“dt” 列包含飞机的目的地,“AX”(X 代表序号,下同)表示该飞机需停在第 X 机场,“EX” 表示该飞机需从第 X 出口飞出;“comm” 列包含该飞机当前的指令(包括停在某机场),更改高度不被视为指令,因此不会显示。以下是一个信息区例子:

A4*A0: Circle @ b1
b7 E4: 225

C0 E2: Holding @ A1

第1行显示了一架名为“A”的螺旋式飞机正在 4000 英尺处飞行,燃料不足(注意星号 “*”),目的地是第 0 机场;当他到达信标 1(Beacon #1)时执行盘旋指令。

第 2 行显示了一架名为 “b” 的喷气式飞机正在 7000 英尺处飞行,目的地是第 4 出口,正在转向 225°(西南)。

第 3 行为空行。

第 4 行显示了一架名为 “C” 的螺旋式飞机,目的地是第 2 出口,它正停在第 1 机场。

指令区

终端的第 3 个区域是指令区,这里反映了玩家的输入指令,有关详细信息请参阅下面的“指令”部分。

作者信息区

该区域仅用于在信用到期时给予信用。 :-)

坚持时间越长越好,游戏没有获胜状态且不能暂停。在游戏中主要有以下操作:

  • 起飞飞机(增加停在机场的飞机的高度);
  • 着陆飞机(指示飞机恰好在机场正上方时高度为 0);
  • 操纵飞机从出口离开。

以下事件会导致游戏结束:

  • 将飞机操纵到错误的目的地;
  • 飞机飞出出口时高度不是 9000 英尺;
  • 飞机耗尽燃料;
  • 飞机发生碰撞(处于同一地点且高度差小于 2000 英尺);
  • 飞机坠毁(未在机场上空且高度为 0);
  • 飞机未从机场指定的方向着陆;
  • 飞机撞到边界;
  • Ctrl+C

在指令区可以输入相关指令。在任何时候输入 ? 将列出可能的输入字符。键入退格擦除命令的最后一部分。键入回车执行命令并进行语义检查,如果在检查时发现错误,则会在问题指令下加下划线并在其下方打印描述性信息。

指令语法分为两类:立即命令可延迟命令. 立即命令在下次更新时立刻发生;当可延迟命令后面没有条件时,可延迟命令也会立即发生;当可延迟命令后面有条件时,仅当条件满足时,可延迟命令才会发生.

在下表中,[0-9] 表示一个数字。 <dir> 表示一个方向,由键盘上 S 键周围的键 Q W E D C X Z A 替代(看一下你手中的键盘,这 8 个键恰好在 S 键的周围)。在绝对位置中,Q 指的是西北或 315°,W 指的是北或 0°;在相对位置中,Q表示向左 -45° 或 45°, W 表示 0° 或方向不变.

所有指令都以飞机名称字母开头,这表示指令的接收者。所有指令不分大小写。

立即命令

  • 高度(altitude)a [ cd+- ] [0-9] 。改变飞机的高度,包括飞机起飞/着陆。飞机每移动一次,高度改变 1000 英尺,直到达到要求便不再改变。
    • 上升或下降到给定高度(单位:千英尺):a [0-9]
    • 上升(climb)若干高度:ac [0-9]
    • 下降(descend)若干高度:ad [0-9]
  • 标记(mark)m。高亮突出显示(为默认显示形式),飞机和指令信息显示正常。
  • 忽略(ignore)i。不突出显示,当前如果没有指令,则该飞机信息区指令列显示为一行破折号。该显示形式将一直持续到使用标记指令。
  • 取消标记(unmark)u。和忽略指令相似。区别于忽略指令之处在于,当处理完一个延迟命令,显示形式将切换回高亮突出显示。

可延迟命令

  • 让飞机盘旋 c [ lr ]cl 表示逆时针盘旋,cr(默认)表示顺时针盘旋。
  • 转弯(turn),改变方向 :t [ l-r+LR ] [ <dir> ]tt [ abe* ] [0-9]
    • 转向给定的绝对方向,将采取最短的转弯:t<dir>
    • 逆时针转弯,默认 45°,或给定的相对方向。-ltl [ <dir> ]
    • 顺时针转弯,默认 45°,或给定的相对方向。+rtr [ <dir> ]
    • 逆时针转 90°:tL
    • 顺时针转 90°:tR
    • 转向给定机场:tta [0-9]
    • 转向给定信标, *bttb [0-9]
    • 转向给定出口:tte [0-9]

条件

条件可以附加到任何可延迟命令后面。它表示只有当飞机到达特定信标(或未来版本中的其他对象)时,指令才会执行。

当飞机 到达指定信标(at beacon)时执行延迟命令: ab [0-9]

信标 b 将在未来版本中可以替换成其他对象。n 时执行延迟命令。 @a

标记、取消标记和忽略

飞机在进入雷达区时默认被标记,这意味着它们在雷达区上以突出显示模式显示。飞机也可以不标记或忽略,一个被忽略的飞机以非高亮模式显示,并在信息区的指令列中显示一条虚线。飞机将保持这种状态,直到发出标记指令。其他命令将正常执行,但当下次更新时,该飞机信息区命令列将返回一行破折号。未标记的飞机与忽略的飞机相同,只是在处理延迟命令时它会自动切换到标记状态。如果玩家想暂时忽略飞机,但其飞行路径尚未完全设置好,那么取消标记指令将很有用。和所有立即命令一样,标记、取消标记和忽略指令将在下次更新时生效。

指令举例:

  • 飞机 A:到达信标 1 处时左转 90° : atlab1
  • 飞机 C:盘旋:cc
  • 飞机 G:到达信标 2 时转向第 4 出口:gtte4ab2
  • 飞机 M:高度增加 2000 英尺:ma+2
  • 飞机 S:转到 315°:stq
  • 飞机 X:忽略:xi

其他注意事项

  • 喷气式飞机每次更新都会移动,螺旋式飞机每隔一次更新移动一次;
  • 所有飞机每次转弯最多旋转 90°,180° 转弯会分成两次;
  • 飞机肯定在 7000 英尺处飞入并必须在 9000 英尺处离开;
  • 如果飞机不在机场上空,则高度为 0 的飞机会坠毁;
  • 在机场等候的飞机只能被告知起飞(增加高度);
  • 按回车(空命令)将立即执行下一次更新。

配置文件保存在一个特殊的目录中,它通常是 /usr/share/games/bsdgames/atc。 该目录包含文件 Game_List,其中包含可选配置文件名以及游戏本身。分数保存在 /var/games/bsdgames/atc_score 中。

玩家可以在配置文件中自定义游戏布局。Game_List 文件列出了当前可用的配置文件,新的配置文件名必须放在这个文件中才能使用。如果玩家指定了不在此文件中的游戏,则不会记住它的分数。

配置文件分为两部分,第一部分是定义部分,在这里必须设置 4 个可调游戏参数. 这些变量的设置语法如下:

变量 = 值;

变量可以是以下之一:

  • update:每次更新之间的秒数;
  • newplane:大约多少次更新后下一架新飞机出现;
  • width:雷达区的宽度;
  • height:雷达区的高度;

配置文件的第二部分描述了入口/出口、信标、机场和线的位置. 语法如下:

beacon: (x y) ... ;
airport: (x y <dir>) ... ;
exit: (x y <dir>) ... ;
line: [(x1 y1) (x2 y2)] ... ;

对于信标,使用简单的 x, y 坐标对(横纵坐标之间用空格分隔)。机场和出口需要第 3 个值,即方向之一:Q W E D C X Z A。 对于机场,这是飞机必须起飞和降落的方向;对于入口/出口,这是飞机进入雷达区时的方向。线则用两个端点的坐标表示,每条线必须用方括号括起来。所有语句都以分号 ; 结尾. 注释以井号 # 开始,以换行符结束。坐标在 (0, 0)(宽度-1, 高度-1) 之间(含)。所有出口坐标必须位于边界上,所有信标和机场必须位于边界内。线的端点可以在场内的任何地方,只要线是水平线、垂直线或正方形的对角线。

游戏默认包含 15 个配置文件,它们都是很好的例子,玩家可以在这些配置文件的基础上自己修改。

退出后屏幕有时会刷新。

本文由作者授权转载。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK