Better code readability
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Wed, 25 Jun 2025 21:45:30 +0000 (00:45 +0300)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Wed, 25 Jun 2025 21:45:30 +0000 (00:45 +0300)
2D GFX/Textures/wood.bas
2D GFX/Textures/wood.png [new file with mode: 0644]

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