SCREEN 1\r
CurrentLevelNumber% = 1\r
\r
-' Capture sprite images from screen drawing operations\r
+' Capture sprite images from screen drawing operations.\r
+' This technique uses GET command to save drawn graphics into arrays.\r
GET (1, 1)-(20, 20), EmptySpaceSprite\r
RenderSpriteFromFile 0, 0, 1, 1, 1\r
GET (1, 1)-(20, 20), SolidTerrainSprite\r
CLS\r
\r
\r
-' Capture small scale versions of sprites\r
+' Capture small scale versions of sprites (half size)\r
GET (1, 1)-(10, 10), EmptySpaceSpriteSmall\r
RenderSpriteFromFile 0, 0, 1, 1, 2\r
GET (1, 1)-(10, 10), SolidTerrainSpriteSmall\r
LoadCurrentLevel 1\r
a = 50\r
b = 50\r
-siie = 1\r
+Companion1HorizontalVelocity = 1\r
Companion2HorizontalVelocity = 1\r
MainGameLoop:\r
keyboardInput$ = INKEY$\r
\r
' First companion hedgehog terrain collision checks\r
IF TerrainGrid((Companion1PositionX% + 25) \ 20, (Companion1PositionY% + 25) \ 20) = "z" THEN siiall = -1\r
-IF TerrainGrid((Companion1PositionX% + 30) \ 20, (Companion1PositionY% + 10) \ 20) = "z" THEN siie = -1\r
-IF TerrainGrid((Companion1PositionX% + 20) \ 20, (Companion1PositionY% + 10) \ 20) = "z" THEN siie = 1\r
+IF TerrainGrid((Companion1PositionX% + 30) \ 20, (Companion1PositionY% + 10) \ 20) = "z" THEN Companion1HorizontalVelocity = -1\r
+IF TerrainGrid((Companion1PositionX% + 20) \ 20, (Companion1PositionY% + 10) \ 20) = "z" THEN Companion1HorizontalVelocity = 1\r
\r
' Second companion hedgehog terrain collision checks\r
IF TerrainGrid((Companion2PositionX% + 25) \ 20, (Companion2PositionY% + 25) \ 20) = "z" THEN siiall1 = -1\r
IF TerrainGrid((Companion2PositionX% + 20) \ 20, (Companion2PositionY% + 10) \ 20) = "z" THEN Companion2HorizontalVelocity = 1\r
\r
' Screen boundary checks for companions\r
-IF Companion1PositionX% > 300 THEN siie = -1\r
-IF Companion1PositionX% < 3 THEN siie = 1\r
+IF Companion1PositionX% > 300 THEN Companion1HorizontalVelocity = -1\r
+IF Companion1PositionX% < 3 THEN Companion1HorizontalVelocity = 1\r
IF Companion2PositionX% > 300 THEN Companion2HorizontalVelocity = -1\r
IF Companion2PositionX% < 3 THEN Companion2HorizontalVelocity = 1\r
\r
ObjectGrid((Companion2PositionX% + 25) \ 20, (Companion2PositionY% + 8) \ 20) = "": ObjectGrid((Companion1PositionX% + 25) \ 20, (Companion1PositionY% + 8) \ 20) = ""\r
\r
' Update companion positions\r
-Companion1PositionX% = Companion1PositionX% + siie\r
+Companion1PositionX% = Companion1PositionX% + Companion1HorizontalVelocity\r
Companion1PositionY% = Companion1PositionY% + siiall\r
Companion2PositionX% = Companion2PositionX% + Companion2HorizontalVelocity\r
Companion2PositionY% = Companion2PositionY% + siiall1\r
b = b + all\r
\r
' Level transition when reaching right edge\r
-IF a > 297 THEN a = 2: CurrentLevelNumber% = CurrentLevelNumber% + 1: LoadCurrentLevel CurrentLevelNumber%: siie = 1: Companion2HorizontalVelocity = 1\r
+IF a > 297 THEN a = 2: CurrentLevelNumber% = CurrentLevelNumber% + 1: LoadCurrentLevel CurrentLevelNumber%: Companion1HorizontalVelocity = 1: Companion2HorizontalVelocity = 1\r
\r
' Level transition when reaching left edge\r
IF a < 1 THEN a = 296: IF CurrentLevelNumber% = 1 THEN LoadCurrentLevel CurrentLevelNumber%: ELSE CurrentLevelNumber% = CurrentLevelNumber% - 1: LoadCurrentLevel CurrentLevelNumber%: IF GraphicsDisplayMode = 2 THEN a = 594\r
IF keyboardInput$ = leftArrowKey$ THEN eda = eda - 1: IF eda < -3 THEN eda = -3: r = 0 ELSE IF lke > 10 THEN eda = -5\r
IF keyboardInput$ = upArrowKey$ AND lk < 10 THEN all = all - 5: lk = 20: r1 = 0: sipp = 3\r
IF keyboardInput$ = downArrowKey$ THEN all = all + 1\r
-IF keyboardInput$ = "/" THEN a = 2: b = 50: CurrentLevelNumber% = CurrentLevelNumber% + 1: LoadCurrentLevel CurrentLevelNumber%: siie = 1: Companion2HorizontalVelocity = 1\r
-IF keyboardInput$ = "+" THEN a = 2: b = 50: CurrentLevelNumber% = CurrentLevelNumber% + 5: LoadCurrentLevel CurrentLevelNumber%: siie = 1: Companion2HorizontalVelocity = 1\r
+IF keyboardInput$ = "/" THEN a = 2: b = 50: CurrentLevelNumber% = CurrentLevelNumber% + 1: LoadCurrentLevel CurrentLevelNumber%: Companion1HorizontalVelocity = 1: Companion2HorizontalVelocity = 1\r
+IF keyboardInput$ = "+" THEN a = 2: b = 50: CurrentLevelNumber% = CurrentLevelNumber% + 5: LoadCurrentLevel CurrentLevelNumber%: Companion1HorizontalVelocity = 1: Companion2HorizontalVelocity = 1\r
IF keyboardInput$ = "q" THEN END\r
sipa = sipa + 1\r
IF sipa = 3 THEN sipa = 1\r
\r
' First companion hedgehog terrain collision checks\r
IF TerrainGrid((Companion1PositionX% + 25) \ 20, (Companion1PositionY% + 25) \ 20) = "z" THEN siiall = -1\r
-IF TerrainGrid((Companion1PositionX% + 30) \ 20, (Companion1PositionY% + 10) \ 20) = "z" THEN siie = -1\r
-IF TerrainGrid((Companion1PositionX% + 20) \ 20, (Companion1PositionY% + 10) \ 20) = "z" THEN siie = 1\r
+IF TerrainGrid((Companion1PositionX% + 30) \ 20, (Companion1PositionY% + 10) \ 20) = "z" THEN Companion1HorizontalVelocity = -1\r
+IF TerrainGrid((Companion1PositionX% + 20) \ 20, (Companion1PositionY% + 10) \ 20) = "z" THEN Companion1HorizontalVelocity = 1\r
\r
' Second companion hedgehog terrain collision checks\r
IF TerrainGrid((Companion2PositionX% + 25) \ 20, (Companion2PositionY% + 25) \ 20) = "z" THEN siiall1 = -1\r
IF TerrainGrid((Companion2PositionX% + 20) \ 20, (Companion2PositionY% + 10) \ 20) = "z" THEN Companion2HorizontalVelocity = 1\r
\r
' Screen boundary checks for companions\r
-IF Companion1PositionX% > 600 THEN siie = -1\r
-IF Companion1PositionX% < 3 THEN siie = 1\r
+IF Companion1PositionX% > 600 THEN Companion1HorizontalVelocity = -1\r
+IF Companion1PositionX% < 3 THEN Companion1HorizontalVelocity = 1\r
IF Companion2PositionX% > 600 THEN Companion2HorizontalVelocity = -1\r
IF Companion2PositionX% < 3 THEN Companion2HorizontalVelocity = 1\r
\r
ObjectGrid((Companion2PositionX% + 25) \ 20, (Companion2PositionY% + 8) \ 20) = "": ObjectGrid((Companion1PositionX% + 25) \ 20, (Companion1PositionY% + 8) \ 20) = ""\r
\r
' Update companion positions\r
-Companion1PositionX% = Companion1PositionX% + siie\r
+Companion1PositionX% = Companion1PositionX% + Companion1HorizontalVelocity\r
Companion1PositionY% = Companion1PositionY% + siiall\r
Companion2PositionX% = Companion2PositionX% + Companion2HorizontalVelocity\r
Companion2PositionY% = Companion2PositionY% + siiall1\r
b = b + all\r
\r
' Level transition when reaching right edge\r
-IF a > 594 THEN a = 2: CurrentLevelNumber% = CurrentLevelNumber% + 1: LoadCurrentLevel CurrentLevelNumber%: siie = 1: Companion2HorizontalVelocity = 1\r
+IF a > 594 THEN a = 2: CurrentLevelNumber% = CurrentLevelNumber% + 1: LoadCurrentLevel CurrentLevelNumber%: Companion1HorizontalVelocity = 1: Companion2HorizontalVelocity = 1\r
\r
' Level transition when reaching left edge\r
IF a < 1 THEN a = 594: IF CurrentLevelNumber% = 1 THEN LoadCurrentLevel CurrentLevelNumber%: ELSE CurrentLevelNumber% = CurrentLevelNumber% - 1: LoadCurrentLevel CurrentLevelNumber%: IF GraphicsDisplayMode = 1 THEN a = 297\r
IF keyboardInput$ = leftArrowKey$ THEN eda = eda - 1: IF eda < -3 THEN eda = -3: r = 0 ELSE IF lke > 10 THEN eda = -5\r
IF keyboardInput$ = upArrowKey$ AND lk < 10 THEN all = all - 5: lk = 20: r1 = 0: sipp = 3\r
IF keyboardInput$ = downArrowKey$ THEN all = all + 1\r
-IF keyboardInput$ = "/" THEN a = 2: b = 50: CurrentLevelNumber% = CurrentLevelNumber% + 1: LoadCurrentLevel CurrentLevelNumber%: siie = 1: Companion2HorizontalVelocity = 1\r
-IF keyboardInput$ = "+" THEN a = 2: b = 50: CurrentLevelNumber% = CurrentLevelNumber% + 5: LoadCurrentLevel CurrentLevelNumber%: siie = 1: Companion2HorizontalVelocity = 1\r
+IF keyboardInput$ = "/" THEN a = 2: b = 50: CurrentLevelNumber% = CurrentLevelNumber% + 1: LoadCurrentLevel CurrentLevelNumber%: Companion1HorizontalVelocity = 1: Companion2HorizontalVelocity = 1\r
+IF keyboardInput$ = "+" THEN a = 2: b = 50: CurrentLevelNumber% = CurrentLevelNumber% + 5: LoadCurrentLevel CurrentLevelNumber%: Companion1HorizontalVelocity = 1: Companion2HorizontalVelocity = 1\r
IF keyboardInput$ = "q" THEN END\r
\r
sipa = sipa + 1\r