X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=appendices%2Fc.rst;h=bbd896db84cd3019eb384e5aae164282b7d78e47;hb=e522dbbc6e7b427dca01eaea79d086da08a5dfd2;hp=c82f0b384045ef5a65d8cdee828f1f51206b4bba;hpb=7a7b15f69f40dbe90b71990ab45a59ed60846df1;p=ibg.git diff --git a/appendices/c.rst b/appendices/c.rst index c82f0b3..bbd896d 100644 --- a/appendices/c.rst +++ b/appendices/c.rst @@ -1,25 +1,17 @@ -.. raw:: latex - - \newpage - ====================================== Appendix C -- "William Tell" story ====================================== +.. highlight:: transcript .. only:: html .. image:: /images/picW.png :align: left -.. raw:: latex - - \dropcap{w} - -illiam Tell, our second game, is also very straightforward. See "William -Tell: a tale is born" on page 69, "William Tell: the early years" on -page 79, "William Tell: in his prime" on page 91 and "William Tell: the -end is nigh" on page 103. +|W|\illiam Tell, our second game, is also very straightforward. See +:doc:`/chapters/06`, :doc:`/chapters/07`, :doc:`/chapters/08` and +:doc:`/chapters/09`. Transcript of play ================== @@ -33,6 +25,8 @@ Game source code .. literalinclude:: /examples/Tell.inf :language: inform6 +.. _compile-as-you-go: + Compile-as-you-go ================= @@ -65,7 +59,9 @@ reached by the end of Chapter 6, you’ll get this:: Tell.inf(47): Error: No such constant as "quiver" Compiled with 3 errors and 3 warnings -However, by adding these lines to the end of your game file:: +However, by adding these lines to the end of your game file: + +.. code-block:: inform ! =============================================================== ! TEMPORARY DEFINITIONS NEEDED TO COMPILE AT THE END OF CHAPTER 6 @@ -97,14 +93,20 @@ you do, though, you'll get this:: ** The room "(street)" has no "description" property ** > +.. Generated by autoindex +.. index:: + pair: description; library property + Whoops! We've fallen foul of Inform's rule saying that every room must -have a ``description`` property, to be displayed by the interpreter when -you enter that room. Our ``street`` stub hasn't got a ``description``, +have a :prop:`description` property, to be displayed by the interpreter when +you enter that room. Our ``street`` stub hasn't got a :prop:`description`, so although the game compiles successfully, it still causes an error to be reported at run-time. The best way round this is to extend the definition of our ``Room`` -class, thus:: +class, thus: + +.. code-block:: inform Class Room with description "UNDER CONSTRUCTION", @@ -113,7 +115,7 @@ class, thus:: By doing this, we ensure that *every* room has a description of some form; normally we'd override this default value with something meaningful -- "The narrow street runs north towards the town square..." -and so on -- by including a ``description`` property in the object's +and so on -- by including a :prop:`description` property in the object's definition. However, in a stub object used only for testing, a default description is sufficient (and less trouble):: @@ -135,12 +137,16 @@ description is sufficient (and less trouble):: > +.. Generated by autoindex +.. index:: + pair: name; library property + You'll notice a couple of interesting points. Because we didn't supply external names with our ``street`` , ``bow`` and ``quiver`` stubs, the compiler has provided some for us -- ``(street)`` , ``(bow)`` and ``(quiver)`` -- simply by adding parentheses around the internal IDs which we used. And, because our ``bow`` and ``quiver`` stubs have no -``name`` properties, we can't actually refer to those objects when +:prop:`name` properties, we can't actually refer to those objects when playing the game. Neither of these points would be acceptable in a finished game, but for testing purposes at this early stage -- they'll do. @@ -151,7 +157,9 @@ the end of Chapter 6. But once we reach the end of Chapter 7, things have moved on, and we now need a different set of stub objects. For a test compilation at this point, remove the previous set of stubs, and instead add these -- ``south_square`` and ``apple`` objects, and a dummy -action handler to satisfy the ``Talk`` action in Helga’s life property:: +action handler to satisfy the ``Talk`` action in Helga’s life property: + +.. code-block:: inform ! =============================================================== ! TEMPORARY DEFINITIONS NEEDED TO COMPILE AT THE END OF CHAPTER 7 @@ -162,7 +170,9 @@ action handler to satisfy the ``Talk`` action in Helga’s life property:: [ TalkSub; ]; Similarly, at the end of Chapter 8, replace the previous stubs by these -if you wish to check that the game compiles:: +if you wish to check that the game compiles: + +.. code-block:: inform ! =============================================================== ! TEMPORARY DEFINITIONS NEEDED TO COMPILE AT THE END OF CHAPTER 8