DETECTIVE


Could you solve the cases and survive the perils of being a detective. Find out by playing this game.

Firstly you are briefed on the correct number-plates for the cars and trucks you are likely to see. Then you are stationed near a main road, watching cars and lorries travel past.

You are looking for a stolen vehicle whose plates have been changed. When you see a car or lorry you suspect, you must call up by radio the two squad cars in the area, and tell them to set up a road-block.

If you time it right, the suspected vehicle, which veers off the road when it sees you are interested, will be caught. If your suspected vehicle was stolen and you catch it, the driver comes quietly and your score increases. If however you catch a vehicle which has not been stolen, the driver dresses you down, and your score decreases. If you do not catch the suspected vehicle, then you are told whether your suspicions were correct but your score is unchanged.

How to play

Press C when you have read which cars and lorries have which number plates. You will then see cars and lorries travel by with the number plates they have attached to them displayed below the road. When you see a vehicle which you suspect has got the wrong number plate, then press A to get the white car at the top of the screen to set up a road block, or Z to have the other white car set up a trap. You may do this continuously, by trying to set up the road block just as the suspected vehicle passes by.

If you catch the vehicle you will hear police-car sirens as the other squad cars approach. Then you are told the result. Press RETURN to play again.

Programming hints

The cars and lorries are made up of two user-defined characters next to each other. They are animated, or made to travel along the road, in line 450. They are animated by PRINTing them in successive positions along the road, preceded by a space to erase the back half of the previously drawn vehicle.

