PROGRAM Animation2

INTEGER I,J,K,L,Wind,Scr,Hits
WORD TempX,TempY
Bob BallShape1,BallShape2

? Program loads 2 bobs and allows them to bounce in screen for 50
? Collisions. Requires the presence of the file 'ball'

Scr=SCREEN #2 (0,200,3,1,0)
Wind=WINDOW #1 (0,0,320,200,0,0,0,0,-1,-1,48,0,2)
IF NOT Scr OR NOT Wind THEN GOTO Ending1
PRINT "Two Bobs"
CURS_INV

I=FILELENGTH("ball")
IF NOT I THEN
   WINDOW_OUTPUT #0
   PRINT "Unable To Find File 'Ball'"
   GOTO Ending1
ENDIF
OPEN (1,"ball")
J=OBJECT #1 (1,I,@BallShape1,2)
CLOSE (1)
OPEN (1,"ball")
K=OBJECT #2 (1,I,@BallShape2,2)
IF NOT J OR NOT K THEN
   WINDOW_OUTPUT #0
   PRINT "J,K"
   PRINT J,K
   PRINT "Unable To Open Objects"
   GOTO Ending2
ENDIF

BallShape1.Y=40
BallShape1.X=10
BallShape1.VX=4
BallShape1.VY=1
BallShape2.X=290
BallShape2.Y=150
BallShape2.VX=-2
BallShape2.VY=-1

ON COLLISION EVENT
   INC(Hits)
   I=OBJ1
   J=OBJ2
   IF J<0 THEN
      ? Boundary Collision
      WHEN J IS
         [-1,-2]
            WHEN I IS
               [1] BallShape1.VY=-BallShape1.VY
               [2] BallShape2.VY=-BallShape2.VY
            ENDCASES
         [-3,-4]
            WHEN I IS
               [1] BallShape1.VX=-BallShape1.VX
               [2] BallShape2.VX=-BallShape2.VX
            ENDCASES
      ENDCASES
   ELSE
      ? Collision Between The 2 Objects-Exchange Velocities
      TempX=BallShape1.VX
      TempY=BallShape1.VY
      BallShape1.VX=BallShape2.VX
      BallShape1.VY=BallShape2.VY
      BallShape2.VX=TempX
      BallShape2.VY=TempY
   ENDIF
END EVENT

&ANIMATE 1

{Sleeper}
SLEEP
IF Hits<50 THEN GOTO Sleeper

{Ending2}
OBJECT_CLOSE #2
OBJECT_CLOSE #1
{Ending1}
WINDOW_CLOSE #1
SCREEN_CLOSE #2
END
