DEF MOVE
VAR SP=CALLIDX
VAR X,Y,I
SPOFS SP OUT X,Y
X=X+SPVAR(SP,0)*COS(SPVAR(SP,1))
Y=Y-SPVAR(SP,0)*SIN(SPVAR(SP,1))
SPOFS SP,X,Y '
IF 0THEN '
FOR I=0TO N
IF SPUSED(I)!=0THEN
VAR EX,EY
SPOFS I OUT EX,EY
IF SQR((EX-X)*(EX-X)+(EY-Y)*(EY-Y))<=16THEN
PRINT "A";
ENDIF
ENDIF
NEXT I
ENDIF '
IF X>0||X<400THEN
SPOFS SP,MIN(MAX(X,0),400),Y '
SPVAR SP,1,PI()-SPVAR(SP,1) '
ENDIF
IF Y>0||Y<240THEN
SPOFS SP,X,MIN(MAX(Y,0),400) '
SPVAR SP,1,-SPVAR(SP,1)
ENDIF
END
VAR N=200 'スプライトの数
VAR SP,I
ACLS '
FOR I=1TO N
SPSET 0OUT SP
SPOFS SP,RND(400),RND(240) '
SPVAR SP,0,RND(3)+1
SPVAR SP,1,RNDF()*2*PI()
SPFUNC SP,"MOVE"
NEXT I
WHILE 1
WAIT 1
CALL SPRITE
WEND
多分これのNを調節すればいつか処理落ちするはずです。