From: Svjatoslav Agejenko Date: Thu, 21 Aug 2025 17:39:31 +0000 (+0300) Subject: Better code readability X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=commitdiff_plain;h=b4ca756011855be99dc362cc7b95f14f1fce30a5;p=qbasicapps.git Better code readability --- diff --git a/Games/Pomppu Paavo.bas b/Games/Pomppu Paavo.bas index bfdbda1..268d658 100755 --- a/Games/Pomppu Paavo.bas +++ b/Games/Pomppu Paavo.bas @@ -364,65 +364,112 @@ IF b > 0 THEN IF sipp = 10 THEN PUT (a \ 2, b \ 2), sippm10, OR IF b > 0 THEN IF sipp = 20 THEN PUT (a \ 2, b \ 2), sippm20, OR IF b > 0 THEN IF sipp = 3 THEN PUT (a \ 2, b \ 2), sippm3, OR +' Draw companions in scaled down mode GET (FirstCompanionX% \ 2, FirstCompanionY% \ 2)-((FirstCompanionX% + 10) \ 2, (FirstCompanionY% + 10) \ 2), siilm1 PUT (FirstCompanionX% \ 2, FirstCompanionY% \ 2), siilm, OR GET (SecondCompanionX% \ 2, SecondCompanionY% \ 2)-((siia1 + 10) \ 2, (SecondCompanionY% + 10) \ 2), siilm2 PUT (SecondCompanionX% \ 2, SecondCompanionY% \ 2), siilm, OR + +' Small delay to limit framerate SOUND 0, .8 + +' Check collisions with terrain (z = solid block) +' Right side collision checks IF TerrainGrid((a + 38) \ 20, (b + 37) \ 20) = "z" THEN eda = -1: r = 9: lke = 0 IF TerrainGrid((a + 38) \ 20, (b + 22) \ 20) = "z" THEN eda = -1: r = 9: lke = 0 +' Left side collision checks IF TerrainGrid((a + 21) \ 20, (b + 22) \ 20) = "z" THEN eda = 1: r = 9: lke = 0 IF TerrainGrid((a + 21) \ 20, (b + 37) \ 20) = "z" THEN eda = 1: r = 9: lke = 0 +' Top collision checks IF TerrainGrid((a + 22) \ 20, (b + 21) \ 20) = "z" THEN all = 0: cd = 10: lke = 0 IF TerrainGrid((a + 37) \ 20, (b + 21) \ 20) = "z" THEN all = 0: cd = 10: lke = 0 +' Bottom collision checks (landing on ground) IF TerrainGrid((a + 22) \ 20, (b + 38) \ 20) = "z" THEN all = -1: r1 = 2: lk = 1: lke = 0 IF TerrainGrid((a + 37) \ 20, (b + 38) \ 20) = "z" THEN all = -1: r1 = 2: lk = 1: lke = 0 qwer = qwer + 1: IF ObjectGrid((a + 30) \ 20, (b + 30) \ 20) = "q" AND qwer > 20 THEN qwer = 1: LivesRemaining% = LivesRemaining% - 1: eda = -5: all = -3: DisplayGameStatistics IF qwer > 100 THEN qwer = 50 + +' Coin collection logic IF TerrainGrid((a + 30) \ 20, (b + 30) \ 20) = "1" THEN CoinsCollected% = CoinsCollected% + 1: kustuta1 = 1: DisplayGameStatistics: TerrainGrid((a + 30) \ 20, (b + 30) \ 20) = "" + +' Trampoline effect IF TerrainGrid((a + 30) \ 20, (b + 30) \ 20) = "v" THEN all = -8: sipp = 3 + +' Conveyor belt movement triggers IF ObjectGrid((a + 30) \ 20, (b + 38) \ 20) = ">" THEN eda = 3 IF ObjectGrid((a + 30) \ 20, (b + 38) \ 20) = "<" THEN eda = -3 + lke = lke + 1 r = r + 1: IF r > 10 THEN r = 0: IF eda > 0 THEN eda = eda - 1: ELSE IF eda < 0 THEN eda = eda + 1 r1 = r1 + 1: IF r1 > 3 THEN r1 = 0: all = all + 1 lk = lk + 1: cd = cd - 1 + +' Breakable block interaction IF ObjectGrid((a + 30) \ 20, (b + 21) \ 20) = "o" THEN TerrainGrid((a + 30) \ 20, (b + 21) \ 20) = "": ObjectGrid((a + 30) \ 20, (b + 21) \ 20) = "": kustuta = 1 + IF ObjectGrid((a + 30) \ 20, (b + 38) \ 20) = "a" THEN TerrainGrid((a + 30) \ 20, (b + 38) \ 20) = "": ObjectGrid((a + 30) \ 20, (b + 38) \ 20) = "": kustuta2 = 1 + +' First companion hedgehog terrain collision checks IF TerrainGrid((FirstCompanionX% + 25) \ 20, (FirstCompanionY% + 25) \ 20) = "z" THEN siiall = -1 IF TerrainGrid((FirstCompanionX% + 30) \ 20, (FirstCompanionY% + 10) \ 20) = "z" THEN siie = -1 IF TerrainGrid((FirstCompanionX% + 20) \ 20, (FirstCompanionY% + 10) \ 20) = "z" THEN siie = 1 + +' Second companion hedgehog terrain collision checks IF TerrainGrid((SecondCompanionX% + 25) \ 20, (SecondCompanionY% + 25) \ 20) = "z" THEN siiall1 = -1 IF TerrainGrid((SecondCompanionX% + 30) \ 20, (SecondCompanionY% + 10) \ 20) = "z" THEN siie1 = -1 IF TerrainGrid((SecondCompanionX% + 20) \ 20, (SecondCompanionY% + 10) \ 20) = "z" THEN siie1 = 1 + +' Screen boundary checks for companions IF FirstCompanionX% > 600 THEN siie = -1 IF FirstCompanionX% < 3 THEN siie = 1 IF SecondCompanionX% > 600 THEN siie1 = -1 IF SecondCompanionX% < 3 THEN siie1 = 1 + +' Restore previous companion positions PUT (SecondCompanionX% \ 2, SecondCompanionY% \ 2), siilm2, PSET PUT (FirstCompanionX% \ 2, FirstCompanionY% \ 2), siilm1, PSET + +' Restore previous player position IF b > 0 THEN PUT (a \ 2, b \ 2), marm1, PSET + +' Handle sprite clearing after coin collection IF kustuta = 1 THEN kustuta = 0: PUT (((a + 10) \ 20) * 10, (b \ 20) * 10), EmptySpaceSpriteSmall, PSET IF kustuta1 = 1 THEN kustuta1 = 0: PUT (((a + 10) \ 20) * 10, ((b + 10) \ 20) * 10), EmptySpaceSpriteSmall, PSET IF kustuta2 = 1 THEN kustuta2 = 0: PUT (((a + 10) \ 20) * 10, ((b + 28) \ 20) * 10), EmptySpaceSpriteSmall, PSET + IF makk = 1 THEN makk = 0: a = a - 20 + ObjectGrid((SecondCompanionX% + 25) \ 20, (SecondCompanionY% + 8) \ 20) = "": ObjectGrid((FirstCompanionX% + 25) \ 20, (FirstCompanionY% + 8) \ 20) = "" + +' Update companion positions FirstCompanionX% = FirstCompanionX% + siie FirstCompanionY% = FirstCompanionY% + siiall SecondCompanionX% = SecondCompanionX% + siie1 SecondCompanionY% = SecondCompanionY% + siiall1 + +' Mark new companion positions in object grid ObjectGrid((SecondCompanionX% + 25) \ 20, (SecondCompanionY% + 8) \ 20) = "q": ObjectGrid((FirstCompanionX% + 25) \ 20, (FirstCompanionY% + 8) \ 20) = "q" siiall = siiall + 1: IF siiall > 2 THEN siiall = 2 siiall1 = siiall1 + 1: IF siiall1 > 2 THEN siiall1 = 2 + +' Update player position based on velocity a = a + eda b = b + all + +' Level transition when reaching right edge IF a > 594 THEN a = 2: CurrentLevelNumber% = CurrentLevelNumber% + 1: LoadLevel CurrentLevelNumber%: siie = 1: siie1 = 1 + +' Level transition when reaching left edge IF a < 1 THEN a = 594: IF CurrentLevelNumber% = 1 THEN LoadLevel CurrentLevelNumber%: ELSE CurrentLevelNumber% = CurrentLevelNumber% - 1: LoadLevel CurrentLevelNumber%: IF graphicsMode = 1 THEN a = 297 + +' Player falls off bottom of screen IF b > 358 THEN LivesRemaining% = LivesRemaining% - 1: DisplayGameStatistics: CurrentLevelNumber% = CurrentLevelNumber% - 1: LoadLevel CurrentLevelNumber%: b = 100: a = 2: DisplayGameStatistics + +' Teleportation triggers ("u" and "U" markers in level data) 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 @@ -435,8 +482,10 @@ IF kbd$ = downArrowKey$ THEN all = all + 1 IF kbd$ = "/" THEN a = 2: b = 50: CurrentLevelNumber% = CurrentLevelNumber% + 1: LoadLevel CurrentLevelNumber%: siie = 1: siie1 = 1 IF kbd$ = "+" THEN a = 2: b = 50: CurrentLevelNumber% = CurrentLevelNumber% + 5: LoadLevel CurrentLevelNumber%: siie = 1: siie1 = 1 IF kbd$ = "q" THEN END + sipa = sipa + 1 IF sipa = 3 THEN sipa = 1 + GOTO 106 SUB DisplayGameStatistics @@ -918,16 +967,19 @@ FirstCompanionY% = 0 aiia1 = 0 SecondCompanionY% = 0 FOR a1 = 1 TO 32 -FOR b1 = 1 TO 20 -TerrainGrid(a1, b1) = "" -ObjectGrid(a1, b1) = "" -NEXT b1 + FOR b1 = 1 TO 20 + TerrainGrid(a1, b1) = "" + ObjectGrid(a1, b1) = "" + NEXT b1 NEXT a1 + FOR a = 1 TO 10 -asciiLevelData(a) = "" + asciiLevelData(a) = "" NEXT a + CLS LOCATE 3, 10 + SELECT CASE y CASE 1 asciiLevelData(1) = " mmm"