From: Svjatoslav Agejenko Date: Wed, 25 Jun 2025 21:45:30 +0000 (+0300) Subject: Better code readability X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=commitdiff_plain;h=a9022621c16f1c925a0eaec946466eaa8a0bfaac;p=qbasicapps.git Better code readability --- diff --git a/2D GFX/Textures/wood.bas b/2D GFX/Textures/wood.bas index 2bf38d0..244a7e9 100755 --- a/2D GFX/Textures/wood.bas +++ b/2D GFX/Textures/wood.bas @@ -5,10 +5,10 @@ ' ' Changelog: ' 2003.12, Initial version -' 2024.08, Improved program readability using AI +' 2024 - 2025, Improved program readability -DECLARE SUB DrawWood(xPos%, yPos%) -DECLARE SUB DrawPaper(xPos%, y1Pos%) +DECLARE SUB DrawWoodSurface (woodX%, woodY%) +DECLARE SUB DrawPaper (xPos%, y1Pos%) DEFINT A-Z SCREEN 12 RANDOMIZE TIMER @@ -23,51 +23,51 @@ NEXT colorIndex ' Main loop to draw wood at random positions 100: -xPos = RND * 400 + 200 -yPos = RND * 100 + 200 -CALL DrawWood(xPos, yPos) +woodX = RND * 400 + 200 +woodY = RND * 100 + 200 +CALL DrawWoodSurface(woodX, woodY) GOTO 100 ' Wait for user input to exit -a$ = INPUT$(1) +exitKey$ = INPUT$(1) -SUB DrawWood (xPos, yPos) - DIM yl AS INTEGER - DIM pe AS INTEGER - DIM p AS INTEGER - DIM z AS INTEGER - DIM c AS INTEGER - DIM c1 AS INTEGER - DIM c2 AS INTEGER +SUB DrawWoodSurface (woodX, woodY) + DIM lowerY AS INTEGER + DIM phaseOffset AS INTEGER + DIM xStepCounter AS INTEGER + DIM randomOffset AS INTEGER + DIM newColor AS INTEGER + DIM upperColor AS INTEGER + DIM currentColor AS INTEGER ' Draw the outline of the wood - yl = yPos + 1 - LINE (0, 0)-(xPos, yPos), 0, BF - LINE (5, 5)-(xPos - 5, yl - 5), 8, BF - LINE (10, 10)-(xPos - 10, yl - 10), 15, BF + lowerY = woodY + 1 + LINE (0, 0)-(woodX, woodY), 0, BF ' Black background + LINE (5, 5)-(woodX - 5, lowerY - 5), 8, BF ' Gray wood outline + LINE (10, 10)-(woodX - 10, lowerY - 10), 15, BF ' White inner highlight - ' Initialize random factor for color variation - pe = RND * 300 + ' Initialize random phase offset for color variation + phaseOffset = RND * 300 ' Draw the wood texture - FOR y = yPos - 1 TO 0 STEP -1 - FOR x = xPos - 1 TO 0 STEP -1 - p = p + 1 - IF p > xPos THEN - z = RND * 13 - p = SIN((y + pe) / 100) * xPos + FOR y = woodY - 1 TO 0 STEP -1 + FOR x = woodX - 1 TO 0 STEP -1 + xStepCounter = xStepCounter + 1 + IF xStepCounter > woodX THEN + randomOffset = RND * 13 ' Small random noise for texture variation + xStepCounter = SIN((y + phaseOffset) / 100) * woodX ' Sine wave to create wavy grain pattern END IF - c1 = POINT(x, y + 1) - c2 = POINT(x, y) - c = (c1 * 2 + c2 + c * 3 + z) / 7 + RND * 1 + upperColor = POINT(x, y + 1) ' Get color from upper pixel + currentColor = POINT(x, y) ' Get color from current pixel + newColor = (upperColor * 2 + currentColor + newColor * 3 + randomOffset) / 7 + RND * 1 - ' Ensure color value is within the valid range - IF c < 0 THEN c = 0 - IF c > 15 THEN c = 15 + ' Ensure color value is within the valid range (0-15) + IF newColor < 0 THEN newColor = 0 + IF newColor > 15 THEN newColor = 15 ' Set the pixel color for the wood texture - PSET (x + 1, y), c + PSET (x + 1, y), newColor NEXT x NEXT y -END SUB \ No newline at end of file +END SUB diff --git a/2D GFX/Textures/wood.png b/2D GFX/Textures/wood.png new file mode 100644 index 0000000..00726c3 Binary files /dev/null and b/2D GFX/Textures/wood.png differ