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#