You can make the game more difficult by making the vehicles whizz past faster. To do this reduce the value of K in line 400.


   10 REM DETECTIVE
   20 REM COPYRIGHT (C) G.LUDINSKI 1983
   30 MODE 5
   40 DIM V$(6),C(6),P$(6),VM$(6)
   50 B=128:BL=0:RD=1:GR=2:WH=3:SC=0
   60 VDU 19,GR,2,0,0,0
   70 GOTO 200
   80 REM
   90 REM U.D.G. CALCULATOR
  100 REM REM
  110 DEF FNB(N$)
  120 TF=0
  130 FOR L=0 TO 7
  140 TF=TF+(2^L)*VAL(MID$(N$,8-L,1))
  150 NEXT L
  160 =TF
  170 REM
  180 REM CAR AND LORRY SHAPES
  190 REM
  200 VDU 23,224,FNB("00001111"),FNB("00
001000"),FNB("00001000"),255,255,255,255
,FNB("00001100")
  210 VDU 23,225,FNB("11110000"),FNB("00
010000"),FNB("00010000"),255,255,255,255
,FNB("00000110")
  220 VDU 23,226,FNB("11000000"),FNB("11
111000"),FNB("11001000"),FNB("11001111")
,255,255,255,FNB("11001110")
  230 VDU 23,227,255,255,255,255,255,255
,255,FNB("01110001")
  240 CA$=CHR$(224)+CHR$(225):LO$=CHR$(2
27)+CHR$(226)
  250 C(1)=WH:P$(1)=" "+CA$:C(2)=RD:P$(2
)=" "+CA$:C(3)=2:P$(3)=" "+CA$
  260 FORI=1TO3:C(I+3)=C(I):P$(I+3)=" "+
LO$:NEXTI
  270 PROC_START
  280 REM
  290 REM DRAW FIELDS,ROAD,POLICE CARS
  300 REM
  310 COLOUR B+BL:COLOUR WH:CLS
  320 GCOL 0,GR:PROC_BLOCK(0,300,1280,60
)
  330 GCOL 0,BL:PROC_BLOCK(0,300,1280,60
)
  340 PROC_MIX
  350 COLOUR B+GR:COLOUR WH:PRINT TAB(0,
7);CA$;TAB(0,14);CA$:COLOUR BL:PRINT TAB
(0,30);CA$;TAB(10,30)"Score ";SC
  360 COLOUR WH:PRINT TAB(0,27)"Call up 
cars A or Z "
  370 REM
  380 REM LETS CARS TRAVEL ALONG ROAD
  390 REM
  400 COLOUR B+BL:K=20
  410 J=RND(6)
  420 FOR I=0 TO 17
  430   IF I=0 THEN COLOUR C(J):PRINT TA
B(I,21);P$(J):COLOUR B+BL:COLOUR WH:PRIN
T  TAB(6,24);VM$(J):FOR D=1 TO 5000:NEXT
 D
  440   COLOURC(J)
  450   I$=INKEY$(0):IF I$="" THEN PRINT
 TAB(I,21);P$(J):GOTO 480
  460   IF I$="H" THEN PROC_START:GOTO31
0
  470   GOTO510
  480   FOR D=1 TO K:NEXTD
  490 NEXTI:COLOUR0:PRINTTAB(17,21)"   "
;
  500 COLOUR WH:GOTO 410
  510 PROC_CHASE
  520 REM
  530 REM FINAL MESSAGE & POLICE SIREN
  540 REM
  550 COLOUR BL
  560 IF EN=1 AND (VN$=VM$(A) OR VN$=VM$
(BB)) THEN SC=SC+1:PRINTTAB(0,27)"It's a
 fair cop, guv.":GOTO 600
  570 IF EN=1 THEN PRINTTAB(0,27)"I'll s
ue you, fool! ":SC=SC-1:GOTO600
  580 IF VN$=VM$(A) OR VN$=VM$(BB) THEN 
PRINTTAB(0,27)"Stolen car has gone ":GOT
O600
  590 PRINTTAB(0,27)"Chasing wrong car  
 "
  600 *FX15,0
  610 FOR I=1 TO 4:SOUND 1,-15,109,10:SO
UND 1,-15,101,10:NEXT
  620 PRINTTAB(0,30)"Press RETURN       
 ";:INPUT RB$:GOTO 270
  630 REM
  640 DEFPROC_BLOCK(X,Y,W,H)
  650 MOVEX,Y:MOVEX+W,Y
  660 PLOT85,X,Y+H
  670 PLOT85,X+W,Y+H
  680 ENDPROC
  690 DEFPROC_START
  700 COLOUR B+BL:CLS
  710 FORI=1 TO 6
  720   V$(I)=CHR$(64+RND(26))+CHR$(64+R
ND(26))+CHR$(64+RND(26))+STR$(RND(10)-1)
+STR$(RND(10)-1)+STR$(RND(10)-1)+CHR$(64
+RND(26))
  730 NEXT
  740 FORI=1 TO 6 STEP 2
  750   COLOURC(I):PRINTTAB(3,10+(4*INT(
(I-1)/2)));P$(I);:COLOURC(I+1):PRINTTAB(
12,10+(4*INT((I-1)/2)));P$(I+1)
  760   COLOURC(I):PRINT'"  ";V$(I);"  "
;:COLOUR C(I+1):PRINTV$(I+1):PRINT
  770 NEXT I
  780 COLOUR WH:PRINTTAB(0,27)"Press C t
o continue"
  790 RB$=INKEY$(6000)
  800 ENDPROC
  810 DEFPROC_MIX
  820 A=RND(6):BB=RND(6):IF BB=A THEN GO
TO820
  830 FOR I=1 TO 6
  840   VM$(I)=V$(I)
  850 NEXTI
  860 WK$=VM$(A):VM$(A)=VM$(BB):VM$(BB)=
WK$
  870 ENDPROC
  880 DEFPROC_CHASE
  890 COLOUR B+BL:PRINT TAB(0,21)SPC(19)
,"                   ";
  900 COLOUR B+GR
  910 CL=C(J):VT$=RIGHT$(P$(J),2):VN$=VM
$(J)
  920 X=2:Y=19:GO=0:X1=X:Y1=Y:EN=0
  930 COLOUR WH:PRINTTAB(0,7);CA$
  940 PRINTTAB(0,14)CA$
  950 I$=INKEY$(0)
  960 IF I$="A" THEN PROC_ROAD(7)
  970 IF I$="Z" THEN PROC_ROAD(14)
  980 IF EN=1 THEN 1080
  990 COLOUR CL:PRINT TAB(X,Y);VT$;
 1000 PRINTTAB(X1,Y1)"  ";
 1010 Y1=Y:X1=X
 1020 I$=INKEY$(0)
 1030 IF I$="A" THEN PROC_ROAD(7)
 1040 IF I$="Z" THEN PROC_ROAD(14)
 1050 X=X+1:IF X > 18 THEN X=2
 1060 Y=Y-INT(2*RND(1)):IF Y<0 THEN Y=19
 1070 GO=GO+1:IF GO<50 THEN GOTO 950
 1080 ENDPROC
 1090 DEFPROC_ROAD(L)
 1100 COLOUR WH:PRINTTAB(0,L)CA$;"------
------------"
 1110 FOR D=1 TO 100:NEXT D
 1120 PRINT TAB(0,L)CA$;SPC(18)
 1130 IF Y=L THEN EN=1
 1140 ENDPROC