第2章:通用功能
本章描述了所有游戏共有的功能。
2.1 通用操作
这些操作都可以从游戏菜单和键盘快捷键中使用,除了任何游戏特定的操作。
在Mac OS X上,为了符合本地用户界面标准,这些操作位于文件和编辑菜单中。
操作 | 快捷键 | 描述 |
---|---|---|
新游戏 | N , Ctrl+N | 开始一个新游戏,具有随机初始状态。 |
重新开始游戏 | — | 将当前游戏重置为其初始状态。(这可以撤消。) |
加载 | — | 从磁盘上的文件加载保存的游戏。 |
保存 | — | 将游戏的当前状态保存到磁盘上的文件。加载和保存操作保留你的整个游戏历史记录(所以你可以保存、重新加载,并且仍然可以撤消和重做你在保存之前所做的事情)。 |
打印 | — | 在支持的地方(目前仅在Windows上),弹出一个对话框,允许你从当前参数随机生成任意数量的谜题进行打印,可选择包括当前谜题。 |
撤消 | U , Ctrl+Z , Ctrl+_ , * | 撤消单个移动。(你可以撤消移动回到会话开始。) |
重做 | R , Ctrl+R , # | 重做先前撤消的移动。 |
复制 | — | 将游戏的当前状态以文本格式复制到剪贴板,这样你可以将其粘贴到(比如说)电子邮件客户端或网络留言板中,如果你正在与其他人讨论游戏。(并非所有游戏都支持此功能。) |
解决 | — | 将谜题立即转换为其解决状态。 |
退出 | Q , Ctrl+Q | 完全关闭应用程序。 |
偏好设置 | — | 在支持的地方,弹出一个对话框,允许你配置关于特定游戏的个人偏好。 |
关于解决功能
解决命令根据游戏的不同而工作方式不同:
- 对于一些游戏(方块),此功能完全不受支持,因为它没有特别的用处。
- 对于其他游戏(如图案),如果你根本看不出解决方案如何存在或者你想知道你在哪里犯了错误,解决状态可以用来给你信息。
- 对于其他游戏(如十六),自动解决并不能告诉你如何_到达_解决方案,但它确实提供了一个有用的方式来快速到达那里,这样你就可以实验设定的移动和变换。
一些游戏(如数独)能够解决你从其他地方输入的游戏ID。其他游戏(如矩形)无法解决它们没有自己发明的游戏ID,但当它们确实发明了游戏ID时,它们已经知道解决方案是什么。还有其他游戏(图案)可以解决_一些_外部游戏ID,但只有当它们不太困难时。
解决命令将解决状态添加到谜题的撤消链的末尾。换句话说,如果你想在看到答案后回到自己解决它,你可以按撤消。
偏好设置
所有游戏共有的一个选项允许你关闭单键快捷键,如N
表示新游戏或Q
表示退出,这样意外按到它们的机会就更少了。你仍然可以使用Ctrl键访问相同的快捷键。
2.2 使用游戏ID指定游戏
有两种方法可以从谜题中保存游戏规格并在以后重新创建它,或在其他人的同一谜题副本中重新创建它。
游戏菜单(或Mac OS X上的文件菜单)中的特定和随机种子选项各自显示一段文本(“游戏ID”),足以在以后精确重建相同的游戏。
你可以在以后将这些文本中的任何一个输入回程序(通过相同的特定或随机种子菜单选项),它将重新创建相同的游戏。你也可以将其中任何一个用作命令行参数(在Windows或Unix上)。
描述性游戏ID与随机种子
两种形式之间的区别是,描述性游戏ID是游戏初始状态的字面_描述_,而随机种子只是作为输入提供给用于创建谜题的随机数生成器的任意文本片段。
这意味着:
-
描述性游戏ID在许多谜题中往往更长(尽管有些,如方块,只需要非常短的描述)。所以随机种子通常是记录你当前正在玩的谜题或告诉其他人以便他们可以玩与你相同的谜题的_更快_方式。
-
任何文本都是有效的随机种子。自动生成的是十五位数字,但任何东西都可以;你可以输入你的全名,或你刚编造的单词,并且会从中生成有效的谜题。这为两个或更多人竞赛完成相同谜题提供了一种方式:你想出一个随机种子,然后每个人同时输入它,没有人因为在其他人之前看到生成的谜题而获得优势。
-
通常可以从其他来源转换谜题(如报纸上的”数字画”或”数独”)为适合与这些程序一起使用的描述性游戏ID。
-
如果你在不同_版本_的谜题程序中使用随机种子,不保证产生相同的结果。这是因为生成算法可能在代码的后续版本中得到改进或修改,因此在给定相同的随机数序列时将产生不同的结果。如果你不确定它将在与你的程序相同的版本上使用,请使用描述性游戏ID。
使用关于菜单选项来找出程序的版本号。在不同平台上运行的具有相同版本号的程序仍应该是随机种子兼容的。
游戏ID格式
- 描述性游戏ID以编码当前游戏_参数_(如网格大小)的文本片段开始。然后有一个冒号,之后是游戏初始状态的描述。
- 随机种子以类似的参数字符串开始,但然后它包含一个井号,后跟任意数据。
如果你输入描述性游戏ID,程序将无法向你显示生成它的随机种子,因为它不是_从_随机种子生成的。但是,如果你_输入_随机种子,程序将能够向你显示从该随机种子派生的描述性游戏ID。
游戏参数字符串在两种形式之间并不总是相同的。对于某些游戏,随机种子提供的参数数据不包括在描述性游戏ID中。这是因为该参数信息仅在_生成_谜题网格时相关,在玩它们时并不重要。
如果你输入游戏ID,这些附加参数也不会永久设置。例如,假设你将数独设置为”高级”难度级别,然后朋友想要你帮助解决”简单”谜题;所以朋友读出指定”简单”难度的随机种子,你输入它。程序将为你生成与你朋友遇到困难的相同”简单”网格,但一旦你完成游戏,当你要求新游戏时,它将自动回到之前设置的”高级”难度。
2.3 “类型”菜单
类型菜单(如果存在)可能包含预设游戏设置列表。选择其中一个将使用指定的参数开始新的随机游戏。
类型菜单也可能包含自定义选项,允许你微调游戏参数。可用参数特定于每个游戏,在以下部分中描述。
2.4 在命令行上指定游戏参数
本节不适用于Mac OS X版本。
这个合集中的游戏故意从不在它们运行的计算机上保存信息:它们没有高分表和保存的偏好设置。(这是因为我预期至少有些人会在工作中玩它们,这些人可能会欣赏留下尽可能少的证据!)
但是,如果你确实想安排这些游戏中的一个默认为特定的参数集,你可以在命令行上指定它们。
最简单的方法是使用类型菜单设置你想要的参数,然后从游戏或文件菜单中选择随机种子。“游戏ID”框中的文本将由两部分组成,由井号分隔。第一部分代表游戏参数(例如,游戏区域的大小,以及你使用类型菜单设置的任何其他内容)。
如果你仅使用命令行上的该参数文本运行游戏,它将使用你指定的设置启动。
示例
如果你运行方块,从类型菜单中选择”八面体”,然后转到游戏ID选择,你将看到形式为o2x2#338686542711620
的字符串。只取井号前的部分(o2x2
),并使用该文本在命令行上启动方块:
PREFIX-cube o2x2
如果你将_整个_游戏ID复制到命令行上,游戏将在所描述的特定游戏中启动。这偶尔是启动特定游戏ID的更方便的方式,而不是将其粘贴到游戏ID选择框中。
你也可以使用特定菜单选项而不是随机种子来检索编码的游戏参数,但如果你这样做,一些选项,如数独中的难度级别,将丢失。
2.5 Unix命令行选项
本节仅适用于Unix端口。
除了能够在命令行上指定游戏参数外,还有各种其他选项:
基本选项
选项 | 描述 |
---|---|
--game | 强制将命令行参数视为指定游戏参数 |
--load | 强制将命令行参数视为要加载的保存文件 |
--generate n | 不显示谜题,而是将_n_个描述性游戏ID打印到标准输出 |
--delete-prefs | 删除包含用户偏好设置的配置文件 |
--version | 打印版本信息并退出 |
如果既没有指定--game
也没有指定--load
,则根据参数的格式进行猜测。
打印选项
选项 | 描述 |
---|---|
--print WxH | 以PostScript格式将谜题的打印表示发送到标准输出,每页_W_个横向和_H_个纵向 |
--with-solutions | 在谜题后跟随它们的解决方案(需要--print ) |
--scale n | 打印时调整谜题大小(默认1.0,需要--print ) |
--colour | 以彩色而不是黑白打印谜题(需要--print ) |
保存选项
选项 | 描述 |
---|---|
--save file-prefix | 写入保存的游戏文件而不是显示谜题 |
--save-suffix file-suffix | 指定保存的游戏文件的后缀(与--save 一起使用) |
示例
生成并打印网络谜题:
PREFIX-net --generate 12 --print 2x3 7x7w | lpr
这将生成两页打印的网络谜题(每个都有7×7环绕网格),并将输出管道传输到lpr
命令。
生成保存的游戏文件:
PREFIX-net --generate 12 --save game --save-suffix .sav
这将生成十二个网络保存的游戏文件,名称为game0.sav
到game11.sav
。
Simon Tatham’s Portable Puzzle Collection, version 20250615.b589c5e