🕸Fergus Duniho wrote on Sun, Jan 26, 2003 10:03 PM UTC:
Let's see what I can do about the Rhino.
Single-step Rhino: O?T
Sliding Rhino: (O?T)*
Mirror Rhino: D?T
Sliding Mirror Rhino: (D?T)*
Double Rhino: ((O|D)?T)*
Monster: ((O|D)?T)*|(O|D)*
The ? works differently than F. While F unconditionally and non-optionally
moves in the last direction moved, ? adds an optional continuation of the
whole move that repeats the last move made, and, by default, it adds it
only when the current space is empty.
For example, O??? describes the movement of a Short Rook, one which can
move no further than four spaces. It is the equivalent of
(O|OeF|OeFeF|OeFeFeF). In contrast, OFFF describes a piece that leaps four
spaces in any orthogonal direction.
Let me add some comments on the system I have designed. I call it Piece
Code, and its purpose is twofold. One is to provide a clear and concise
way to express how a piece moves to a human reader. The other is to serve
as a macro programming language for describing piece moves in short
strings, which may eventually be incorporated into the PBM to check the
legality of moves. Unlike Betza's funny notation, it does not share the purpose of serving as notation for identifying pieces.