Charlie Veniot 29th December 2022 at 10:14pm
' An original BASIC Anywhere Machine program by Charlie Veniot
screen _newimage(640,640,12)
_alert("click and hold, or touch and hold, anywhere on the screen, while dragging a short distance and see what happens. Try swiping and circular motions. Click/tap and release. Multiple quick clicks/taps and release.")
_alert("Refresh this web page to start a new drawing. Before closing this dialog to start drawing, resize this browser window if your device will let you, to alter the x/y ratio of the canvas.")
_delay 0.125
type tObject
exists%
x%
y%
c%
end type
max% = 640
sx = 640
sy = sx * _windowHeight / _windowWidth
dim g1_object(1 to max%) as tObject
screen _newimage(sx,sy,12)
do
'cls
for i = 1 to max%
if g1_object(i).exists% = TRUE then
if g1_object(i).x% = g1_object(i).y% then
g1_object(i).x% -= 1
g1_object(i).y% -= 1
elseif g1_object(i).x% > g1_object(i).y% then
g1_object(i).y% -= cint(g1_object(i).y%/g1_object(i).x%)
g1_object(i).x% -= 1
else
g1_object(i).x% -= cint(g1_object(i).x%/g1_object(i).y%)
g1_object(i).y% -= 1
end if
if (g1_object(i).x% <= (-sx)) OR (g1_object(i).y% <= (-sy)) then
g1_object(i).exists% = FALSE
elseif (g1_object(i).x% >= 0) AND (g1_object(i).y% >= 0) then
pset (g1_object(i).x%, g1_object(i).y%), g1_object(i).c%
pset (sx-1-g1_object(i).x%, g1_object(i).y%), g1_object(i).c%
pset (g1_object(i).x%, sy-1-g1_object(i).y%), g1_object(i).c%
pset (sx-1-g1_object(i).x%, sy-1-g1_object(i).y%), g1_object(i).c%
end if
end if
next i
getmouse x%, y%, w%, b%
if x% >= 0 and x% < sx and y% >= 0 and y% < sy and b% = 1 then
bDone = FALSE
i = 1
do
if g1_object(i).exists% = FALSE then
g1_object(i).exists% = TRUE : g1_object(i).x% = x% : g1_object(i).y% = y% : g1_object(i).c% = (int(rnd*16)) : pset (x%, y%), g1_object(i).c% : bDone = TRUE
pset (sx-1-x%, y%), g1_object(i).c%
pset (x%, sy-1-y%), g1_object(i).c%
pset (sx-1-x%, sy-1-y%), g1_object(i).c%
end if
i = i + 1
loop until ( i > max% ) OR (bDone = TRUE)
end if
_delay 0.01
loop