Xmas Eve


Xmas Eve is a race against time for Santa, who must rush to deliver presents before the inhabitants of the houses awake.

By manoeuvering Santa's sleigh left and right you can catch the presents as they are thrown down from above by the elves. Presents can then be dropped down the chimneys by pressing the M key. Each time a present is successfully delivered, the inhabitants of the house awake and switch on the lights, which causes the snow on the roof to melt at a rate proportional to the activity in the house. The more work Santa does the more he has to hurry, in order to complete his work without being seen.

   10 MODE2
   20 VDU23,1,0;0;0;0;
   30 GOSUB500
   40 hs=0:q=10
   50 COLOUR132:CLS
   60 GOSUB680
   70 sk=.98:s=0:t=5
   80 a$=CHR$224:b$=CHR$225:c$=CHR$226:x=17
   90 g=1:h=RND(18)
  100 PRINTTAB(12,0)"HI-SC:";hs
  110 p=0
  120 PRINTTAB(0,0)"PRESENTS:";s
  130 IFINKEY(-67) x=x-2*(x<17):a$=CHR$227:b$
=CHR$228:c$=CHR$229
  140 IFs=t t=t+5:GOSUB850
  150 IFINKEY(-98) x=x+2*(x>-1):a$=CHR$224:b$
=CHR$225:c$=CHR$226
  160 IFx<2 GOTO180
  170 PRINTTAB(x-2,10)"       ":COLOUR1:PRINT
TAB(x,10)a$;TAB(x+2,10)c$:COLOUR3:PRINTTAB(x+
1,10)b$:GOTO200
  180  PRINTTAB(x+2,10)"       ":COLOUR1:PRIN
TTAB(x,10)a$;TAB(x+2,10)c$:COLOUR3:PRINTTAB(x
+1,10)b$
  190 IFx=1 PRINTTAB(0,10)" "
  200 g=g+1:IFg>1 PRINTTAB(h,g-1)" ":COLOUR3:
PRINTTAB(h,g)CHR$230
  210 IFg=10 AND(h=x+2 ORh=x+1 ORh=x) p=1
  220 IFp>0 g=0
  230 Z%=0
  240 IFg=20 ANDFNATTR(h,g+1)=":" GOTO290
  250 IFg=20 PRINTTAB(h,20)" ":g=1:h=RND(17)
  260 IFp>0 ANDINKEY(-102) g=10:h=x-1-(a$=CHR
$227)-3*(c$=CHR$226):p=0
  270 IFRND(1)>sk q=RND(20)-1:IFFNATTR(q,27)<
>"_" COLOUR133:PRINTTAB(q,24)" ":COLOUR132:GO
TO390
  280 GOTO130
  290 PRINTTAB(h,20)" "
  300 IFFNATTR(h,27)<>"_" GOTO90
  310 s=s+1:PRINTTAB(0,0);"PRESENTS:";s
  320 COLOUR0:COLOUR131:PRINTTAB(h,26);"__";T
AB(h,27);"__"
  330 FORf=1 TO3:SOUND1,-15,f,1:NEXTf
  340 COLOUR132
  350 C%=0:FORf=1 TO17 STEP4:IFFNATTR(f,26)="
_" C%=C%+1
  360 NEXT
  370 IFC%=5 sk=sk-.02:CLS:GOSUB710:GOTO80
  380 GOTO90
  390 q=((q)DIV4)*4+1:COLOUR133:F=1:FORI=0TO3
:IFFNATTR(q+I,24)<>" " F=0
  400 NEXT:COLOUR132:IFF=0 GOTO130
  410 a$=CHR$227:b$=CHR$228:c$=CHR$229:IFx<0 
