' This program exported from BASIC Anywhere Machine (Version [5.2.3].[2026.05.16.03.15]) on 2026.06.12 at 02:46 (Coordinated Universal Time)
' This program by Charlie Veniot is based on a "Golden Ball"
' image shared by bplus as a fun graphics programming challenge/exercise
' (Post to the QB64pe forums: https://qb64phoenix.com/forum/showthread.php?tid=4731&pid=42149#pid42149)
'
' Nothing fancy here: just making use of DRAW statements to get circular shapes'
' 🟠🟠🟠MAIN PROGRAM
SCREEN _NEWIMAGE(211,211,17)
Graphing_Loop_Start:
c% = INT( RND * 61 ) + 1
COLOR c%
FOR A1% = 100 TO 489 STEP 1
IF BETWEEN(A1%,300,480) THEN GOSUB DRAW_OUTER_EDGE
IF BETWEEN(A1%, 120, 480) THEN GOSUB DRAW_INNER_EDGE : GOSUB DRAW_CENTER
SLEEP 0.01
NEXT A1%
SLEEP 1
FOR A1% = 0 TO 359 STEP 60
DRAW "BM 105,105"
DRAW "TA " + A1%
DRAW "BU80"
PAINT (point(0), point(1)), c%, c%
SLEEP 0.01
NEXT A1%
PAINT (0, 0), c%, c%
PAINT (130, 105), c%, c%
SLEEP 1
GOTO Graphing_Loop_Start
END
' 🟠🟠🟠GOSUB ROUTINES
DRAW_OUTER_EDGE:
FOR A2% = 0 TO 300 STEP 60
DRAW "BM 105,105"
DRAW "TA " + A2%
DRAW "BU50"
DRAW "TA " + (A1% + A2%)
DRAW "BU50"
px1% = POINT(0) : py1% = POINT(1)
PSET (px1%, py1%)
DRAW "BM 105,105"
DRAW "TA " + A2%
DRAW "BU45"
DRAW "TA " + (A1% + A2%)
DRAW "BU45"
px2% = POINT(0) : py2% = POINT(1)
PSET (px2%, py2%)
IF A1% MOD 4= 0 THEN LINE (px1%, py1%) TO (px2%, py2%)
NEXT A2%
RETURN
DRAW_INNER_EDGE:
DRAW "BM 105,105"
DRAW "TA " + A1%
DRAW "BU55"
px1% = POINT(0) : py1% = POINT(1)
PSET (px1%, py1%)
DRAW "BM 105,105"
DRAW "TA " + A1%
DRAW "BU45"
px2% = POINT(0) : py2% = POINT(1)
PSET (px2%, py2%)
IF A1% MOD 4= 0 THEN LINE (px1%, py1%) TO (px2%, py2%)
RETURN
DRAW_CENTER:
DRAW "BM 105,105"
DRAW "TA " + A1%
DRAW "BU20"
px1% = POINT(0) : py1% = POINT(1)
PSET (px1%, py1%)
IF A1% MOD 10 = 0 THEN LINE (px1%, py1%) TO (105, 105)
RETURN