aboutsummaryrefslogtreecommitdiff
path: root/game.ads
blob: 67247c88525cea104b2fa250cf1b45e933749a04 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
with Queue;

package Game is

	type T_Position is record
		x: Natural;
		y: Natural;
	end record;

	package P_Position_Queue is new Queue(T_Position);
	use P_Position_Queue;

	type T_Direction is (
		DIRECTION_UP,
		DIRECTION_DOWN,
		DIRECTION_LEFT,
		DIRECTION_RIGHT
	);

	type T_Game is record
		height:    Positive;
		width:     Positive;
		snake:     T_Queue;
		direction: T_Direction;
		food:      T_Position;
	end record;

	procedure Init(game: out T_Game;
		           width: Positive;
				   height: Positive);
	function Next(game: in out T_Game) return Boolean;

private

	procedure Spawn_Food(game: in out T_Game);
	function Next_Head(game: T_Game) return T_Position;
	function In_Border(game: T_Game; pos: T_Position) return Boolean;

end Game;