X=0
  420 FORf=10 TO1 STEP-.5:COLOUR1:PRINTTAB(x,
f)a$;TAB(x+2,f)c$:COLOUR3:PRINTTAB(x+1,f)b$:P
RINTTAB(x,f+1)"    ":SOUND1,-15,f*10,2:FORJ=0
TO200:NEXT,
  430   IFs>hs hs=s
  440   PRINTTAB(x,1)"   "
  450   PRINTTAB(h,g)" "
  460   COLOUR8:*FX15
  470   PRINTTAB(5,8)"GAME OVER"
  480   PRINTTAB(2,12)"ANY KEY TO PLAY"TAB(7,
13)"AGAIN"
  490   X=GET:CLS:GOTO60
  500   PRINT"    CHRISTMAS EVE"
  510   PRINT'"It is approaching   midnight o
n Xmas Eveand Santa is late.  You play the pa
rt ofSanta and you must  deliver presents    
which are thrown    down to you by your elves
. Having caughta present (by flyingdirectly b
elow it)"
  520   PRINT"you must move over achimney and
 drop a  present down it."
  530   PRINT''''"ANY KEY FOR MORE"
  540   X=GET:CLS
  550   PRINT'"When a present has  been dropp
ed down a chimney the family  in the house im
medi-ately start work on opening the present 
and they will turn  the light on."
  560   PRINT"Dropping another    present dow
n the    chimney of a lit    house will not c
ount"
  570   PRINT'"Beneath each roof   you will s
ee a patchof snow which melts as time elapses
.    This melts at a ratewhich is            
proportional to the activity in the     house
."
  580   PRINT''''"ANY KEY FOR MORE"
  590   X=GET:CLS
  600   PRINT'"As the presents mustbe placed 
down the chimney before       anyone sees you
, if all the snow has    melted under any    
roof without a      present being       dropp
ed before this occurs,it will      indicate t
hat the"
  610   PRINT"family is awake,and you will ha
ve"
  620   PRINT"to return at once."
  630   PRINT'"    Z   LEFT"
  640   PRINT'"    X   RIGHT"
  650   PRINT'"    M   DROP PRESENT"
  660   PRINT'"ANY KEY TO START"
  670   X=GET:CLS:RETURN
  680   VDU23,224,0,0,1,0,0,0,0,0
  690   VDU23,225,192,64,160,224,127,126,99,8
2
  700   VDU23,226,8,28,8,124,156,72,63,128
  710   VDU23,227,16,56,16,62,56,18,252,1
  720   VDU23,228,3,2,5,7,254,126,198,74
  730   VDU23,229,0,0,128,0,0,0,0,0
  740   VDU23,230,0,0,0,54,54,0,54,54
  750   VDU23,231,0,1,3,7,15,31,63,127
  760   VDU23,232,0,128,192,224,240,248,252,2
54
  770   VDU23,233,255,220,73,65,64,0,0,0
  780   VDU23,234,24,60,86,60,24,126,255,255
  790   VDU23,255,255,255,255,255,255,255,255
,255
  800   FORx=0 TO16 STEP4
  810     COLOUR5:PRINTTAB(x+1,21)":":COLOUR1
33:COLOUR6:PRINTTAB(x+1,22)CHR$231:COLOUR132:
PRINTTAB(x+2,22)CHR$232:PRINTTAB(x,23)CHR$231
;CHR$255;CHR$255;CHR$232:COLOUR7:COLOUR133:PR
INTTAB(x,24)CHR$233;CHR$233;CHR$233;CHR$233:C
OLOUR132
  820     COLOUR5:PRINTTAB(x,25)CHR$255;CHR$2
55;CHR$255;CHR$255;TAB(x,26)CHR$255"  "CHR$25
5;TAB(x,27)CHR$255"  "CHR$255;TAB(x,28)CHR$25
5;CHR$255;CHR$255;CHR$255;TAB(x,29)CHR$255;CH
R$255;CHR$255;CHR$255
  830   NEXTx
  840   GCOL0,0:FORI=255TO1023STEP256:MOVEI,6
4:DRAWI,223:NEXT
  850   COLOUR7
  860   FORI=1TO17STEP4:PRINTTAB(I,26)"  ";TA
B(I,27)"__":NEXT
  870   RETURN
  880   DEFFNATTR(X%,Y%)
  890   VDU31,X%,Y%
  900   A%=135:A%=USR&FFF4 AND&FFFF
  910   =CHR$(A% DIV256)