procedure MAZE_WAR is clear_screen : constant integer := 26; maze : array (1..14) of string(1..55); -- the maze itself user_symbol : constant character := '^'; x_pos : integer; y_pos : integer; treasure : boolean; t_x_pos : integer; t_y_pos : integer; score : integer; timer : integer; timer2 : integer; guards : array(1..4,1..3) of integer; next_guard : integer := 1; game : boolean := true; procedure POSITION_CURSOR(x,y : integer) is begin put(character'val(27)); -- escape put('='); -- = put(character'val(y+31)); -- Y put(character'val(x+31)); -- X end POSITION_CURSOR; function RAND(A : integer) return integer is function truncate(A : float) return integer is B : integer := integer(A); begin if float(B) > A then return B - 1; else return B; end if; end truncate; begin return truncate(rnd(0.0) * float(A)) + 1; end RAND; procedure WRITELN(input : string) is begin put(input); new_line; end WRITELN; procedure PRINT_MAZE is begin put(character'val(clear_screen)); for i in 1..14 loop writeln(maze(i)); end loop; put("Score: Time: "); end PRINT_MAZE; procedure ADD_SCORE(delt : integer) is begin score := score + delt; position_cursor(8,15); put(score); position_cursor(1,16); end ADD_SCORE; procedure DISPLAY(symbol : character; x,y : integer) is begin position_cursor(x,y); put(symbol); position_cursor(1,16); -- return cursor to prompt input end DISPLAY; procedure LOSE_TREASURE is begin maze(t_y_pos)(t_x_pos) := ' '; display(' ',t_x_pos,t_y_pos); t_x_pos := 2; t_y_pos := 2; treasure := false; end LOSE_TREASURE; procedure INITIALIZE is begin maze(1):="*******************************************************"; maze(2):="*