| 
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
 
 |