'\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
\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