setscreen ("nobuttonbar, offscreenonly,graphics:max;max")
var TileSprite : int := Pic.FileNew ("tiles.bmp")
Pic.Draw (TileSprite, 0, 0, 0)
var Map, mx, my, mb : int
var Tiles : array 1 .. 40 of int
var Grid : array 1 .. 100, 1 .. 100 of int
var strLine : array 1 .. 100 of string
var key : array char of boolean
var file, maxD : int
var n, k, t : int := 1
var scrollX, scrollY : int := 0
var Ex : boolean := false
proc ReadTiles
for j : 0 .. 9
for i : 1 .. 4
Tiles ((j * 4) + i) := Pic.New (((i - 1) * 65) + 1, (j * 33) + 1, ((i - 1) * 65) + 64, (j * 33) + 32)
end for
end for
end ReadTiles
proc ReadMap
open : file, "testmap.txt", get
get : file, maxD
for j : 1 .. maxD
get : file, strLine (j)
end for
close : file
t := maxD
loop
exit when n > maxD
loop
exit when k > 3 * maxD
if strLine (n) (k) = "|" then;
Grid (n, t) := strint (strLine (n) (k + 1) + strLine (n) (k + 2));
t -= 1;
end if
k += 1
end loop
n += 1
k := 1
t := maxD
end loop
end ReadMap
proc DrawMap
drawfillbox (0, 0, maxx, maxy, 7)
for j : 1 .. maxD
for i : 1 .. maxD
Pic.Draw (Tiles (Grid (i, j)), (maxx div 2) - 33 + (i * 33) - ((j - 1) * 33) + scrollX, ((maxy div 2) + (maxD * 16)) - (i * 16) - ((j - 1) * 16) + scrollY, picMerge)
end for
end for
Map := Pic.New ((maxx div 2) - (maxD * 33) + 32, (maxy div 2) - (maxD * 16) + 16, (maxx div 2) + (maxD * 33) + 31, (maxy div 2) + (maxD * 16) + 16)
end DrawMap
proc Walk
Input.KeyDown (key)
Mouse.Where (mx, my, mb)
if my > maxy - 30 then
scrollY -= 5
end if
if my < 30 then
scrollY += 5
end if
if mx > maxx - 30 then
scrollX -= 5
end if
if mx < 30 then
scrollX += 5
end if
if key (KEY_ESC) then
Ex := true
end if
end Walk
ReadTiles
ReadMap
DrawMap
loop
Walk
drawfillbox (0, 0, maxx, maxy, 7)
Pic.Draw (Map, (maxx div 2) - (Pic.Width (Map) div 2) + scrollX, (maxy div 2) - (Pic.Height (Map) div 2) + scrollY, 0)
View.Update
exit when Ex = true
delay (10)
end loop
|