Postman


In Postman you have a limited time in which to collect a letter from a post box and deliver it to the house without being caught by the dog. The number of post boxes can be varied for each game and letters must be collected from the one which is currently flashing.

    5  REM**POSTMAN**BBC VERSION** @ P.STANLE
Y,CONVERSION GRAHAM/THOMAS
   10 DIMB$(2),Y(25),X(25)
   20 HS=0:H$=""
   30 GOSUB820
   40 GOSUB340
   50 GOSUB520
   60 GOSUB250
   70 VDU7
   80 FORI=1TO3
   90   IFINKEY(-26) ANDFNAT(X-1,Y)=32 ANDFNA
T(X-1,Y+1)=32 A$=CHR$228+CHR$229:B$(1)=" "+CH
R$230:B$(2)=" "+CHR$231:X=X-1
  100   IFINKEY(-122) ANDFNAT(X+2,Y)=32 ANDFN
AT(X+2,Y+1)=32 A$=CHR$224+CHR$225:B$(1)=CHR$2
26:B$(2)=CHR$227:X=X+1
  110   IFINKEY(-58) ANDFNAT(X,Y-1)=32 ANDFNA
T(X+1,Y-1)=32 A$=CHR$232+" ":B$(1)=CHR$233:B$
(2)=CHR$236:Y=Y-1
  120   IFINKEY(-42) ANDFNAT(X,Y+2)=32 ANDFNA
T(X+1,Y+2)=32 A$=CHR$234+" ":B$(1)=CHR$235:B$
(2)=CHR$235:Y=Y+1
  130   COLOUR4:PRINTTAB(X1,Y1)"  ";TAB(X1,Y1
+1)"  ";TAB(X,Y)A$;TAB(X,Y+1)B$(1):Y1=Y:X1=X
  140   IFLT=1 ANDX=HX+1 ANDY=HY FORF=1TO10:S
OUND1,-15,F*10,1:NEXT:SC=SC+O:COLOUR3::PRINTT
AB(6,27);SC:GOSUB250
  150   IFLT=0 AND(ABS(X-PX)<2 ANDABS(Y-PY)<2
) LT=1:SC=SC+10:SOUND1,-15,RND(100)+100,3:COL
OUR3:PRINTTAB(6,27);SC:O=FNA
  160 NEXTI
  170 DY=DY-(DY<Y+1)+(DY>Y+1)
  180 IFDX<X DX=DX+1:D$=CHR$237
  190 IFDX>X DX=DX-1:D$=CHR$238
  200 IFFNAT(DX,DY)<>32 U=DX:DX=DX-(DX<X)+(DX
>X):IFU=DX DX=DX+1
  210 COLOUR5:PRINTTAB(HX,HY)CHR$242:COLOUR7:
PRINTTAB(DX1,DY1)" ";TAB(DX,DY)D$
  220 DY1=DY:DX1=DX:T=T-1:COLOUR5:PRINTTAB(16
,27);T" ":IFT=0 GOTO700
  230 IF(DX>X-2 ANDDX<X+3) AND(DY>Y-2 ANDDY<Y
+3) GOTO 370
  240 GOTO80
  250 COLOUR1:PRINTTAB(PX,PY)CHR$239;TAB(PX,P
Y+1)CHR$240;TAB(HX,HY)" "
  260 F=RND(LB):IFLB=1 F=1
  270 LT=0
  280 PX=X(F):PY=Y(F)
  290 COLOUR9:PRINTTAB(PX,PY)CHR$239;TAB(PX,P
Y+1)CHR$240
  300 HX=RND(8)*2+1:HY=RND(11)*2+1
  310 IFFNAT(HX,HY)<>32 ORFNAT(HX+1,HY)<>32 O
