10 REM **********
20 REM * ROBOTS *
30 REM **********
40 DEFINT A-Z
50 DIM TB(40,25)
60 NH=5
70 N1=5
80 NM=40
90 NR=N1
100 DIM R(30,1)
110 GOSUB 1610
120 GOSUB 1470
130 GOSUB 890
140 ON JS GOSUB 690,790
150 FOR I=1 TO 100
160 NEXT I
170 C=TB(HX,HY)
180 IF C<>H AND C<>0 THEN 490
190 PEN 1
200 LOCATE X,Y
210 PRINT N$;:TB(X,Y)=0
220 LOCATE HX,HY
230 PRINT H$;:TB(HX,HY)=H
240 X=HX
250 Y=HY
260 T=0
270 FOR I=1 TO NR
280 IF R(I,0)=0 THEN 420
290 T=1
300 RX=R(I,0)+SGN(HX-R(I,0))
310 RY=R(I,1)+SGN(HY-R(I,1))
320 C=TB(RX,RY)
330 IF C=M OR C=R THEN S=S+1:LOCATE R(I,0),R(I,1):PRINT N$;:TB(R(I,0),R(I,1))=0:R(I,0)=0:GOTO 420
340 IF C=H THEN 490
350 PEN 3
360 LOCATE R(I,0),R(I,1)
370 PRINT N$;:TB(R(I,O),R(I,1))=0
380 LOCATE RX,RY
390 PRINT R$;:TB(RX,RY)=R
400 R(I,0)=RX
410 R(I,1)=RY
420 NEXT I
430 IF T=0 THEN 450
440 GOTO 140
450 S=S+10
460 IF INKEY$<>"" THEN 460
470 IF NR<30 THEN NR=NR+1
480 GOTO 130
490 NH=NH-1
500 PEN 2
510 LOCATE X,Y
520 PRINT N$;:TB(X,Y)=0
530 LOCATE HX,HY
540 PRINT H$;:TB(HX,HY)=H
550 IF INKEY$<>"" THEN 550
560 IF NH>0 THEN NR=N1:GOTO 130
570 CLS
580 LOCATE 10,11
590 PRINT "SCORE :";S;
600 LOCATE 10,21
610 PRINT "UNE AUTRE ?";
620 PEN 1
630 IF INKEY$<>"" THEN 630
640 D$=INKEY$
650 IF D$="" THEN 640
660 IF D$<>"N" AND D$<>"n" THEN RUN
670 CLS
680 END
690 D$=UPPER$(INKEY$)
700 IF D$="Q" THEN HX=HX-1:HY=HY-1
710 IF D$="W" THEN HY=HY-1
720 IF D$="E" THEN HY=HY-1:HX=HX+1
730 IF D$="A" THEN HX=HX-1
740 IF D$="D" THEN HX=HX+1
750 IF D$="Z" THEN HX=HX-1:HY=HY+1
760 IF D$="X" THEN HY=HY+1
770 IF D$="C" THEN HY=HY+1:HX=HX+1
780 RETURN
790 J=JOY(0)
800 IF J=5 THEN HX=HX-1:HY=HY-1
810 IF J=1 THEN HY=HY-1
820 IF J=9 THEN HY=HY-1:HX=HX+1
830 IF J=4 THEN HX=HX-1
840 IF J=8 THEN HX=HX+1
850 IF J=6 THEN HX=HX-1:HY=HY+1
860 IF J=2 THEN HY=HY+1
870 IF J=10 THEN HY=HY+1:HX=HX+1
880 RETURN
890 CLS
900 PEN 1
910 LOCATE 1,25
920 PRINT "SCORE :";S;
930 IF NH=1 THEN 980
940 FOR HX=1 TO NH-1
950 LOCATE 20+HX,25
960 PRINT H$;
970 NEXT HX
980 PEN 2
990 ERASE TB
1000 DIM TB(40,25)
1010 FOR HX=1 TO 40
1020 LOCATE HX,1
1030 PRINT M$;:TB(HX,1)=M
1040 LOCATE HX,24
1050 PRINT M$;:TB(HX,24)=M
1060 NEXT HX
1070 FOR HY=2 TO 23
1080 LOCATE 1,HY
1090 PRINT M$;:TB(1,HY)=M
1100 LOCATE 40,HY
1110 PRINT M$;:TB(40,HY)=M
1120 NEXT HY
1130 FOR I=1 TO NM
1140 HX=INT(RND(1)*38)+2
1150 HY=INT(RND(1)*22)+2
1160 IF TB(HX,HY)<>0 THEN 1140
1170 LOCATE HX,HY
1180 PRINT M$;:TB(HX,HY)=M
1190 NEXT I
1200 PEN 2
1210 FOR I=1 TO NR
1220 R(I,0)=INT(RND(1)*38)+2
1230 R(I,1)=INT(RND(1)*22)+2
1240 IF TB(R(I,0),R(I,1))<>0 THEN 1220
1250 LOCATE R(I,0),R(I,1)
1260 PRINT R$;:TB(R(I,0),R(I,1))=R
1270 NEXT I
1280 HX=INT(RND(1)*38)+2
1290 HY=INT(RND(1)*22)+2
1300 IF TB(HX,HY)<>0 THEN 1280
1310 X=HX
1320 Y=HY
1330 FOR I=1 TO 5
1340 LOCATE HX,HY
1350 PEN 3
1360 PRINT CHR$(143);
1370 PRINT CHR$(7);
1380 FOR J=1 TO 50
1390 NEXT J
1400 LOCATE HX,HY
1410 PEN 1
1420 PRINT H$;:TB(HX,HY)=H
1430 FOR J=1 TO 50
1440 NEXT J
1450 NEXT I
1460 RETURN
1470 CLS
1480 MODE 1
1490 INK 0,1
1500 INK 1,25
1510 INK 2,23
1520 INK 3,16
1530 BORDER 22
1540 LOCATE 11,11
1550 PRINT "JOYSTICK ?";
1560 D$=INKEY$
1570 C=RND(1)
1580 IF D$="" THEN 1560
1590 IF D$="O" OR D$="o" THEN JS=2 ELSE JS=1
1600 RETURN
1610 SYMBOL 240,28,28,73,62,8,28,20,20
1620 SYMBOL 241,60,126,219,255,255,126,36,60
1630 SYMBOL 242,0,0,24,60,126,126,60,24
1640 H$=CHR$(240)
1650 H=240
1660 R$=CHR$(241)
1670 R=241
1680 M$=CHR$(242)
1690 M=242
1700 N$=CHR$(32)
1710 RETURN