From: Svjatoslav Agejenko Date: Sun, 24 Aug 2025 18:38:16 +0000 (+0300) Subject: Better code readability X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=commitdiff_plain;h=a69ea0dc464e07d79d483d40d042fec5b22fd360;p=qbasicapps.git Better code readability --- diff --git a/Games/Pomppu Paavo/Pomppu Paavo.bas b/Games/Pomppu Paavo/Pomppu Paavo.bas index 13dabc4..944df00 100755 --- a/Games/Pomppu Paavo/Pomppu Paavo.bas +++ b/Games/Pomppu Paavo/Pomppu Paavo.bas @@ -12,10 +12,9 @@ DECLARE SUB DisplayGameStatistics () DECLARE SUB LoadCurrentLevel (y%) -DECLARE SUB DrawSprite (p%, o%, m%, fr%, teler%) DEFINT A-Z -DIM SHARED graphicsMode +DIM SHARED GraphicsDisplayMode DIM SHARED asciiLevelData(1 TO 20) AS STRING * 31 DIM SHARED Companion1PositionY%, Companion1PositionX%, Companion2PositionY%, Companion2PositionX% DIM SHARED LivesRemaining%, CoinsCollected% @@ -87,127 +86,127 @@ CurrentLevelNumber% = 1 ' Capture sprite images from screen drawing operations GET (1, 1)-(20, 20), EmptySpaceSprite -DrawSprite 0, 0, 1, 1, 1 +RenderSpriteFromFile 0, 0, 1, 1, 1 GET (1, 1)-(20, 20), SolidTerrainSprite -DrawSprite 0, 0, 4, 1, 1 +RenderSpriteFromFile 0, 0, 4, 1, 1 GET (1, 1)-(20, 20), kast PUT (1, 180), SolidTerrainSprite, PSET PUT (300, 1), SolidTerrainSprite, PSET PUT (300, 180), SolidTerrainSprite, PSET -DrawSprite 30, 50, 2, 1, 1 +RenderSpriteFromFile 30, 50, 2, 1, 1 GET (31, 51)-(91, 76), pilv PUT (160, 10), pilv, PSET -DrawSprite 20, 100, 3, 1, 1 +RenderSpriteFromFile 20, 100, 3, 1, 1 GET (21, 101)-(31, 114), taht CLS -DrawSprite 0, 0, 5, 1, 1 +RenderSpriteFromFile 0, 0, 5, 1, 1 GET (1, 1)-(11, 8), siil CLS -DrawSprite 0, 0, 6, 1, 1 +RenderSpriteFromFile 0, 0, 6, 1, 1 GET (1, 1)-(8, 10), CoinSprite CLS -DrawSprite 0, 0, 7, 1, 1 +RenderSpriteFromFile 0, 0, 7, 1, 1 GET (1, 1)-(31, 11), poosas CLS -DrawSprite 0, 0, 8, 1, 1 +RenderSpriteFromFile 0, 0, 8, 1, 1 GET (1, 1)-(26, 21), WindowSprite CLS -DrawSprite 0, 0, 9, 1, 1 +RenderSpriteFromFile 0, 0, 9, 1, 1 GET (1, 1)-(21, 11), TrampolineSprite CLS -DrawSprite 0, 0, 11, 1, 1 +RenderSpriteFromFile 0, 0, 11, 1, 1 GET (1, 1)-(51, 81), TreeSprite CLS -DrawSprite 0, 0, 12, 1, 1 +RenderSpriteFromFile 0, 0, 12, 1, 1 GET (1, 1)-(20, 20), noolt CLS -DrawSprite 0, 0, 12, 50, 1 +RenderSpriteFromFile 0, 0, 12, 50, 1 GET (1, 1)-(20, 20), noolt1 CLS -DrawSprite 0, 0, 13, 1, 1 +RenderSpriteFromFile 0, 0, 13, 1, 1 GET (1, 1)-(20, 20), HoleSprite CLS -DrawSprite 0, 0, 14, 1, 1 +RenderSpriteFromFile 0, 0, 14, 1, 1 GET (1, 1)-(20, 20), sipp1 CLS -DrawSprite 0, 0, 15, 1, 1 +RenderSpriteFromFile 0, 0, 15, 1, 1 GET (1, 1)-(20, 20), sipp2 CLS -DrawSprite 0, 0, 14, 50, 1 +RenderSpriteFromFile 0, 0, 14, 50, 1 GET (1, 1)-(20, 20), sipp10 CLS -DrawSprite 0, 0, 15, 50, 1 +RenderSpriteFromFile 0, 0, 15, 50, 1 GET (1, 1)-(20, 20), sipp20 CLS -DrawSprite 0, 0, 16, 1, 1 +RenderSpriteFromFile 0, 0, 16, 1, 1 GET (1, 1)-(20, 20), sipp3 CLS ' Capture small scale versions of sprites GET (1, 1)-(10, 10), EmptySpaceSpriteSmall -DrawSprite 0, 0, 1, 1, 2 +RenderSpriteFromFile 0, 0, 1, 1, 2 GET (1, 1)-(10, 10), SolidTerrainSpriteSmall -DrawSprite 0, 0, 4, 1, 2 +RenderSpriteFromFile 0, 0, 4, 1, 2 GET (1, 1)-(10, 10), kastm PUT (1, 180), SolidTerrainSprite, PSET PUT (300, 1), SolidTerrainSprite, PSET PUT (300, 180), SolidTerrainSprite, PSET -DrawSprite 30, 50, 2, 1, 2 +RenderSpriteFromFile 30, 50, 2, 1, 2 GET (16, 26)-(46, 38), pilvm -DrawSprite 20, 100, 3, 1, 2 +RenderSpriteFromFile 20, 100, 3, 1, 2 GET (11, 51)-(16, 72), tahtm CLS -DrawSprite 0, 0, 5, 1, 2 +RenderSpriteFromFile 0, 0, 5, 1, 2 GET (1, 1)-(6, 4), siilm CLS -DrawSprite 0, 0, 6, 1, 2 +RenderSpriteFromFile 0, 0, 6, 1, 2 GET (1, 1)-(4, 5), CoinSpriteSmall CLS -DrawSprite 0, 0, 7, 1, 2 +RenderSpriteFromFile 0, 0, 7, 1, 2 GET (1, 1)-(16, 6), poosasm CLS -DrawSprite 0, 0, 8, 1, 2 +RenderSpriteFromFile 0, 0, 8, 1, 2 GET (1, 1)-(13, 11), WindowSpriteSmall CLS -DrawSprite 0, 0, 9, 1, 2 +RenderSpriteFromFile 0, 0, 9, 1, 2 GET (1, 1)-(11, 6), TrampolineSpriteSmall CLS -DrawSprite 0, 0, 11, 1, 2 +RenderSpriteFromFile 0, 0, 11, 1, 2 GET (1, 1)-(26, 41), TreeSpriteSmall CLS -DrawSprite 0, 0, 12, 1, 2 +RenderSpriteFromFile 0, 0, 12, 1, 2 GET (1, 1)-(10, 10), nooltm CLS -DrawSprite 0, 0, 12, 50, 2 +RenderSpriteFromFile 0, 0, 12, 50, 2 GET (1, 1)-(10, 10), nooltm1 CLS -DrawSprite 0, 0, 13, 1, 2 +RenderSpriteFromFile 0, 0, 13, 1, 2 GET (1, 1)-(10, 10), HoleSpriteSmall CLS -DrawSprite 0, 0, 14, 1, 2 +RenderSpriteFromFile 0, 0, 14, 1, 2 GET (1, 1)-(10, 10), sippm1 CLS -DrawSprite 0, 0, 15, 1, 2 +RenderSpriteFromFile 0, 0, 15, 1, 2 GET (1, 1)-(10, 10), sippm2 CLS -DrawSprite 0, 0, 14, 50, 2 +RenderSpriteFromFile 0, 0, 14, 50, 2 GET (1, 1)-(10, 10), sippm10 CLS -DrawSprite 0, 0, 15, 50, 2 +RenderSpriteFromFile 0, 0, 15, 50, 2 GET (1, 1)-(10, 10), sippm20 CLS -DrawSprite 0, 0, 16, 1, 2 +RenderSpriteFromFile 0, 0, 16, 1, 2 GET (1, 1)-(10, 10), sippm3 CLS -DrawSprite 0, 0, 17, 1, 1 +RenderSpriteFromFile 0, 0, 17, 1, 1 GET (1, 1)-(21, 31), DoorSprite CLS -DrawSprite 0, 0, 17, 1, 2 +RenderSpriteFromFile 0, 0, 17, 1, 2 GET (1, 1)-(11, 16), IntroScreen CLS -DrawSprite -1, -1, 10, 4, 1 +RenderSpriteFromFile -1, -1, 10, 4, 1 GET (1, 1)-(318, 124), IntroScreen key$ = INPUT$(1) @@ -218,8 +217,8 @@ b = 50 siie = 1 siie1 = 1 MainGameLoop: -kbd$ = INKEY$ -IF graphicsMode = 2 THEN b = b * 2: GOTO mainLoopSmallScale +keyboardInput$ = INKEY$ +IF GraphicsDisplayMode = 2 THEN b = b * 2: GOTO mainLoopSmallScale IF b > 0 THEN GET (a, b)-(a + 20, b + 20), mar1 IF b > 0 THEN IF sipp = 1 THEN PUT (a, b), sipp1, OR IF b > 0 THEN IF sipp = 2 THEN PUT (a, b), sipp2, OR @@ -331,7 +330,7 @@ b = b + all IF a > 297 THEN a = 2: CurrentLevelNumber% = CurrentLevelNumber% + 1: LoadCurrentLevel CurrentLevelNumber%: siie = 1: siie1 = 1 ' Level transition when reaching left edge -IF a < 1 THEN a = 296: IF CurrentLevelNumber% = 1 THEN LoadCurrentLevel CurrentLevelNumber%: ELSE CurrentLevelNumber% = CurrentLevelNumber% - 1: LoadCurrentLevel CurrentLevelNumber%: IF graphicsMode = 2 THEN a = 594 +IF a < 1 THEN a = 296: IF CurrentLevelNumber% = 1 THEN LoadCurrentLevel CurrentLevelNumber%: ELSE CurrentLevelNumber% = CurrentLevelNumber% - 1: LoadCurrentLevel CurrentLevelNumber%: IF GraphicsDisplayMode = 2 THEN a = 594 ' Player falls off bottom of screen IF b > 179 THEN LivesRemaining% = LivesRemaining% - 1: DisplayGameStatistics: CurrentLevelNumber% = CurrentLevelNumber% - 1: LoadCurrentLevel CurrentLevelNumber%: b = 100: a = 2: DisplayGameStatistics @@ -340,23 +339,23 @@ IF b > 179 THEN LivesRemaining% = LivesRemaining% - 1: DisplayGameStatistics: Cu IF TerrainGrid((a + 30) \ 20, (b + 30) \ 20) = "u" THEN a = DoorExitX% + 10: b = DoorExitY%: eda = 0 IF TerrainGrid((a + 30) \ 20, (b + 30) \ 20) = "U" THEN a = DoorEntryX% + 10: b = DoorEntryY%: eda = 0 -IF kbd$ = rightArrowKey$ THEN eda = eda + 1: IF eda > 3 THEN eda = 3: r = 0 ELSE IF lke > 10 THEN eda = 5 -IF kbd$ = rightArrowKey$ THEN IF sipa = 1 THEN sipp = 1: ELSE sipp = 2 -IF kbd$ = leftArrowKey$ THEN IF sipa = 1 THEN sipp = 10: ELSE sipp = 20 -IF kbd$ = leftArrowKey$ THEN eda = eda - 1: IF eda < -3 THEN eda = -3: r = 0 ELSE IF lke > 10 THEN eda = -5 -IF kbd$ = upArrowKey$ AND lk < 10 THEN all = all - 5: lk = 20: r1 = 0: sipp = 3 -IF kbd$ = downArrowKey$ THEN all = all + 1 -IF kbd$ = "/" THEN a = 2: b = 50: CurrentLevelNumber% = CurrentLevelNumber% + 1: LoadCurrentLevel CurrentLevelNumber%: siie = 1: siie1 = 1 -IF kbd$ = "+" THEN a = 2: b = 50: CurrentLevelNumber% = CurrentLevelNumber% + 5: LoadCurrentLevel CurrentLevelNumber%: siie = 1: siie1 = 1 -IF kbd$ = "q" THEN END +IF keyboardInput$ = rightArrowKey$ THEN eda = eda + 1: IF eda > 3 THEN eda = 3: r = 0 ELSE IF lke > 10 THEN eda = 5 +IF keyboardInput$ = rightArrowKey$ THEN IF sipa = 1 THEN sipp = 1: ELSE sipp = 2 +IF keyboardInput$ = leftArrowKey$ THEN IF sipa = 1 THEN sipp = 10: ELSE sipp = 20 +IF keyboardInput$ = leftArrowKey$ THEN eda = eda - 1: IF eda < -3 THEN eda = -3: r = 0 ELSE IF lke > 10 THEN eda = -5 +IF keyboardInput$ = upArrowKey$ AND lk < 10 THEN all = all - 5: lk = 20: r1 = 0: sipp = 3 +IF keyboardInput$ = downArrowKey$ THEN all = all + 1 +IF keyboardInput$ = "/" THEN a = 2: b = 50: CurrentLevelNumber% = CurrentLevelNumber% + 1: LoadCurrentLevel CurrentLevelNumber%: siie = 1: siie1 = 1 +IF keyboardInput$ = "+" THEN a = 2: b = 50: CurrentLevelNumber% = CurrentLevelNumber% + 5: LoadCurrentLevel CurrentLevelNumber%: siie = 1: siie1 = 1 +IF keyboardInput$ = "q" THEN END sipa = sipa + 1 IF sipa = 3 THEN sipa = 1 GOTO MainGameLoop mainLoopSmallScale: -kbd$ = INKEY$ -IF graphicsMode = 1 THEN b = b / 2: GOTO MainGameLoop +keyboardInput$ = INKEY$ +IF GraphicsDisplayMode = 1 THEN b = b / 2: GOTO MainGameLoop IF b > 0 THEN GET (a \ 2, b \ 2)-((a + 20) \ 2, (b + 20) \ 2), marm1 IF b > 0 THEN IF sipp = 1 THEN PUT (a \ 2, b \ 2), sippm1, OR IF b > 0 THEN IF sipp = 2 THEN PUT (a \ 2, b \ 2), sippm2, OR @@ -464,7 +463,7 @@ b = b + all IF a > 594 THEN a = 2: CurrentLevelNumber% = CurrentLevelNumber% + 1: LoadCurrentLevel CurrentLevelNumber%: siie = 1: siie1 = 1 ' Level transition when reaching left edge -IF a < 1 THEN a = 594: IF CurrentLevelNumber% = 1 THEN LoadCurrentLevel CurrentLevelNumber%: ELSE CurrentLevelNumber% = CurrentLevelNumber% - 1: LoadCurrentLevel CurrentLevelNumber%: IF graphicsMode = 1 THEN a = 297 +IF a < 1 THEN a = 594: IF CurrentLevelNumber% = 1 THEN LoadCurrentLevel CurrentLevelNumber%: ELSE CurrentLevelNumber% = CurrentLevelNumber% - 1: LoadCurrentLevel CurrentLevelNumber%: IF GraphicsDisplayMode = 1 THEN a = 297 ' Player falls off bottom of screen IF b > 358 THEN LivesRemaining% = LivesRemaining% - 1: DisplayGameStatistics: CurrentLevelNumber% = CurrentLevelNumber% - 1: LoadCurrentLevel CurrentLevelNumber%: b = 100: a = 2: DisplayGameStatistics @@ -473,15 +472,15 @@ IF b > 358 THEN LivesRemaining% = LivesRemaining% - 1: DisplayGameStatistics: Cu IF TerrainGrid((a + 30) \ 20, (b + 30) \ 20) = "u" THEN a = DoorExitX% + 5: b = DoorExitY%: eda = 0 IF TerrainGrid((a + 30) \ 20, (b + 30) \ 20) = "U" THEN a = DoorEntryX% + 5: b = DoorEntryY%: eda = 0 -IF kbd$ = rightArrowKey$ THEN eda = eda + 1: IF eda > 3 THEN eda = 3: r = 0 ELSE IF lke > 10 THEN eda = 5 -IF kbd$ = rightArrowKey$ THEN IF sipa = 1 THEN sipp = 1: ELSE sipp = 2 -IF kbd$ = leftArrowKey$ THEN IF sipa = 1 THEN sipp = 10: ELSE sipp = 20 -IF kbd$ = leftArrowKey$ THEN eda = eda - 1: IF eda < -3 THEN eda = -3: r = 0 ELSE IF lke > 10 THEN eda = -5 -IF kbd$ = upArrowKey$ AND lk < 10 THEN all = all - 5: lk = 20: r1 = 0: sipp = 3 -IF kbd$ = downArrowKey$ THEN all = all + 1 -IF kbd$ = "/" THEN a = 2: b = 50: CurrentLevelNumber% = CurrentLevelNumber% + 1: LoadCurrentLevel CurrentLevelNumber%: siie = 1: siie1 = 1 -IF kbd$ = "+" THEN a = 2: b = 50: CurrentLevelNumber% = CurrentLevelNumber% + 5: LoadCurrentLevel CurrentLevelNumber%: siie = 1: siie1 = 1 -IF kbd$ = "q" THEN END +IF keyboardInput$ = rightArrowKey$ THEN eda = eda + 1: IF eda > 3 THEN eda = 3: r = 0 ELSE IF lke > 10 THEN eda = 5 +IF keyboardInput$ = rightArrowKey$ THEN IF sipa = 1 THEN sipp = 1: ELSE sipp = 2 +IF keyboardInput$ = leftArrowKey$ THEN IF sipa = 1 THEN sipp = 10: ELSE sipp = 20 +IF keyboardInput$ = leftArrowKey$ THEN eda = eda - 1: IF eda < -3 THEN eda = -3: r = 0 ELSE IF lke > 10 THEN eda = -5 +IF keyboardInput$ = upArrowKey$ AND lk < 10 THEN all = all - 5: lk = 20: r1 = 0: sipp = 3 +IF keyboardInput$ = downArrowKey$ THEN all = all + 1 +IF keyboardInput$ = "/" THEN a = 2: b = 50: CurrentLevelNumber% = CurrentLevelNumber% + 1: LoadCurrentLevel CurrentLevelNumber%: siie = 1: siie1 = 1 +IF keyboardInput$ = "+" THEN a = 2: b = 50: CurrentLevelNumber% = CurrentLevelNumber% + 5: LoadCurrentLevel CurrentLevelNumber%: siie = 1: siie1 = 1 +IF keyboardInput$ = "q" THEN END sipa = sipa + 1 IF sipa = 3 THEN sipa = 1 @@ -490,18 +489,18 @@ GOTO mainLoopSmallScale SUB DisplayGameStatistics ' -' Updates and displays the game's status information (coins collected, lives remaining) +' Updates and displays the game's status information (coins, lives) ' Handles game over condition when lives reach zero. ' -' This subroutine is called whenever the game state changes that affects statistics: -' - When a coin is collected -' - When the player loses a life -' - Periodically during gameplay +' This subroutine is called whenever: +' - A coin is collected +' - The player loses a life (from hazards or falling) +' - Periodically during gameplay for live updates LOCATE 1, 1 -IF GraphicsMode% = 2 THEN GOTO SkipTextDisplay +IF GraphicsDisplayMode% = 2 THEN GOTO SkipTextDisplay -' Clear previous stats display +' Clear previous stats display to prevent text overlap PRINT " " ' Award extra life every 10 coins collected @@ -516,7 +515,7 @@ SkipTextDisplay: IF LivesRemaining% < 0 THEN END END SUB -SUB DrawSprite (p, o, m, fr, teler) +SUB RenderSpriteFromFile (p, o, m, fr, teler) ' Renders a sprite on screen loaded from file "img/.i01" ' ' File format: First line = height (number of rows) @@ -582,7 +581,7 @@ LOCATE 3, 10 IF y >= 1 AND y <= 18 THEN fileName$ = "lvl/" + LTRIM$(STR$(y)) + ".lvl" OPEN fileName$ FOR INPUT AS #1 - INPUT #1, graphicsMode, increment + INPUT #1, GraphicsDisplayMode, increment i% = 1 WHILE NOT EOF(1) LINE INPUT #1, asciiLevelData(i%) @@ -594,7 +593,7 @@ ELSE SELECT CASE y CASE 19 CLS - DrawSprite 1, 1, 10, 3, 1 + RenderSpriteFromFile 1, 1, 10, 3, 1 LOCATE 20, 1 PRINT "end" FOR a = 1 TO 50 @@ -635,10 +634,10 @@ ELSE asciiLevelData(17) = " " asciiLevelData(18) = " " asciiLevelData(19) = " " - graphicsMode = 2 + GraphicsDisplayMode = 2 END SELECT END IF -IF graphicsMode = 2 THEN GOTO 124 +IF GraphicsDisplayMode = 2 THEN GOTO 124 FOR e = 0 TO 9 FOR D = 0 TO 15 q$ = RIGHT$(LEFT$(asciiLevelData(e + 1), D + 1), 1)