All pastes #278368 Raw Edit

Something

public text v1 · immutable
·published 2006-12-14 00:38 UTC
rendered paste body
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#