1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- MODULE GameEngine;
- IMPORT G := Graph, Random, Out, Strings;
- CONST
- maxMapW* = 128;
- maxMapH* = maxMapW;
- cellW* = 16;
- cellH* = cellW;
- tilesInRow* = 8;
- TYPE
- Cell* = RECORD (** A single cell of the map *)
- kind*: INTEGER
- END;
- Map* = RECORD
- w*, h*: INTEGER;
- cells*: ARRAY maxMapH, maxMapW OF Cell
- END;
- Game* = RECORD
- map*: Map
- END;
- VAR
- tiles*: G.Bitmap;
- PROCEDURE MakeRandomMap*(VAR map: Map; w, h: INTEGER);
- VAR x, y: INTEGER;
- BEGIN
- map.w := w; map.h := h;
- FOR y := 0 TO h - 1 DO
- FOR x := 0 TO w - 1 DO
- map.cells[y, x].kind := Random.Int(4)
- END
- END
- END MakeRandomMap;
- PROCEDURE LoadMap*(VAR map: Map; fname: ARRAY OF CHAR): BOOLEAN;
- BEGIN
- RETURN TRUE END LoadMap;
- PROCEDURE SaveMap*(VAR map: Map; fname: ARRAY OF CHAR);
- BEGIN
- END SaveMap;
- (** Returns a bitmap with the given name (appends strings to make a file name).
- On error sets ok to FALSE and ouputs an error message.
- Never sets ok to TRUE. *)
- PROCEDURE LoadBitmap(name: ARRAY OF CHAR; VAR ok: BOOLEAN): G.Bitmap;
- VAR bmp: G.Bitmap;
- s: ARRAY 256 OF CHAR;
- BEGIN
- s := 'Data/Graph/';
- Strings.Append(name, s);
- Strings.Append('.png', s);
- bmp := G.LoadBitmap(s);
- IF bmp = NIL THEN
- ok := FALSE;
- Out.String('Error: Could not load bitmap "');
- Out.String(s); Out.String('".'); Out.Ln
- END
- RETURN bmp END LoadBitmap;
- PROCEDURE InitGame*(VAR game: Game);
- BEGIN
- MakeRandomMap(game.map, 96, 96)
- END InitGame;
- PROCEDURE Init*(): BOOLEAN;
- VAR ok: BOOLEAN;
- BEGIN ok := TRUE;
- tiles := LoadBitmap('tiles', ok)
- RETURN ok END Init;
- END GameEngine.
|