RFNAT(HX+2,HY)<>32 GOTO300
  320 COLOUR5:PRINTTAB(HX,HY)CHR$242
  330 RETURN
  340 INPUT''''"How many post boxes would you
 like thereto be? (any number between 1 and 2
5) "LB
  350 IFLB<1 ORLB>25 GOTO340
  360 RETURN
  370 COLOUR4:FORF=1TO12:PRINTTAB(X,Y)CHR$224
;CHR$225;TAB(X,Y+1)CHR$226" "
  380   SOUND0,-15,6,1:SOUND0,-15,5,1:SOUND1,
-15,5,2
  390   PRINTTAB(X,Y)CHR$232" ";TAB(X,Y+1)CHR
$233" "
  400   FORK=0TO100:NEXT
  410   PRINTTAB(X,Y)CHR$228;CHR$229;TAB(X,Y+
1)" "CHR$230
  420   FORK=0TO100:NEXT
  430   PRINTTAB(X,Y)CHR$234" ";TAB(X,Y+1)CHR
$235" "
  440   FORK=0TO100:NEXT
  450 NEXT
  460 PRINTTAB(X,Y)"  ";TAB(X,Y+1)"  ";TAB(DX
,DY)" "
  470 T=T-50:IFT<=0 GOTO700
  480 PRINTTAB(16,27);T"  "
  490 Y=23:X=17:Y1=Y:X1=X
  500 DY=1:DX=1:DY1=DY:DX1=DX
  510 GOTO60
  520 MODE2:VDU17,2,23;11,0;0;0;0;
  530 FORF=0TO25:PRINTTAB(0,F)CHR$241;TAB(19,
F)CHR$241:NEXT
  540 FORF=1TO18:PRINTTAB(F,0)CHR$241;TAB(F,2
5)CHR$241:NEXT
  550 FORF=1 TOLB
  560   Y=RND(5)*4-1:X=RND(5)*3
  570   IFFNAT(X,Y)<>32 ORFNAT(X,Y+1)<>32 GOT
O560
  580   Y(F)=Y:X(F)=X
  590 COLOUR1:PRINTTAB(X,Y)CHR$239;TAB(X,Y+1)
CHR$240:NEXT
  600 Y=23:X=17:Y1=Y:X1=X
  610 A$=CHR$228+CHR$229:B$(1)=" "+CHR$230:B$
(2)=" "+CHR$231
  620 COLOUR6
  630 SC=0:T=500:PRINTTAB(0,27)"SCORE:";SC;TA
B(11,27)"TIME:";T
  640 LT=0:PY=Y(LB):PX=X(LB)
  650 DY=1:DX=1:D$=CHR$237
  660 DY1=DY:DX1=DX
  670 HX=0:HY=26
  680 DEFFNA=INT(SQR((HY-PY)^2+(HX-PX)^2))
  690 RETURN
  700 FORF=0TO10:SOUND1,-15,100-F*10,1:NEXT
  710 COLOUR2
  720 CLS:PRINTTAB(0,5)"You ran out of time."
  730 COLOUR3
  740 PRINT''"You scored ";SC
  750 COLOUR6
  760 IFSC>HS HS=SC:PRINT'''"Well Done! That'
s a"''"new High Score."''"Please enter name."
:INPUTH$:GOTO790
  770 COLOUR5
  780 PRINT''"The High Score is"'';HS" held b
y postman"''H$
  790 FORF=0TO2000:NEXT:COLOUR7
  800 PRINTTAB(0,25)"Press space to play"''" 
     again."
  810 REPEATUNTILINKEY(-99):MODE7:GOTO40
  820 RESTORE830:FORF=224TO242:VDU23,F:FORI=0
TO7:READG:VDUG:NEXT,
  830   DATA120,126,236,231,255,255,124,56,0,
0,0,254,255,254,0,0
  840   DATA56,127,184,184,40,72,136,76,56,25
4,185,56,40,37,34,48
  850   DATA0,0,0,127,255,127,0,0,30,126,55,2
31,255,255,62,28
  860   DATA28,127,157,28,20,164,68,12,28,254
,29,29,20,18,17,50
  870   DATA16,56,56,56,56,56,56,56,124,254,1
24,56,126,184,40,32
  880   DATA28,62,91,73,62,62,93,157,28,28,28
,28,0,0,0,0
  890   DATA124,254,124,56,252,58,40,8,8,14,1
39,142,252,124,68,68
  900   DATA32,112,209,113,63,62,34,34,60,126
,255,126,66,126,126,126,102,102,102,126,126,1
26,126,255
  910   DATA126,195,189,165,165,189,195,126,3
2,126,255,126,86,86,126,126
  920   MODE7:PRINT'CHR$&91"    j`i 6`4h`` `7
!jd_n 6`4jdj"'CHR$&91"    j`! 5 5 `i  5 j !j 
7`5j*z"'CHR$&91"    ""   ""` ""`!  ! ""  "" !
 !"" """
  930   PRINT'CHR$&83"First collect a letter 
from the"'CHR$&83"flashing post box. Then del
iver it to"'CHR$&83"the little purple house."
  940   PRINT''CHR$&86"You have limited time,
and if you are"'CHR$&86"attacked by the dog,y
ou will lose time."
  950   PRINT'" Letters are collected or deli
vered on   the right-hand side of the post bo
xes   or houses."
  960   PRINT''CHR$&82"Move using the cursor 
keys."
  970   PRINT''CHR$136;CHR$&85"     Press SPA
CE to start."
  980   REPEATUNTILINKEY(-99):*FX15
  990   CLS:RETURN
 1000   DEFFNAT(X%,Y%)
 1010   VDU31,X%,Y%
 1020   A%=135:A%=USR&FFF4 AND&FFFF
 1030   =A% DIV256