Advertisement
Guest User

Untitled

a guest
Dec 6th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. declare sub LoadTiles()
  2. declare sub LoadMap()
  3. declare sub Init()
  4. declare sub DrawScreen()
  5.  
  6. #define KeyLeft &h4B
  7. #define KeyRight &h4D
  8. #define KeyUp &h48
  9. #define KeyDown &h50
  10. #define KeyEsc &h01
  11.  
  12. type EngineType
  13.     CameraX     as integer
  14.     CameraY     as integer
  15.     MaxCameraX  as integer
  16.     MaxCameraY  as integer
  17.     ScreenX     as integer
  18.     ScreenY     as integer
  19.     TileWidth   as integer
  20.     TileHeight  as integer
  21.     MapX        as integer
  22.     MapY        as integer
  23. end type
  24.  
  25. dim shared as any ptr Wall, Grass
  26. dim shared Map(19, 19) as integer
  27. dim shared Engine as EngineType
  28.  
  29. screen 14, 32
  30.  
  31. Init
  32. LoadTiles
  33. LoadMap
  34. DrawScreen
  35.  
  36. do
  37.     if multikey(KeyUp) then
  38.         if Engine.CameraY > 0 then
  39.             Engine.CameraY = Engine.CameraY - 1
  40.             DrawScreen
  41.         end if
  42.     elseif multikey(KeyRight) then
  43.         if Engine.CameraX < Engine.ScreenX then
  44.             Engine.CameraX = Engine.CameraX + 1
  45.             DrawScreen
  46.         end if
  47.     elseif multikey(KeyDown) then
  48.         if Engine.CameraY < Engine.ScreenY then
  49.             Engine.CameraY = Engine.CameraY + 1
  50.             DrawScreen
  51.         end if
  52.     elseif multikey(KeyLeft) then
  53.         if Engine.CameraX > 0 then
  54.             Engine.CameraX = Engine.CameraX - 1
  55.             DrawScreen
  56.         end if
  57.     elseif multikey(KeyEsc) then
  58.         end
  59.     endif
  60. loop until inkey$ = "q"
  61.  
  62.  
  63. '---------------------------------------------------------------------
  64. '----SUBS-------------------------------------------------------------
  65. '---------------------------------------------------------------------
  66. sub DrawScreen()
  67.     cls
  68.     if Engine.CameraX < 0 then Engine.CameraX = 0
  69.     if Engine.CameraY < 0 then Engine.CameraY = 0
  70.     if Engine.CameraX > Engine.MaxCameraX then Engine.CameraX = Engine.MaxCameraX
  71.     if Engine.CameraY > Engine.MaxCameraY then Engine.CameraY = Engine.MaxCameraY
  72.    
  73.     xTile = Engine.CameraX \ 32
  74.     yTile = Engine.CameraY \ 32
  75.     xOffset = Engine.CameraX mod 32
  76.     yOffset = Engine.CameraY mod 32
  77.    
  78.     for x = 0 to Engine.ScreenX \ 32 + 1
  79.         for y = 0 to Engine.ScreenY \ 32 + 1
  80.             Tile = map (x + xTile, y + yTile)
  81.             if Tile = 0 then
  82.                 put (x * 32 - xOffset, y * 32 - yOffset), Wall
  83.             elseif Tile = 1 then
  84.                 put (x * 32 - xOffset, y * 32 - yOffset), Grass
  85.             end if
  86.         next y
  87.     next x
  88.     sleep 5
  89. end sub
  90.    
  91.  
  92. sub Init()
  93.     screeninfo Engine.ScreenX, Engine.ScreenY
  94.     Engine.TileWidth = 32
  95.     Engine.TileHeight = 32
  96.     Engine.MapX = 20
  97.     Engine.MapY = 20
  98.     Engine.MaxCameraX = Engine.TileWidth * Engine.MapX - Engine.ScreenX
  99.     Engine.MaxCameraY = Engine.TileWidth * Engine.MapY - Engine.ScreenY
  100. end sub
  101.  
  102. sub LoadTiles()
  103.     Wall = imagecreate(32, 32)
  104.     Grass = imagecreate(32, 32)
  105.     bload "wall.bmp", Wall
  106.     bload "grass.bmp", Grass
  107. end sub
  108.  
  109. sub LoadMap()
  110.     for y = 0 to 19
  111.         for x = 0 to 19
  112.             read Map(x, y)
  113.         next x
  114.     next y
  115. end sub
  116.  
  117. data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
  118. data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
  119. data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
  120. data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
  121. data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
  122. data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
  123. data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
  124. data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
  125. data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
  126. data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
  127. data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
  128. data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
  129. data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
  130. data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
  131. data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
  132. data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
  133. data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
  134. data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
  135. data 1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0
  136. data 0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1
  137. 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