Exolve 可以帮助您以任何语言创建在线交互式可解答的填字游戏(带有块和/或条形的简单填字游戏,以及那些杂乱的、无图表的或 3D 等)。
文件 exolve.html 包含您需要的所有代码:只需复制一份,然后用您自己的拼图规范替换包含示例网格的部分,从exolve-begin
行开始,到exolve-end
行结束。
文件 exolve-m.html、exolve-m.css、exolve-m.js 与 exolve.html 具有相同的内容,只不过它被分成单独的部分:HTML(包括拼图规范)、CSS 和 JavaScript。这使得 JavaScript 和 CSS 可以在多个谜题中重复使用。
另一个简单的选择是仅使用 exolve-m-simple.html 文件:这本质上是 exolve-m.html 的副本,但它不需要您托管 exolve-m.css 和 exolve-m.js 文件,因为它链接到我维护的、托管在 GitHub 上的网站上的最新副本。
另一种选择是将 Exolve 谜题嵌入到“小部件”中的任意网页(例如博客文章)中。请参阅 Exolve 小部件部分中的详细信息。
Exolve Player Web 应用程序可用于播放多种格式的填字游戏文件(包括 .puz,甚至在许多情况下只是从 PDF 复制的线索)。此 Web 应用程序的一个易于记忆的 URL 是 exolve.app。
您还可以使用文件 exolve-embedder.html 通过 Exolve 提供 .puz 和 .ipuz 文件。请参阅 Exolve 嵌入器部分中的详细信息。
以下是拼图规范的示例:
exolve-begin
exolve-width: 5
exolve-height: 5
exolve-grid:
HELLO
O.A.L
WORLD
L.G.E
STEER
exolve-across:
1 Greeting (5)
4 Earth (5)
5 Guide (5)
exolve-down:
1 Emits cry (5)
2 Big (5)
3 More ancient (5)
exolve-end
格式非常简单,使用纯文本(但解析代码有时也比较简单,不太宽容,所以请仔细阅读格式文档)。设置者可以选择提供解决方案(如上例所示),或者仅使用 0 来指示需要填充的正方形(即,在填字游戏术语中,是“光”的一部分)。
该目录中还包含一些示例谜题,每个谜题都位于扩展名为“.exolve”的文件中。这些展示了一些可用的功能,例如 ninas、附加线索或问题、提交、禁止谜题、无图解谜题等。要尝试其中之一,请创建 exolve.html 的副本并按上述方式对其进行编辑,将其拼接在从exolve-begin
到exolve-end
整个 .exolve 文件。该目录中还提供了一整套 test-*.html 文件。我使用它们来测试新版本,但您可以使用它们来查看大多数 Exolve 功能的使用示例。
基本控制是单击一个正方形并在其中输入一个字母。如果某个方块既是横向线索又是向下线索的一部分,则在该方块是当前方块时单击该方块(或按 Enter 键)将切换活动方向(除非同时按下 Shift 键并单击) ,在这种情况下不会发生直接切换,这在从其他输入元素导航回网格时很有用)。
控制按钮( “清除此” 、 “清除全部!” 、 “检查此” 、 “检查全部!” 、 “显示此”和“显示全部!” )按照其名称所建议的方式工作(“此”指当前选定的灯光)。您可以单击线索跳转到其方块。如果设置者未提供所有解决方案,则仅显示“清除此/全部”控制按钮,不会显示“检查/显示”按钮。
“清除此”按钮首先仅清除不与其他完全填充的灯光(如果有)交叉的字母。如果没有(即当前灯光中所有剩余的字母也与其他完全填充的灯光交叉),只有这样这些剩余的字母才会被清除。
长按“检查此”或“显示此”会将文本“此”切换为“单元格”,然后检查/显示将仅发生在当前单元格上(而不是整个灯),例如按钮的特定激活。警告:这似乎不适用于手机和平板电脑(尽管仅在 Android 设备上进行了测试)。
设置者可以使用exolve-option
show-cell-level-buttons
额外显示一行额外的按钮,其中包含这两个单元格级按钮:“检查单元格”和“显示单元格”。
Exolve 支持无图谜题,其中无法识别被阻挡的方块,解算器必须找出它们的位置。事实上,exolve 支持部分无图拼图,其中只有某些方块或网格的某些部分区域不显示被阻挡的方块在哪里。在解决此类难题时,解算者可以在无图方块中按空格键,以假定它是一个被阻止的方块(黑色方块字符⬛将被放置在该方块中。它可以像任何其他常规条目一样被删除)。此外,当用户输入或清除无图单元格中的阻塞方块时,也会在当前方块的对称对应方块中采取适当的操作。
如果设置器通过在某些线索末尾附加注释来提供注释,则当求解器单击“全部显示!”时,会显示这些注释。通过“显示/清除此”按钮可以显示/隐藏特定于线索的注释(除非线索仅具有无图单元格)。此外,“检查此”和“检查全部!”表现得像“揭示这个”和“揭示全部!”如果他们没有发现错误的话。在未提供解决方案的谜题中,如果有任何注释存在的线索(这些注释可能是完整的解决方案,也可能只是提示),“显示此”按钮仍然会显示。
如果设置器提供了一个或多个 ninas 的位置(通过exolve-nina
部分),则会显示一个附加按钮控件Show ninas ,以便解算器查看 ninas 的位置。可以再次单击该按钮来隐藏尼娜位置。单击“全部显示”后也会显示尼纳斯。
如果设置者在谜题中提出了其他问题(通过exolve-question
部分),那么也会显示这些问题的输入字段。除了显示/隐藏注释/解释/说明之外,“显示/清除全部”控制按钮还包括显示/清除这些问题的答案。
如果设置者设置了一个提交 URL(带有exolve-submit
部分,例如,可以使用 Google 表单设置该 URL),那么就会有一个“提交”按钮。
当解算器在方格中输入字母时,光标会自动跳转到当前活动线索的下一个方格(当存在“覆盖”多个线索的链接线索时,下一个方格可以来自不同的线索)。
如果解算器将单元格条目从非空白字母更改为不同的非空白字母,则更改后的字母会通过以不同的颜色显示一段时间来突出显示。可以配置该动画的开始/结束颜色( overwritten-start
和overwritten-end
)和持续时间( highlight-overwritten-seconds
)。
如果解算器按下删除键,它将删除当前方块的内容而不前进。
解算器可以按 Tab/Shift-Tab 导航到下一个/上一个线索。解算器可以使用箭头键沿箭头方向导航到下一个/上一个光单元。
只要光标所在的方块可见,软件就会尝试在滚动时保持当前线索可见。
“清除/检查/显示全部”按钮、“显示 ninas”按钮和“提交”按钮会向求解器请求额外的确认。
单击线索表中的线索即可激活该线索。如果该线索不是之前活动的线索,则键盘焦点将转到网格中该线索的第一个字母。如果线索已经处于活动状态,那么焦点将保留在线索上,让您根据需要选择并复制线索/纪元的部分内容。
您可以单击黑色背景或拼图标题、设置器或序言(如果存在)来取消突出显示当前线索(例如,用于打印或屏幕截图)。
在某些情况下(例如在无图谜题中指定颜色或尼纳斯或某些线索数字的位置时),您可能需要指定网格中正方形的位置。您可以通过以下方式之一执行此操作:
a3 (column "a": the 1st column from the left, and row 3 from the bottom)
f11 (column "f": the 6th column from the left, and row 11 from the bottom)
字母 (az) 必须为小写,并且必须位于行号之前,中间不得有空格。
如果您的网格超过 26 列,则此棋盘符号是不够的。您也可以直接指定行和列,如下所示:
c1r3 (the 1st column from the left, and row 3 from the bottom)
r11c6 (the 6th column from the left, and row 11 from the bottom)
拼图可以在exolve-begin
行和exolve-end
行之间包含以下“部分”:
exolve-width
exolve-height
exolve-grid
exolve-title
exolve-setter
exolve-email
exolve-id
exolve-copyright
exolve-credits
exolve-preamble
/ exolve-prelude
exolve-across
exolve-down
exolve-nodir
exolve-reversals
exolve-3d
exolve-3d-across
exolve-3d-away
exolve-3d-down
exolve-explanations
exolve-nina
exolve-colour
/ exolve-color
exolve-question
exolve-submit
exolve-option
exolve-language
exolve-relabel
exolve-maker
exolve-force-hyphen-right
exolve-force-hyphen-below
exolve-force-bar-right
exolve-force-bar-below
exolve-cell-size
exolve-postscript
每个部分都有部分名称 ( exolve-something
),后跟一个冒号。除了exolve-preamble
/ exolve-prelude
、 exolve-grid
、 exolve-across
、 exolve-down
、 exolve-nodir
、 exolve-explanations
和exolve-postscript
部分之外,所有其他部分都占据一行(尽管有些部分可以重复) )。对于此类单行部分,该部分的“值”是同一行中冒号后面的文本。
粗体部分,即exolve-width
、 exolve-height
和exolve-grid
是必需的。其他部分是可选的,但exolve-across
、 exolve-down
、 exolve-title
、 exolve-setter
可能应该出现在大多数谜题中。
任何以“#”开头的行(或行的尾部)都被视为注释并被忽略。后面带有行尾的“#”也被视为注释。请注意,后面带有非空格字符的“#”不会被视为注释(之所以如此,是因为我们可能在exolve-colour
部分中有 HTML 颜色名称,例如 #FF00FF,并且我们可能有线索,其中它们的网格- 位置以 #xN 表示法指示 - 请参阅本节)。我没有使用“//”作为注释标记,因为它在 URL 中使用。
在exolve-begin
之前或exolve-end
之后出现的任何文本都会被忽略。
exolve-width
, exolve-height
谜题的宽度和高度,即纵横字谜网格有多少个横格和下多少格。例子:
exolve-width: 15
exolve-height: 15
exolve-grid
网格规范从exolve-grid
行之后的行开始,一直到下一个exolve-something
部分。此部分中的行数应与网格的高度完全相同。在每一行上,指定网格该行中的方块。
谜题有两种:提供解决方案和不提供解决方案。以下是两者的简单示例:
网格提供的解决方案:
exolve-grid:
ACE
R.R
EAR
这是一个 3x3 的网格,中心有一个方块(“.”用于表示方块)。在此网格中,1 个横向 = ACE,1 个向下 = ARE,3 个向下 = ERR,3 个横向 = EAR。当像这样包含解决方案字母时,会显示用于检查/显示答案的控制按钮。
在提供解决方案的网格中,设置者可以使用字母“?”作为他们尚未决定放置哪个字母的任何浅色方块中的占位符。
未提供解决方案的网格:
exolve-grid:
000
0.0
000
这也是一个 3x3 网格,但尚未提供解决方案(每个灯都使用字母“0”显示)。在这样的网格中,不会显示用于检查/显示答案的控制按钮。
也可以指定禁止网格,而不是阻止网格。事实上,可以指定一个同时使用条形和块的网格。条形(以及其他一些特殊处理)是使用主网格方形说明符后面的字母指定的,我们将其称为装饰器。使用装饰器 | 指定正方形右侧的条形。正方形下的条形是使用装饰器 _ 指定的。前后都有横线的方块可以使用“|_”或快捷方式“+”。网格正方形规范之间允许有任意多个空格,并且在装饰器存在的情况下可以(应该! )使用空格来排列正方形。下面是一个使用条形图和方块的 3x3 网格示例:
exolve-grid:
A M|B
X . E
E|A T
装饰器“@”也可用于在某些正方形内内切圆圈,装饰器“*”可用于指示正方形是无图的。这是最后一个例子,这次是一些单元格周围有圆圈,而一些单元格是无图的:
exolve-grid:
A M|@B
X* . E*
E| A T
装饰者“!”可用于将单元格标记为预填充(必须提供其解决方案字母)。解决方案信将预先填写且不可编辑。如果灯光中的所有条目都已预先填充,并且为该线索提供了纪元,则纪元将在启动时自动显示。即使没有为完全预填充的线索提供纪元,解决方案也会显示在线索的末尾(除非设置了 no-auto-solution-in-anno 选项)。
装饰器“~”可用于将开始横向/向下线索的单元格标记为应跳过正常线索编号的单元格。这样的细胞没有线索号。它将获得的线索编号将用于下一个开始线索的单元格。从此类“跳过的数字”单元开始的光必须以其他方式提供线索(例如,使用单独指定或显示的线索)。提供线索的一种方式是使用 nodir 线索或非数字标记的线索,如下所述。
作为方便的参考,这里再次是装饰器的完整列表:
装饰者 | 意义 |
---|---|
| | 它后面有一个酒吧,在右边。 |
_ | 下面有一个酒吧。在底部。 |
+ | 后面和下面都有酒吧。 |
@ | 有内切圆。 |
* | 是无图的。 |
! | 已预填充。 |
~ | 跳过正常编号 |
如果您使用的语言/脚本使用由多个 Unicode 字符组成的复合字母(例如,梵文 - 请参阅exolve-language
部分),或者如果您有画线单元,则必须分隔网格字母(当使用以下命令指定网格时)解决方案)和一个空格(除非它们已经被装饰器分开)。例如,这将不起作用:
exolve-grid:
सेहत
这将起作用:
exolve-grid:
से ह त
通常,解决方案字母中只能使用字母表中的字母(AZ 或特定于脚本的字母)。但是,使用exolve-option
allow-digits
或allow-chars:<chars>
,您可以允许一些非字母字符。如果这些字符中的任何一个也是装饰符或在网格规范中具有特殊含义(即,是|_+@!~*.?
之一),那么它应该在网格规范中以&
为前缀。如果&
本身需要在网格中使用,那么它也应该以&
为前缀。例如:
exolve-option: allow-chars:@.&
exolve-grid:
A &@ B &. C O M
&& . . . . . .
尽管0
在网格规范中具有特殊含义,但如果网格中已通过allow-digits
或allow-chars
允许使用0
,则不必使用&
前缀转义0
。一个技术警告(为了完整性)是您不能创建一个所有条目完全由0s
组成的退化网格。
如果您希望填字游戏解决方案包含一些具有多个字母的单元格(也称为“画线单元格”),那么您必须使用exolve-option: rebus-cells
(并且您必须使用空格分隔网格解决方案条目,如前所述)。
例如:
exolve-width: 3
exolve-height: 3
exolve-option: rebus-cells
exolve-grid:
RAN G E
DO . A
M E T
如果存在画状单元格,则可以在双击任何单元格后在该单元格中输入多个字母,或者在输入字母时按住 Shift 键。如果某个单元格之前已经输入了多个字母,那么当您再次访问该单元格时(通过单击该单元格或从相邻单元格自动前进),您将能够在其中输入多个字母(无需使用 Shift 键)或双击)。
当在单元格中输入多个字母时,单元格文本的字体大小会调整以尝试适合所有字母。如果您有一些长画线条目不适合默认单元格大小,那么您应该使用更大的单元格,使用exolve-cell-size
。
如果存在画线单元格,则当前单元格中的横向指示箭头将放置在文本下方而不是其右侧,以便为文本留出更多空间。
您不能在使用最大字符代码大于 1 的语言的填字游戏中使用画线单元,也不能在使用无图表单元的填字游戏中使用画线单元(这使我们能够使代码更简单)。
请注意,“无图”仅向解算器隐藏一个方块是在灯光下还是被遮挡的方块 - 如果设置器使用了任何条形,它们确实会显示给解算器,即使在无图单元格中也是如此。
如果带有无图方块的谜题已指定所有解决方案,则会显示检查/显示控件。例如,显示一个被遮挡的无图方块将显示该方块中的黑色方块字符⬛。
如果设置器不想为具有一些无图方块的谜题提供解决方案,则不应在同样无图的方块中使用块状方块标记(“.”)(否则解算器可以深入到 HTML 源代码并查看被阻挡的方块在哪里)。此类拼图中的每个无图方块应指定为“0”,后跟无图装饰器,即“0*”。但是,即使是 Exolve 软件也无法知道任何线索从哪个网格方块开始。然而,有时,即使在带有无图方块的谜题中,设置者也可能希望为某些线索提供线索起始位置。 Exolve 提供了一种方法来做到这一点:设置器可以选择使用扩展的棋盘符号包含任何线索的线索开始的方块的位置。下一节将提供详细信息。
exolve-title
, exolve-setter
谜题的标题和填字游戏设置者的姓名/笔名。例子:
exolve-title: My Lovely Crossword
exolve-setter: Narsi Sus
exolve-email
可选的电子邮件地址(或逗号分隔的地址),解答者可以通过其中联系填字游戏创建者。在“注释”面板中,您可以将注释发送到此电子邮件地址。
exolve-id
(可选)为此填字游戏提供唯一的 ID。该 ID 用作保存/恢复状态的密钥,也用于区分单个页面上的多个谜题。您可以创建一个未解决的谜题版本(例如,用于举办竞赛),然后创建具有解决方案的同一谜题的版本,并为它们提供相同的exolve-id
。然后,当求解器访问包含解决方案的版本时,他们可以看到自己的条目并查看他们犯了哪些错误(如果有)。例子:
exolve-id: tiny-42
如果您不提供 ID,软件将根据网格签名和线索创建一个 ID。这将确保如果您加载相同的填字游戏而不对线索或网格进行任何更改,那么您将恢复状态,即使没有显式 ID。
exolve-copyright
如果您提供此信息,它将与版权符号一起显示在渲染的拼图网格下方。例子:
exolve-copyright: 2019 Viresh Ratnakar
exolve-credits
如果您提供此信息,它将显示在版权之下。您可以提供此的多个实例。例子:
exolve-credits: Test solver: Zaphod Beeblebrox
exolve-credits: Custom code: H. A. C. Ker
exolve-preamble
, exolve-prelude
填字游戏通常带有包含特殊说明和/或提示的序言。序言文本占据多行 — 从exolve-preamble
(或exolve-prelude
)行之后的行开始,一直到下一个exolve-something
部分之前的行。前导码可以包括 HTML 标签。在渲染的拼图中,前导码渲染在网格上方。例子:
exolve-preamble:
Words should be entered in the grid <i>after</i> deleting one letter. The
letters thus deleted, in clue order, form the name of a famous farm
animal.
exolve-across
, exolve-down
, exolve-nodir
exolve-across
和exolve-down
部分应该分别用于指定横向和向下线索( exolve-nodir
是针对没有指定方向的线索的特殊/罕见情况;我们将在本节)。每行应该有一个线索,并且不应该有任何空行。线索应以线索编号开始,以枚举结束(枚举不是严格要求的)。例子:
exolve-across:
1 Untouchable service (3)
3 Listener (3)
exolve-down:
1 Happen to be (3)
2 Make a mistake (3)
如果枚举指示多个单词(例如, (4,3)或(6 7) ),或者如果枚举指示连字符连字符(例如, (4-2) ),则单词边界或连字符将显示在网格,以帮助解决者。该软件使用以下标准来决定线索的枚举部分的构成:一对左括号和右括号,仅包含数字、连字符、逗号、撇号、空格和句点,以数字开头。该软件还处理一对包含文本“words”或“letters”(或任何以“w”或“l”开头的子词,例如“wrds”或“l”或“ltrs”)或包含“?”的括号。 ”前面有任何内容,作为枚举(例如,允许设置器将枚举指定为“(两个单词)”或“(?)”或“(7, 2w)”)。在这些特殊情况下,在“(7, 2words)”和“(6 个字母)”的极端情况下,解析分别将 7 和 6 解释为条目的长度,并将其与光的长度进行检查与普通枚举一样。
在极少数情况下,线索中有多个候选枚举部分,则使用最后一个。但是,可以通过显式使用“[]”来标记线索的结尾来覆盖这一点(请参阅下面的Annotations
)。
在 3-D 填字游戏中,您应该分别使用exolve-3d-across
和exolve-3d-away
部分,而不是exolve-across
和exolve-down
部分,其中exolve-3d-down
部分提供垂直灯光的线索各层。您可以在exolve-3d
部分找到详细信息。
如果枚举后面紧跟一个*
,则不会向用户显示它。示例:
1 Satellite (4)* MOON
2 Star (?)*
可能会出现一些困惑,即使枚举指示多个或连字符的单词,您也不希望在网格中绘制单词分隔条或连字符。一个例子是网格,其中特殊指令要求在将解决方案输入网格之前删除字母。您可以使用以下技巧来实现此效果:
1 Clue with enum that implies hyphens and dashes, but they are suppressed
using trickery (<span>3,2-2,5-3</span>) (15)* Anno here...
请注意,枚举数字包含在 <span> 标记中,这会欺骗 Exolve 不解析它们。之后使用未显示的枚举规范 (15)* 指定条目的长度(但可以作为让 Exolve 知道接下来是纪元的一种方式)。
如果缺少线索,或者提供的线索枚举与网格中线索中的单元格数量(包括任何链接的子线索)不匹配,则会显示一条警告消息。如果异常是故意的而不是疏忽,则可以使用exolve-option: ignore-unclued
和/或exolve-option: ignore-enum-mismatch
来抑制警告生成。如果有任何 nodir 线索,则不会检查丢失的线索;如果有任何无图单元格,则不会检查不匹配的枚举。
您可以在线索中包含提示(在某些线索或所有线索中)。这是通过在线索下方提供一系列行来完成的,每行都带有前缀Hint:
不区分大小写)。每个提示都可以包含 HTML 格式。例子:
exolve-across:
1 Some clue without a hint (9)
5 A clue with two hints (5)
Hint: The <i>first</i> hint!
Hint: The second hint is noticeably longer.
6 A clue with one snarky hint (6)
Hint: Try using your brain for a change?
请注意,这些提示完全独立于下面描述的后显示注释(如果存在)。当提示可用于当前线索且尚未显示所有提示时,线索末尾会显示一个灯泡图标(仅在网格上方,不在线索表中)。单击此图标将显示下一个提示。单击任何提示将再次隐藏所有提示。
Exolve 不会保存有关各种线索显示了多少提示的状态,因此,如果您重新加载拼图,则所有提示都会以未显示的状态重新启动。
在提供解决方案的网格中,设置器可以包括用于解释线索如何工作或提供提示的注释。线索中枚举后面的任何文本都被视为注释。当解算器单击“显示全部”按钮或单击“显示此”按钮(当该线索是当前线索时)时,会显示注释。例子:
exolve-across:
28 Replace bottles containing questionable medicine (7) Def: questionable medicine. Hidden word: (-re)PLACE BO(-ttles).
如果线索未提供其纪元,软件仍会创建一个仅包含解决方案文本的最小纪元(它从网格和枚举中推断出来)。即使提供了 anno,软件也会在其前面添加推断的解决方案文本。这可能意味着,如果在较旧的网格中,解决方案明确包含在纪元中,那么它就会被重复。因此,代码会检查解决方案字符串(尽管有标点符号/标记)是否存在于 anno 的头部,如果存在则避免重复。如果设置者想要以其他方式呈现解决方案,他们可以通过将此行添加到谜题规范来禁止将解决方案自动添加到 anno 中:
exolve-option: no-auto-solution-in-anno
此选项仅禁止将解决方案添加到线索后出现的纪元中。即使使用此选项,在“显示此”时,解决方案仍然会添加到孤立线索的占位符空白槽中。
如果 anno 的前导部分需要是方括号中的内容,例如“... (6) [t]WITTER ...”,那么设置者应该在此之前包含解决方案(即使可以从grid),以避免将前导部分误解为解决方案,例如“... (6) [WITTER] [t]WITTER ...” 或者,他们可以使用一对空方括号来标记线索的结尾,例如“... (6) [] [t]WITTER ...” 如果线索结束位置存在任何歧义(可能是因为多个类似枚举的子字符串)且无法通过提供解决方案来解决,则特殊的“[]”线索结束标记字符串也很有用在方括号中。
以下是一些更复杂的枚举/注释解析示例。
1 This (13) clue ends (word) here! (4)
2 This (13) clue also ends (1 word) here! (4) Some annotation follows.
3 This (13) clue also ends (2 letters) here! (8) [SOLUTION] Some annotation follows.
4 This (13) clue also ends (words) here! (8) [] [t]WITTER The anno has (3) enum-like parts.
5 This is an enum-less and anno-less clue that ends here!
6 This is also an enum-less and anno-less clue that also ends here! (?)*
7 This is also an enum-less but with-anno clue that also ends here! (?)* [] [t]WITTER Here is the anno.
8 This clue, even though its anno contains an enum-like substring, ends here! (4) The (word) and (4 letters) enum-like parts here are not numeric.
9 This clue (13) does not end now (4) as [square brackets do not follow immediately]; it ends here! (4)
您还可以用下划线、不同的样式、颜色、背景等来装饰线索中的子短语,方法是用特殊标记~{
和}~
括住特定的子字符串,如下所示:
28 Replace bottles containing ~{questionable medicine}~ (7) Hidden word: (-re)PLACE BO(-ttles).
此类“线索注释”的默认样式是使用“深绿色”下划线在文本下划线。当解算器单击“显示此”或“显示全部”时,此样式将显示(并且将通过“清除此/全部”清除)。
您可以通过提供 HTML 元素类名称来应用不同的线索注释样式(而不是下划线),如下所示:
28 ~{{xlv-blue}Replace}~ bottles ~{{my-style}containing}~ ~{questionable medicine}~ (7) Hidden word: (-re)PLACE BO(-ttles).
这里,“xlv-blue”是 Exolve 在其 CSS 中设置的类名(其他一些是“xlv-red”、“xlv-yellow-bg”和“xlv-pink-bg”)。但您也可以使用自己的类名(例如上面的“my-style”),并使用您自己的自定义 CSS 规则指定它们的样式。
如果链接的线索包括其他“子线索”,则可以通过将逗号分隔(或 & 分隔)的子线索编号列表附加到父线索编号来指示。例子:
exolve-across:
1, 5, 2d In spite of adverse circumstances (7,3,4)
5 See 1 Across
...
exolve-down:
2 See 1 Across
3 & 7 See neck (4,3)
7 See 3 Down
如上面的示例所示,如果子线索(第一个示例中的 2d)与父线索的方向不同,则可以使用单字母后缀(“a”或“d”或“b”或“u”),或者在 3D 填字游戏中,带有两个字母后缀(“ac”或“aw”或“dn”或“ba”或“to”或“up”)。
链接灯光可以创建两个值得注意的极端情况。 (1) 当一个灯在下一个链接灯开始的同一单元格上结束时,该单元格不会被计数两次。因此,在具有 3 个字母灯 1a 和 2d 链接的 3x3 网格中,其中 2d 开始于与 1a 结束的同一单元格(单元格 r3c3),则链接灯的总长度将为 5 而不是 6。 (2) 如果您链接一系列灯光(包括一些反向灯光),使得链接组的最后一个单元格恰好是其起始单元格,那么该单元格也不会被计数两次。此外,该界面允许您沿着序列循环输入字母(因为对于这个极端情况来说,这似乎是一件有趣的事情)。对于这种蛇吞头循环链接组中的退格(擦除时)单元格,接口在第一个单元格处停止退格。
解决问题时,当光线完全充满时,其线索编号会改变颜色(变为浅蓝色,使未解决的线索编号突出)。当这种情况没有发生时,有一些小例外(无图单元格或其他原因不允许我们确定线索的光何时完全充满)。对于此类线索,求解器可以单击线索编号来手动设置(或取消设置)其“已解决”状态。
正如上一节中提到的,在具有无图方格且不提供解决方案的网格中,如果设置者想要在方格中显示一些线索数字,他们可以通过在前面添加线索来实现(在exolve-across
或 exolve-下部分)与“#<L>”,其中 <L> 是扩展棋盘符号中正方形的位置。示例:
exolve-across:
#a9 15 Imprison and tie perhaps
#c17r42 31 Greeting
这里,线索编号 15 将显示在倒数第 1 列第 9 行的方框中,线索编号 31 将显示在第 17 列第 31 行的方框中。
线索部分(即exolve-across
/ exolve-down
/ exolve-nodir
)中无法解析为线索或提示的任何行都将被视为填充行。它只是显示在线索列表中的该位置。在线索部分的最后一条线索之后放置填充线是错误的。如果需要,填充线可用于划分线索内的部分。例子:
exolve-across:
1 Communication device (5)
7 Greeting (5)
<i>The following entries all begin with B.</i>
9 Unreachable sound in 1 (4,4)
15 Zaphod (10)
线索部分中以 --- 开头的任何行都会启动新线索表的呈现。如果后面有任何文本 --- 那么它将显示为新表的标题。
exolve-across、exolve-down 和 exolve-nodir 部分在拼图规范中出现的顺序就是它们的显示顺序。此外,方向切换也将遵循相同的顺序。因此,如果您在横向和向下线索之前列出 nodir 线索,并且解算器单击当前活动方向上没有光的单元格(例如横向),但同时有 nodir 光和横向光穿过它,nodir 灯将变为活动状态(因为 nodir 线索在规格中的线索之前列出)。
如果您想使用非数字线索标签(例如 A、B、C 等),可以通过将非数字线索标签括在方括号中来实现,如下所示: 示例:
exolve-across:
2 Imprison and tie perhaps (6)
[F] Enjoyable (3)
5 Hitchhiker's accessory (5)
#a12 [G], 4, [H] Fitting reply (3,3,3)
...
对于非数字线索标签,软件不知道线索从哪个单元格开始,除非设置者使用“#xN”前缀明确指定,如上所述并如上面第四个线索示例所示。
线索编号或标签后的尾随句点被视为只是标点符号并被忽略。以下示例中的前五个句点将被忽略。如果您有连续的句点,它们不会被忽略(因为您可能使用省略号)。
2. Clue (4)
3.Ignorance is _____ (5)
4 . Time for every one to end, finally (6)
[Q.]. Hop... (4)
[R] ... aboard! (6)
网格内的横向和向下线索编号是自动从网格推断的,除了两种情况。第一种情况是存在无图单元并且尚未提供解决方案。第二种是在拼图式谜题中,设置者选择通过使用非数字线索标签而不提供其网格位置来故意不提供网格方块和线索之间的关联。当求解器在线索关联未知的情况下输入值时,突出显示的“当前线索”可浏览界面会遍历所有网格单元未知的所有线索。
线索编号可能会受到其他部分中介绍的以下其他因素的影响:
exolve-grid
部分中介绍的“跳过编号”装饰器('~')。exolve-reversals
exolve-3d
如果要创建没有指定横向/向下方向的线索部分,可以使用exolve-nodir
部分,其结构与exolve-across
和exolve-down
相同,但该部分中每个线索的方向是视为未指定。设置者可能希望将此部分与非数字线索标签一起使用。例子:
exolve-nodir:
[P] Direct (5)
[Q] Server spilling one's drink (5)
...
[]中的线索标签也可以是数字(例如[42]),并且还可以使用“#<l>”前缀指定起始单元格(<l>是扩展的棋盘符号中的单元格位置)如上所述。
如果设置器使用没有指定方向的Numen-numeric线索标签或线索,则他们可能还应在exolve-option
部分中使用选项“ hide-ferred-numbers”。或者,他们可以在网格中使用“〜”装饰器使用正常编号跳过单元格。
您可以通过将其放置在exolve-nodir:
exolve-nodir: Alphabetic clues
[P] Direct (5)
[Q] Server spilling one's drink (5)
...
在Nodir线索中,您不仅可以指定起始单元格,还可以使用棋盘符号指定所有单元格。如果这样做,那么单击该线索中的单元格将突出显示并允许进入该线索的所有单元格(Nodir线索中的单元格可以在网格中任意散布)。例子:
exolve-nodir:
#c3 #c5 #c8 #f6 [A] One hundred years lived in prison (4)
请注意,该技术可用于创建多维(例如4-D!)难题:使用Nodir部分沿所有额外的尺寸进行特定的灯,明确指定其单元格。对于3-D填字游戏,Exolve提供了更好,更完整的支持,包括漂亮的3D外观(请参阅exolve-3d
部分)。
如果一个跨/向下的线索开始单元具有装饰器“〜”,则它的正常编号会跳过。如果还有另一个线索是带有非数字标签的跨/下线,并指定了其开始单元格,或者是指定所有单元格的Nodir线索,两个线索的所有单元格是相同的,则线索被合并。为第二个线索指定的标签显示在跳过的单元格中。例如:
exolve-grid:
0~0 0
0 . 0
0~0 0
exolve-across:
#a1 [B] Bottom row (3)
exolve-down:
1 Third column (3)
exolve-nodir:
#a3 #b3 #c3 [Q] Top row [3]
在这里,左上和左下的细胞是跳过数字的细胞。 [B]跨线的[B]与底行灯合并,[Q] Nodir线索与顶行灯合并。第一列中的光是未汇总的。
如果没有明确指定单元格的Nodir线索,或者没有指定启动/单元格的非数字标签的跨/向下线索,则该线索在其旁边显示带有文本入口区域。求解器可以在此处记录其解决方案,直到他们在网格中弄清楚应该输入这些字母的位置。 Solvers可以通过单击占位符区域旁边的“复制区域持有人”按钮(看起来像[⇲])的“复制区域持有人”按钮(如占位符区域时,只要他们有一些正方形以进入网格进入网格的进入时,求解器就可以从这些占位持有人区域传输记录的字母。
您可以迫使占位符空白出现在任何线索之后(不仅是使用上面列出的标准的“孤儿”)。请参阅下一个小节。
占位符条目不会被“清除此/所有”(尽管可以通过单击并删除它们直接删除)清除。要强行清除所有占位符条目,请在网格中没有条目时单击“清除所有”按钮(例如,第二次单击它)。此选项只有在具有这样的占位符条目的难题中,并且在这种难题中,在“清除所有”按钮上显示了一个工具提示,以使用户知道。
同一占位符文本和复制区持有人按钮([[⇲])在可突出显示的滚动滚动“孤儿”线索小部件中显示,每当当前较高的正方形都没有已知的线索关联时。
如果有任何图形单元格(因为通常只有一个图单元格一个单元格),则复制区域持有人按钮功能不会被激活。
可以通过指定exolve-option: hide-copy-placeholder-buttons
禁用复制区域持有人按钮(即根本没有显示)。如果您发现外观分散注意力,或者从占位符中复制的按钮分散注意力,这将很有用,这对于某些其他原因(例如,将灯拆分为零件)。
在此类线索中,在提供解决方案的网格中,可以指示网格中的哪些单元属于线索,以在“显示”和“检查此”中使用。这是通过在方括号中列出空间分隔的线索指数和/或单元格位置的序列来完成的。线索指数可以像12A或12A或13D或13D(必须包括方向,就像在exolve-nina
和exolve-colour
中指定的方式一样)。如果指定序列中使用了任何线索指数,则这些线索本身必须具有已知的一些细胞位置。该清单应在枚举部分之后(如果有的话)出现。示例:
exolve-nodir:
[A] Some clue (5) [1a]
[B] One hundred years lived in prison (4) [2d]
[C] Some other clue ... (?) [3d 4a c4 c5 r5c3] [SOLUTION HERE] Anno...
在上面的最后一个线索中,没有提供枚举。即使软件知道该线索的所有单元格,它也不知道是否有多个单词或连字符。在这种情况下,可以在Anno开头的方括号中提供解决方案。
孤儿线索的推断或提供的解决方案在其占位符中被揭示在“揭示此”和“揭示所有”时。
单独列出的单元格,如果仅凭图(如果没有图表,则将是这种情况),请不要让求解器揭示/检查整个孤儿线索:单个单元格可能是多个线索的一部分。
以这种方式为孤儿线索提供启示有一些微妙的含义。在上面的示例中,通过单击其一个单元格,可以突出显示属于某些孤儿线索的网格(例如1A)的光(例如1A)。线索列表中显示的当前线索将是求解器所看的最后一个孤儿线索,例如B(不同于A)。如果求解器点击“显示此”,则将在网格中显示1a,并且A将在线索列表中突出显示。
如果在网格中单击1a后,说求解器单击线索列表中的线索C,然后单击“显示此”。我们从上一次点击中推断出求解器的意图。在这种情况下,c中的C将被揭示,网格中的突出显示将从1a变为C的正确光。
另一个微妙的观点是,在带有图表单元格的难题中,线索可能已经指定了其一些单元格(前几个),但不是全部。可以通过命名自己并列出其他单元格来揭示其细胞。例如:
15 Imprison and tie perhaps (one word) [15a e9 f9] DETAIN.
还请注意,“揭示所有”并未揭示孤儿 - 网格到网格的关联。但是,即使在“揭示所有内容”之后,求解器也可能通过孤儿线索,对每个线索单击“显示”。
密码中的一个常见诡计是使每个线索都以某种方式产生额外的字母,并从这些字母中产生元字母。 Exolve允许您在每个线索之前添加“提取插槽”列。求解器可以在这些插槽中记录字母/数字(并且这些字母也保存在状态中)。您可以通过指定exolve-option: add-extraction-slots
来做到这一点。默认情况下,如果指定此选项,则添加一个字母插槽。但是,您可以使用可选参数指定插槽中的字母数(例如, exolve-option: add-extraction-slots:3
)。
占位符的空白通常仅在未向求解器提供光线位置的“孤儿”线索前显示。但是,您可以通过一个或多个下划线跟踪任何线索旁边的占位持有人。如果您提供注释,请在注释之前放置Undescorores。
例如,当拼图指令要求对解决方案进行一些修改(例如字母遗漏)之前,这对解决者可能很有用,然后才能将其输入网格。
示例:
exolve-across:
5 This clue will get placeholder blanks (4) _
6 Here we're specifying that there should be 7 blanks, regardless of enum (4) _______
7 The underscores can have intervening spaces and can be followed by annos (8) _ _ _ Some anno.
如果仅放置一个下划线,则使用枚举确定空白的实际显示大小。如果您放置多个下划线,则空白的显示大小将等于您提供的下划线的数量。您可以在这些下划线之间有空间,只是为了帮助您更轻松地计数它们。
占位符空白时,将显示(如浅灰色的“占位符”文本,指示求解器需要输入的提示),枚举所隐含的文本模式,例如“ ??????? ???对于(3,3-3)。您可以通过指定在最后一个下划线后立即在方括号内显示的内容来覆盖此占位符文本。例如:
exolve-down:
3 This will have 8 placeholder blanks showing "??? ??" instead of
"????" (4) _ _ _ _ _ _ _ _ [??? ??] Some anno.
3 For this piece of cake, we customize the placeholder text shown
in the placeholder blank to be "EAT ME" instead of "??? ??" (3,2) _[EAT ME]
占位符空白的长度(可以保留的字母数)将是下划线数量和灰色占位符文本的最大值(来自枚举或从覆盖文本中)。
就像孤儿线索中出现的占位符毛坯一样,这些强制占位持有人的空白也将伴随“复制区域持有人按钮”(看起来[⇲]),除非