; Step 4
; We were moving the background directly.
; Let's use variables Screen_PosX and Screen_PosY to move the screen.
; And relate background position to that.
;
; When background fits exactly on screen, the background position is:
;
; ( 0 , 0 )
;
; So if we move the screen left..
;
; Screen_PosX = Screen_PosX - 1
;
; The background will move right!
; So the position of the background *on screen*
; is the reversed of the position of the screen.
;
; Back_ScreenPos = -Screen_Pos
;
; What we're doing here is exactly the same as in the previous step.
; Only we're using *real* relative positioning using new variables.
;
; So if we move the screen half a screen towards the upperleft..
;
; +---------------+
; | | - Screen
; | |
; | |
; | O - - - |-------+
; | | | | - Background
; | | |
; | | | |
; +---------------+ |
; | |
; | |
; | |
; +---------------+
;
; Then the screen position would be:
;
; ( -Screen_SizeX / 2 , -Screen_SizeY / 2 )
;
; And the background would start on screen at:
;
; ( Screen_SizeX / 2 , Screen_SizeY / 2 )
;
; E.g. the reversed.
; Let's use variables Back_ScreenPosX and Back_ScreenPosY
; to know where to draw the background on screen.
Back_SizeX = GraphicsWidth ()
Back_SizeY = GraphicsHeight ()
; Our view begins at ( 0 , 0 )
Screen_PosX = 0
Screen_PosY = 0
SetBuffer BackBuffer ()
Repeat
; Moving the screen directly
If KeyDown ( 200 ) Then Screen_PosY = Screen_PosY - 2
If KeyDown ( 208 ) Then Screen_PosY = Screen_PosY + 2
If KeyDown ( 203 ) Then Screen_PosX = Screen_PosX - 2
If KeyDown ( 205 ) Then Screen_PosX = Screen_PosX + 2
; Calculate the background position on screen
; using the screen position.
Back_ScreenPosX = -Screen_PosX
Back_ScreenPosY = -Screen_PosY
Rect Back_ScreenPosX , Back_ScreenPosY , Back_SizeX , Back_SizeY , False
Flip
Cls
Until KeyHit ( 1 )
End