All pastes #28294 Raw Edit

Something

public text v1 · immutable
#28294 ·published 2005-11-10 22:09 UTC
rendered paste body
View.Set ("graphics:max,max")

% Declare the terrain constants
const NORMAL := 1
const GRASS := 2
const FOREST := 3
const MOUNTAIN := 4
const ROAD := 5
const SHALLOW := 6
const WATER := 7
const SHORE := 8

var terrainTypes : array 1 .. 8 of int := init (49, 48, 2, 66, 15, 53, 55, 91)
var map : array 1 .. 100, 1 .. 100 of int
var mx, my, mb, terrType : int := 1

proc initializeMap
    for i : 1 .. 100
        for j : 1 .. 100
            map (i, j) := 2
        end for
    end for
end initializeMap

proc initializeEditor
    for i : 1 .. 2
        for j : 1 .. 4
            if i = 1 then
                drawfillbox (25 + (i * 25), 100 + (j * 25), 50 + (i * 25), 125 + (j * 25), terrainTypes (j))
            else
                drawfillbox (25 + (i * 25), 100 + (j * 25), 50 + (i * 25), 125 + (j * 25), terrainTypes (4 + j))
            end if
        end for
    end for
end initializeEditor

proc changeTerrType (mx, my, terrType : int)
    map ((mx - 100) div 16, (my - 100) div 16) := terrType
end changeTerrType

proc drawMap
    for i : 1 .. 40
        for j : 1 .. 40
            drawfillbox (100 + i * 16, 100 + j * 16, 100 + i * 16 + 16, 100 + j * 16 + 16, terrainTypes (map (i, j)))
        end for
    end for
end drawMap

initializeMap
initializeEditor
drawMap

loop
    mousewhere (mx, my, mb)
    locate (1, 1)
    put mx, " ", my
    locate (1, 10)
    put terrType
    if mx > 50 and my > 125 and mx < 100 and my < 225 and mb = 1 then
        if mx < 75 then
            terrType := 1 + (my - 125) div 25
        else
            terrType := 5 + ((my - 125) div 25)
        end if
    end if
    if mx > 116 and my > 115 and mx < 758 and my < 756 and mb = 1 then
        changeTerrType (mx, my, terrType)
        drawMap
    end if
end loop