100 W=40:H=25:X=60:S=2 110 WIDTH W,H:CONSOLE 0,H,0:LOCATE 0,0,0:DIM MP(50,50),AG(6) 120 RANDOMIZE VAL(RIGHT$(TIME$,2)) 130 LINE(32,16)-(607,199),7,B 140 MX=10:MY=10:BX=20:BY=12:XB=1:YB=1 150 AG(0)=2/SQR(3)/S:AG(1)=1/SQR(2)/S:AG(2)=1/SQR(3)/S:AG(3)=AG(2):AG(4)=AG(1):AG(5)=AG(0) 160 FOR I= 0 TO 40 170 MP(I,0)=2:MP(I,1)=2:MP(I,H)=2:MP(I,H+1)=2:MP(0,I)=2:MP(1,I)=2:MP(W-2,I)=2:MP(W-1,I)=2 180 NEXT 190 FOR I= 1 TO X:X=INT(RND(1)*(W-6))+3:Y=INT(RND(1)*(H-4))+3:MP(X,Y)=1:LOCATE X,Y:PRINT"B":NEXT 200 LOCATE 0,0:PRINT T:LOCATE MX-XM,MY-YM:PRINT" ";:LOCATE MX,MY:PRINT"M"; 210 LOCATE INT(BX-XB),INT(BY-YB):PRINT" ";:LOCATE INT(BX),INT(BY):PRINT"O"; 220 IF MX=INT(BX) AND MY=INT(BY) THEN LOCATE 0,1:PRINT"DEAD":BEEP:END 230 A$=INKEY$ 240 XM=(A$="4")-(A$="6"):YM=(A$="8")-(A$="2") 250 A=MP(MX+XM,MY+YM):B=MP(MX+XM*2,MY+YM*2) 260 IF A=0 THEN GOTO 300 270 IF B>0 THEN XM=0:YM=0:GOTO 300 280 LOCATE MX+XM*2,MY+YM*2:PRINT"B" 290 MP(MX+XM*2,MY+YM*2)=1:MP(MX+XM,MY+YM)=0 300 C=MP(INT(BX+XB),INT(BY)):D=MP(INT(BX),INT(BY+YB)):E=MP(INT(BX+XB),INT(BY+YB)) 310 F=INT(RND(1)*3):G=C OR D OR E 320 IF C>0 THEN XB=-SGN(XB)*AG(F):YB=SGN(YB)*AG(F+3):E=0 330 IF D>0 THEN XB=SGN(XB)*AG(F):YB=-SGN(YB)*AG(F+3):E=0 340 IF E>0 THEN XB=-SGN(XB)*AG(F):YB=-SGN(YB)*AG(F+3) 350 K=K+G:IF G>1 THEN K=0 360 IF K>64 THEN LOCATE 0,1:PRINT"CLEAR TIME=";T:BEEP 370 T=T+1:IF T>65534! THEN LOCATE 0,1:PRINT"TIMEOVER":BEEP:END 380 MX=MX+XM:MY=MY+YM:BX=BX+XB:BY=BY+YB 390 GOTO 200