SYNC ON:SYNC RATE 0
TYPE typoStat
x#
y#
xSpeed#
ySpeed#
ENDTYPE
DIM typos(50) AS typoStat
FOR x = 1 TO 50
typos(x).x# = RND(SCREEN WIDTH())
typos(x).y# = 10
typos(x).xSpeed# = RND(3)*.1
typos(x).ySpeed# = RND(3)*.1
NEXT x
TYPE indiStat
x#
y#
hit
face$
ENDTYPE
GLOBAL indi AS indiStat
indi.x# = SCREEN WIDTH()/2
indi.y# = SCREEN HEIGHT()/2
math_setup()
DO
CLS
FOR x = 1 TO 50
INC typos(x).x#, typos(x).xSpeed#
INC typos(x).y#, typos(x).ySpeed#
IF typos(x).x# <= 0 OR typos(x).x# >= SCREEN WIDTH() THEN typos(x).xSpeed# = -typos(x).xSpeed#
IF typos(x).y# <= 0 OR typos(x).y# >= SCREEN HEIGHT() THEN typos(x).ySpeed# = -typos(x).ySpeed#
typoDist# = math_getDist2D(typos(x).x#,typos(x).y#,indi.x#,indi.y#)
IF typoDist# <= 15
typos(x).xSpeed# = -typos(x).xSpeed#
typos(x).ySpeed# = -typos(x).ySpeed#
indi.hit = 1
ENDIF
TEXT typos(x).x#,typos(x).y#,"typo"
NEXT x
IF indi.hit
indi.face$ = "X___X"
INC time#,.01
IF time# >= 1 THEN time# = 0:indi.hit = 0
ELSE
indi.face$ = "\ /"
ENDIF
CIRCLE indi.x#,indi.y#, 30
CENTER TEXT SCREEN WIDTH()/2, SCREEN HEIGHT()/2,indi.face$
CENTER TEXT SCREEN WIDTH()/2, (SCREEN HEIGHT()/2)-50,"indi"
SYNC
LOOP
FUNCTION math_setup()
`setup required vectors for distance calculations
null = MAKE VECTOR3(1)
null = MAKE VECTOR2(2)
#CONSTANT vecDist3D = 1
#CONSTANT vecDist2D = 2
ENDFUNCTION
FUNCTION math_getDist2D(X1#,Y1#,X2#,Y2#)
SET VECTOR2 vecDist2D,X1#-X2#,Y1#-Y2#
dist# = LENGTH VECTOR2(vecDist2D)
ENDFUNCTION dist#