setscreen ("Graphics:max;max,offscreenonly")
%%%Variables
var TileSize := 50
var TileRow, TileColumn : int := 20
var file : int
var TileLoc : array 1 .. TileRow, 1 .. TileColumn of int
var mapx, mapy : int := 0
var Scroll_Rate: int := 5
%%pic variables
var pictures: array 1 .. 5 of int
pictures(1):= Pic.FileNew ("Pictures/grass1.bmp")
pictures(2):= Pic.FileNew ("Pictures/grass2.bmp")
pictures(3):= Pic.FileNew ("Pictures/cliff1.bmp")
pictures(4):= Pic.FileNew ("Pictures/mineral1.bmp")
pictures(5):= Pic.FileNew ("Pictures/mineral2.bmp")
for i: 1 .. 5
pictures(i) := Pic.Scale (pictures(i), TileSize, TileSize)
% Pic.Free(pictures(i))
end for
%%Calls the map
open : file, "map1.txt", get
for x : 1 .. upper (TileLoc, 1)
for y : 1 .. upper (TileLoc, 2)
get : file, TileLoc(x, y)
end for
end for
close : file
%%Procs
proc draw_map(leftx, bottomy: int, tile: array 1 .. *, 1 .. * of int)
cls
for x : 1 .. upper (tile, 1)
for y : 1 .. upper (tile, 2)
if tile(x,y) = 0 then %%borders
Draw.FillBox(x*TileSize+leftx, y*TileSize+bottomy, (x+1)*TileSize+leftx, (y+1)*TileSize+bottomy, black)
elsif tile(x,y) = 1 then %%grass
Pic.Draw (pictures(1), x*TileSize+leftx, y*TileSize+bottomy, picCopy)
%Draw.FillBox(x*TileSize+leftx, y*TileSize+bottomy, (x+1)*TileSize+leftx, (y+1)*TileSize+bottomy, green)
elsif tile(x,y) = 2 then %%cliff
Pic.Draw (pictures(3), x*TileSize+leftx, y*TileSize+bottomy, picCopy)
%Draw.FillBox(x*TileSize+leftx, y*TileSize+bottomy, (x+1)*TileSize+leftx, (y+1)*TileSize+bottomy, gray)
elsif tile(x,y) = 9 then %%Minerals
Pic.Draw (pictures(4), x*TileSize+leftx, y*TileSize+bottomy, picCopy)
%Draw.FillBox(x*TileSize+leftx, y*TileSize+bottomy, (x+1)*TileSize+leftx, (y+1)*TileSize+bottomy, blue)
end if
end for
end for
end draw_map
%%Main program
draw_map (-20, -20, TileLoc)
loop
var mx, my, mb : int %%Mouse variables
Mouse.Where(mx, my, mb) %%Detects the mouse
if my >= maxy - 40 then %%moves map up with mouse
mapy -= Scroll_Rate
draw_map(mapx, mapy, TileLoc)
elsif my <= 40 then %%moves map down with mosue
mapy += Scroll_Rate
draw_map(mapx, mapy, TileLoc)
end if
if mx >= maxx - 40 then %%moves map right with mouse
mapx -= Scroll_Rate
draw_map(mapx, mapy, TileLoc)
elsif mx <= 40 then %%moves map left with mouse
mapx += Scroll_Rate
draw_map(mapx, mapy, TileLoc)
end if
View.Update
delay(20)
end loop