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
 
  |