X-Git-Url: https://jxself.org/git/?p=ibg.git;a=blobdiff_plain;f=chapters%2F09.rst;h=f6a50a1796499016c364888fef2a333079c754d0;hp=6ce9f60e6c56d6eebd97d9f66eceaa759cc2a328;hb=fd8f547191457928785b8bc38570b05205f369ac;hpb=c215b0eb1ec6783f979c336a5823bf4e4d0f4bf5 diff --git a/chapters/09.rst b/chapters/09.rst index 6ce9f60..f6a50a1 100644 --- a/chapters/09.rst +++ b/chapters/09.rst @@ -2,7 +2,7 @@ William Tell: the end is nigh =============================== -.. highlight:: inform6 +.. highlight:: inform .. epigraph:: @@ -67,6 +67,8 @@ a complex test, and one that we'll be making in several places, it's sensible to write a routine to do the job. Which we'll do shortly -- but first, a general introduction to working with routines. +.. _working-with-routines: + A diversion: working with routines ================================== @@ -158,7 +160,7 @@ of the variable -- ``self`` or ``location`` -- which is being checked. A better approach might be to rework our ``BeenHereBefore`` routine so that it does both jobs, but we somehow need to tell it which variable's value is to be checked. That's easy: we design the routine so that it expects an -**argument**:: +:term:`argument`:: [ BeenToBefore this_room; if (this_room has visited) return true; @@ -180,7 +182,7 @@ routine doesn't care where the argument came from; it just sees a value which it knows as ``this_room``, and which it then uses to test for the ``visited`` attribute. On the second line we supply ``location`` as the argument, but the routine just sees another value in its ``this_room`` -variable. ``this_room`` is called a **local variable** of the +variable. ``this_room`` is called a :term:`local variable` of the ``BeenToBefore`` routine, one that must be set to a suitable value each time that the routine is called. In this example routine, the value needs to be a room object; we could also check an explicit named room:: @@ -198,9 +200,9 @@ Remember that: ``rfalse`` statement, or by the the ``]`` marking the routine's end (in which case the default STEF rule applies: Standalone routines return True, Embedded routines return False). We gave this example of an - embedded routine in "Adding some props" on page 81. The ``return - false`` statement is redundant: we could remove it without affecting the - routine's behaviour, because the ``]`` acts like a ``return false``:: + embedded routine in :ref:`adding-props`. The ``return false`` statement + is redundant: we could remove it without affecting the routine's + behaviour, because the ``]`` acts like a ``return false``:: found_in [; if (location == street or below_square or south_square or @@ -231,8 +233,8 @@ Return value is important Return value doesn't matter ========================= =========================== For full details on which library property values can be embedded routines, -and which return values are significant, see "Object properties" on page -266 and Appendix §A2 of the *Inform Designer's Manual*. +and which return values are significant, see :ref:`object-props` and +:dm4:`Appendix §A2 ` of the |DM4|. Return to the marketplace ========================= @@ -481,6 +483,8 @@ And with that, we've defined all of the objects. In doing so, we've added a whole load of new nouns and adjectives to the game's dictionary, but no verbs. That's the final task. +.. _verbs: + Verbs, verbs, verbs =================== @@ -862,5 +866,5 @@ falling back on the embarrassing silences implied by "You can't think of anything to say". That's the end of our little fable; you'll find a transcript and the full -source in "William Tell" story on page 219. And now, it's time to meet -- -Captain Fate! +source in :doc:`/appendices/c`. And now, it's time to meet -- Captain +Fate!