Free Hero Mesh class definition file
(Mention the character encoding of this file) |
|||
| (One intermediate revision by one user not shown) | |||
| Line 6: | Line 6: | ||
[[Category:Programming Languages]] | [[Category:Programming Languages]] | ||
| − | A Free Hero Mesh puzzle set consists of four files; this article is about the .class file, which contains the program codes implementing the rules of the game. | + | A [[Free Hero Mesh]] puzzle set consists of four files; this article is about the .class file, which contains the program codes implementing the rules of the game. |
This file is a plain text file, with a somewhat [[Lisp]]-like format, describing the classes of objects, their attributes, and the code to implement their behaviours; however, the code implementing behaviours is stack-based, like [[Forth]] or [[PostScript]]. It also includes a macro preprocessor. | This file is a plain text file, with a somewhat [[Lisp]]-like format, describing the classes of objects, their attributes, and the code to implement their behaviours; however, the code implementing behaviours is stack-based, like [[Forth]] or [[PostScript]]. It also includes a macro preprocessor. | ||
The character encoding is normally the PC character encoding ([[CP437]]); however, it is possible to declare the use of other IBM PC code pages other than 437 as well (see [[MS-DOS encodings]]). The <code>(CodePage)</code> block specifies the number of the code page to use; if it is omitted, then 437 is assumed by default. | The character encoding is normally the PC character encoding ([[CP437]]); however, it is possible to declare the use of other IBM PC code pages other than 437 as well (see [[MS-DOS encodings]]). The <code>(CodePage)</code> block specifies the number of the code page to use; if it is omitted, then 437 is assumed by default. | ||
| + | |||
| + | ===Example=== | ||
| + | <pre><nowiki> | ||
| + | ; Example sokoban code in Free Hero Mesh (public domain) | ||
| + | |||
| + | ($Player | ||
| + | (Image "PLAYER") | ||
| + | Player | ||
| + | Input | ||
| + | (Strength 1) | ||
| + | ('RIGHT E Move) | ||
| + | ('UP N Move) | ||
| + | ('LEFT W Move) | ||
| + | ('DOWN S Move) | ||
| + | (BEGIN_TURN $Box #TEST 0 0 BroadcastSum lnot if WinLevel then) | ||
| + | ) | ||
| + | |||
| + | ($Floor | ||
| + | (Image "FLOOR") | ||
| + | (Density 1) | ||
| + | ) | ||
| + | |||
| + | ($Box | ||
| + | (Image "BOX") | ||
| + | Shovable | ||
| + | (Weight 1) | ||
| + | (Height 1) | ||
| + | (#TEST $Target Loc ObjClassAt lnot) | ||
| + | ) | ||
| + | |||
| + | ($Target | ||
| + | (Image "TARGET") | ||
| + | (Density -1) | ||
| + | ) | ||
| + | </nowiki></pre> | ||
Latest revision as of 21:07, 22 October 2021
A Free Hero Mesh puzzle set consists of four files; this article is about the .class file, which contains the program codes implementing the rules of the game.
This file is a plain text file, with a somewhat Lisp-like format, describing the classes of objects, their attributes, and the code to implement their behaviours; however, the code implementing behaviours is stack-based, like Forth or PostScript. It also includes a macro preprocessor.
The character encoding is normally the PC character encoding (CP437); however, it is possible to declare the use of other IBM PC code pages other than 437 as well (see MS-DOS encodings). The (CodePage) block specifies the number of the code page to use; if it is omitted, then 437 is assumed by default.
[edit] Example
; Example sokoban code in Free Hero Mesh (public domain)
($Player
(Image "PLAYER")
Player
Input
(Strength 1)
('RIGHT E Move)
('UP N Move)
('LEFT W Move)
('DOWN S Move)
(BEGIN_TURN $Box #TEST 0 0 BroadcastSum lnot if WinLevel then)
)
($Floor
(Image "FLOOR")
(Density 1)
)
($Box
(Image "BOX")
Shovable
(Weight 1)
(Height 1)
(#TEST $Target Loc ObjClassAt lnot)
)
($Target
(Image "TARGET")
(Density -1)
)