path: root/apps/plugins/puzzles/help/blackbox.c
diff options
authorFranklin Wei <>2017-06-03 13:45:07 -0400
committerFranklin Wei <>2017-06-03 13:45:07 -0400
commit552a271c6fea8d36390858ca6d12c4c98f663002 (patch)
tree046ea6cdc0cbadae014715c02af6ada4e966a92c /apps/plugins/puzzles/help/blackbox.c
parentcefbde0bbb5f90523233a56ca6c0b0699b4b359e (diff)
puzzles: remove redundant help content
It used to be that each puzzle had a complete copy of the entire puzzles manual and the "quick help" text for every single puzzle. This was obviously a waste, so now each puzzle only has the sections of the manual that apply to it, saving about 100KB or so per puzzle. This also has the added benefit of shrinking binary size enough to allow full help support on the c200v2, which has been enabled. Change-Id: I76c799635de058e4a48e0c18b79537857af7cf85
Diffstat (limited to 'apps/plugins/puzzles/help/blackbox.c')
1 files changed, 150 insertions, 0 deletions
diff --git a/apps/plugins/puzzles/help/blackbox.c b/apps/plugins/puzzles/help/blackbox.c
new file mode 100644
index 0000000000..359dd61220
--- /dev/null
+++ b/apps/plugins/puzzles/help/blackbox.c
@@ -0,0 +1,150 @@
+/* auto-generated by */
+/* DO NOT EDIT! */
+const char help_text[] =
+"#Chapter 19: Black Box "
+"A number of balls are hidden in a rectangular arena. You have to "
+"deduce the positions of the balls by firing lasers positioned at the "
+"edges of the arena and observing how their beams are deflected. "
+"Beams will travel straight from their origin until they hit the "
+"opposite side of the arena (at which point they emerge), unless "
+"affected by balls in one of the following ways: "
+"- A beam that hits a ball head-on is absorbed and will never re-\n"
+"emerge. This includes beams that meet a ball on the first rank "
+"of the arena. "
+"- A beam with a ball in its front-left square and no ball ahead of "
+"it gets deflected 90 degrees to the right. "
+"- A beam with a ball in its front-right square and no ball ahead "
+"of it gets similarly deflected to the left. "
+"- A beam that would re-emerge from its entry location is "
+"considered to be `reflected'. "
+"- A beam which would get deflected before entering the arena by a "
+"ball to the front-left or front-right of its entry point is also "
+"considered to be `reflected'. "
+"Beams that are reflected appear as a `R'; beams that hit balls head-\n"
+"on appear as `H'. Otherwise, a number appears at the firing point "
+"and the location where the beam emerges (this number is unique to "
+"that shot). "
+"You can place guesses as to the location of the balls, based on the "
+"entry and exit patterns of the beams; once you have placed enough "
+"balls a button appears enabling you to have your guesses checked. "
+"Here is a diagram showing how the positions of balls can create each "
+"of the beam behaviours shown above: "
+"As shown, it is possible for a beam to receive multiple reflections "
+"before re-emerging (see turn 3). Similarly, a beam may be reflected "
+"(possibly more than once) before receiving a hit (the `H' on the "
+"left side of the example). "
+"Note that any layout with more than 4 balls may have a non-unique "
+"solution. The following diagram illustrates this; if you know the "
+"board contains 5 balls, it is impossible to determine where the "
+"fifth ball is (possible positions marked with an x): "
+"For this reason, when you have your guesses checked, the game "
+"will check that your solution _produces the same results_ as the "
+"computer's, rather than that your solution is identical to the "
+"computer's. So in the above example, you could put the fifth ball at "
+"_any_ of the locations marked with an x, and you would still win. "
+"Black Box was contributed to this collection by James Harvey. "
+"\n#19.1 Black Box controls "
+"To fire a laser beam, left-click in a square around the edge of "
+"the arena. The results will be displayed immediately. Clicking or "
+"holding the left button on one of these squares will highlight the "
+"current go (or a previous go) to confirm the exit point for that "
+"laser, if applicable. "
+"To guess the location of a ball, left-click within the arena and a "
+"black circle will appear marking the guess; click again to remove "
+"the guessed ball. "
+"Locations in the arena may be locked against modification by right-\n"
+"clicking; whole rows and columns may be similarly locked by right-\n"
+"clicking in the laser square above/below that column, or to the "
+"left/right of that row. "
+"The cursor keys may also be used to move around the grid. Pressing "
+"the Enter key will fire a laser or add a new ball-location guess, "
+"and pressing Space will lock a cell, row, or column. "
+"When an appropriate number of balls have been guessed, a button will "
+"appear at the top-left corner of the grid; clicking that (with mouse "
+"or cursor) will check your guesses. "
+"If you click the `check' button and your guesses are not correct, "
+"the game will show you the minimum information necessary to "
+"demonstrate this to you, so you can try again. If your ball "
+"positions are not consistent with the beam paths you already know "
+"about, one beam path will be circled to indicate that it proves you "
+"wrong. If your positions match all the existing beam paths but are "
+"still wrong, one new beam path will be revealed (written in red) "
+"which is not consistent with your current guesses. "
+"If you decide to give up completely, you can select Solve to reveal "
+"the actual ball positions. At this point, correctly-placed balls "
+"will be displayed as filled black circles, incorrectly-placed balls "
+"as filled black circles with red crosses, and missing balls as "
+"filled red circles. In addition, a red circle marks any laser you "
+"had already fired which is not consistent with your ball layout "
+"(just as when you press the `check' button), and red text marks "
+"any laser you _could_ have fired in order to distinguish your ball "
+"layout from the correct one. "
+"(All the actions described in section 2.1 are also available.) "
+"\n#19.2 Black Box parameters "
+"These parameters are available from the `Custom...' option on the "
+"`Type' menu. "
+"_Width_, _Height_ "
+"Size of grid in squares. There are 2 x _Width_ x _Height_ lasers "
+"per grid, two per row and two per column. "
+"_No. of balls_ "
+"Number of balls to place in the grid. This can be a single "
+"number, or a range (separated with a hyphen, like `2-6'), "
+"and determines the number of balls to place on the grid. "
+"The `reveal' button is only enabled if you have guessed an "
+"appropriate number of balls; a guess using a different number "
+"to the original solution is still acceptable, if all the beam "
+"inputs and outputs match. "
+const char quick_help_text[] = "Find the hidden balls in the box by bouncing laser beams off them.";