Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- declare sub LoadTiles()
- declare sub LoadMap()
- declare sub Init()
- declare sub DrawScreen()
- #define KeyLeft &h4B
- #define KeyRight &h4D
- #define KeyUp &h48
- #define KeyDown &h50
- #define KeyEsc &h01
- type EngineType
- CameraX as integer
- CameraY as integer
- MaxCameraX as integer
- MaxCameraY as integer
- ScreenX as integer
- ScreenY as integer
- TileWidth as integer
- TileHeight as integer
- MapX as integer
- MapY as integer
- end type
- dim shared as any ptr Wall, Grass
- dim shared Map(19, 19) as integer
- dim shared Engine as EngineType
- screen 14, 32
- Init
- LoadTiles
- LoadMap
- DrawScreen
- do
- if multikey(KeyUp) then
- if Engine.CameraY > 0 then
- Engine.CameraY = Engine.CameraY - 1
- DrawScreen
- end if
- elseif multikey(KeyRight) then
- if Engine.CameraX < Engine.ScreenX then
- Engine.CameraX = Engine.CameraX + 1
- DrawScreen
- end if
- elseif multikey(KeyDown) then
- if Engine.CameraY < Engine.ScreenY then
- Engine.CameraY = Engine.CameraY + 1
- DrawScreen
- end if
- elseif multikey(KeyLeft) then
- if Engine.CameraX > 0 then
- Engine.CameraX = Engine.CameraX - 1
- DrawScreen
- end if
- elseif multikey(KeyEsc) then
- end
- endif
- loop until inkey$ = "q"
- '---------------------------------------------------------------------
- '----SUBS-------------------------------------------------------------
- '---------------------------------------------------------------------
- sub DrawScreen()
- cls
- if Engine.CameraX < 0 then Engine.CameraX = 0
- if Engine.CameraY < 0 then Engine.CameraY = 0
- if Engine.CameraX > Engine.MaxCameraX then Engine.CameraX = Engine.MaxCameraX
- if Engine.CameraY > Engine.MaxCameraY then Engine.CameraY = Engine.MaxCameraY
- xTile = Engine.CameraX \ 32
- yTile = Engine.CameraY \ 32
- xOffset = Engine.CameraX mod 32
- yOffset = Engine.CameraY mod 32
- for x = 0 to Engine.ScreenX \ 32 + 1
- for y = 0 to Engine.ScreenY \ 32 + 1
- Tile = map (x + xTile, y + yTile)
- if Tile = 0 then
- put (x * 32 - xOffset, y * 32 - yOffset), Wall
- elseif Tile = 1 then
- put (x * 32 - xOffset, y * 32 - yOffset), Grass
- end if
- next y
- next x
- sleep 5
- end sub
- sub Init()
- screeninfo Engine.ScreenX, Engine.ScreenY
- Engine.TileWidth = 32
- Engine.TileHeight = 32
- Engine.MapX = 20
- Engine.MapY = 20
- Engine.MaxCameraX = Engine.TileWidth * Engine.MapX - Engine.ScreenX
- Engine.MaxCameraY = Engine.TileWidth * Engine.MapY - Engine.ScreenY
- end sub
- sub LoadTiles()
- Wall = imagecreate(32, 32)
- Grass = imagecreate(32, 32)
- bload "wall.bmp", Wall
- bload "grass.bmp", Grass
- end sub
- sub LoadMap()
- for y = 0 to 19
- for x = 0 to 19
- read Map(x, y)
- next x
- next y
- end sub
- data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
- data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
- data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
- data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
- data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
- data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
- data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
- data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
- data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
- data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
- data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
- data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
- data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
- data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
- data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
- data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
- data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
- data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
- data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
- data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
- data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement