Label

From Wiki of ZZT
Revision as of 07:56, 1 March 2026 by Asie (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Lines of ZZT-OOP beginning with a colon : are labels.

Labels allow associating a specific location in the object's code with a specific message. The object will move program execution to such a location in the following two cases:

  • when explicitly requested by an object, including a different object, using #send;
  • when the game engine causes one of the built-in messages to be sent to the object.

Labels should consist of Latin alphabet letters (A - Z) and underscores. They are not case sensitive - TOUCH , Touch and touch refer to the same message.

The first occurrence of a label in the code is always used as the destination. To allow using additional occurrences of a label, labels can be zapped, where they act as comments and will be ignored by #send - for example, 'shot is the zapped form of the :shot label.

Bugs/Quirks

  • Labels must not be placed on the first line of an object's code; such a label will be ignored.
  • Only characters A, B, C, ..., Y, Z, _ are handled fully correctly by labels. This has some interesting side effects:
    • Numbers 0, 1, ..., 9 can be used as part of a #send or #zap argument; however, any additional numbers at the end of a given label will be ignored.
      • For example, the message touch will match the label :touch as well as the labels :touch1 and :touché, but not the labels :toucha or :touch_1.
      • Similarly, the message only1 will match the label :only1, as well as :only11 and :only12.
      • Notably, this rule does not apply for the #restore command for the second and additional label occurrences, where an exact string match is required.
    • Non-alphanumeric characters, such as é, will be ignored just like numbers, but cannot be used as part of a #send, #zap and #restone argument.
      • For example, while you can define a label :touché, #send touché is parsed as #send touch.