aUCBLogo Demos and Tests / bouncingparticles
be bouncingparticles
part 1000 4
end
be part partnum :pensize
intrepeat=10000
partx=(array partnum 1)
partv=array partx
parta=array partx
partcolor=array partx
partbounces=array partx
trails=false
setUpdateGraph false
setPointSize :pensize
disablePointSmooth
; enablePointSmooth
cs ht pu setpc [50 230 20]
setx 0 sety -200 - :pensize
pd rt 90 fd 1000 pu home pd
OnMouseLeftDown [trails=true]
OnMouseRightDown
[ cs ht pu setpc [50 230 20]
setx 0 sety -200 - :pensize
pd rt 90 fd 1000 pu home pd
trails=false
]
repeat partnum
[ j=repcount
partx.j=Float List 0 0
partv.j=List rnd-0.5 (rnd+1)
parta.j=List 0.0 -0.01
partbounces.j=Int 0
partcolor.j=HSB 360*j/(partnum+1) 1 1
]
norefresh
forever
[ if not trails [clearScreen]
partx+=partv
partv+=parta
repeat partnum
[ if partx.repcount.2 < -200
[ j=repcount
partx.j.2=-199.99
partv.j.2=-partv.j.2/1.5
partbounces.j=partbounces.j+1
if partbounces.j==10
[ partx.j=Float List 0 0
partv.j=List rnd-0.5 (rnd+1)
partbounces.j=Int 0
]
]
]
setPixel partx partcolor
if Key? [break]
updateGraph
]
end