SCREEN 1,320,200,3,1
WINDOW 2,"Object Collision Demo",(0,0)-(311,185),20,1
WIDTH 40
PALETTE 0,0,.45,0:PALETTE 1,.9,.9,.9
PALETTE 2,0,0,0:PALETTE 3,.9,.48,.15
ON BREAK GOSUB Quit:BREAK ON
ON COLLISION GOSUB Collide:COLLISION ON
DIM alien$(114):RESTORE AlienShapeData
FOR n=1 TO 114
 READ a:alien$=alien$+CHR$(a)
NEXT n
OBJECT.SHAPE 1,alien$
OBJECT.SHAPE 2,1:OBJECT.SHAPE 3,1
OBJECT.SHAPE 4,1:OBJECT.SHAPE 5,1
OBJECT.PLANES 2,5:OBJECT.PLANES 3,6
OBJECT.PLANES 4,7:OBJECT.PLANES 5,6,1
OBJECT.HIT 1,2,5
OBJECT.HIT 2,4,2
OBJECT.HIT 3,4,2
OBJECT.HIT 4,4,2
OBJECT.HIT 5,4,2
FOR n=2 TO 5
 OBJECT.X n,n*50-40:OBJECT.Y n,n*12+20
NEXT n
OBJECT.ON 1,2,3,4,5:OBJECT.START:LOCATE 19,5
PRINT "Druk de muis voor einde"

WHILE MOUSE(0)=0 'Main loop.
 OBJECT.X 1,MOUSE(1)-12:OBJECT.Y 1,MOUSE(2)-11
WEND
WHILE MOUSE(0)<>0:WEND

Quit:
 OBJECT.CLOSE:WINDOW CLOSE 2:SCREEN CLOSE 1:END

Collide:
 objectID=COLLISION(0)
 collisionID=COLLISION(objectID)
 LOCATE 1,1:PRINT SPACE$(20):PRINT SPACE$(20)
 LOCATE 1,1:PRINT "Object #";objectID;"raakt :"
 IF collisionID=-1 THEN PRINT "Boven RAND."
 IF collisionID=-2 THEN PRINT "Linker RAND."
 IF collisionID=-3 THEN PRINT "Onder RAND."
 IF collisionID=-4 THEN PRINT "Rechter RAND."
 IF collisionID>-1 THEN PRINT "object #";collisionID
 OBJECT.START:COLLISION ON
RETURN

AlienShapeData:
DATA   0,  0,  0,  0,  0,  0,  0,  0
DATA   0,  0,  0,  2,  0,  0,  0, 26
DATA   0,  0,  0, 11,  0, 24,  0,  3
DATA   0,  0,  0,127,128,  0,  1,255
DATA 224,  0,  7,255,248,  0, 31,255
DATA 254,  0,248,225,199,192,248,225
DATA 199,192,255,255,255,192, 12,127
DATA 140,  0, 12,127,140,  0,252,  0
DATA  15,192,252,  0, 15,192,  0,  0
DATA   0,  0,  0,  0,  0,  0,  0,  0
DATA   0,  0,  0,  0,  0,  0,  7, 30
DATA  56,  0,  7, 30, 56,  0,  0,  0
DATA   0,  0,  0,127,128,  0,  0,127
DATA 128,  0,  0,  0,  0,  0,  0,  0
DATA   0,  0

