ZX81 Program: JO.P


SYSTEM VARIABLES

PROG  : 16509
D-FILE: 24322
VARS  : 25115
E-LINE: 25340
STKBOT: 25340
STKEND: 25340


LEGEND

[A] means INVERSE A
{A} means GRAPHICS A
PRINT means treat as KEYWORD P


PROGRAM LISTING

  10 REM **JOUST**SLR/1984******
  11 LET H1=4
  12 LET H2=15
  13 LET L=0
  20 LET S=0
  30 LET M=3
  31 DIM I$(2)
  32 LET I$(1)="0"
  33 LET I$(2)="0"
  35 CLS
  36 REM SLOW
  40 PRINT AT 9,0;"[ ][ ]{F}{F}{F}{F}[ ][ ][ ]{7}";AT 9,22;"{7}[ ][ ][ ]{F}{F}{F}{F}[ ][ ]";AT 10,0;"[ ][ ][ ][ ][ ][ ]{7}";AT 10,25;"{7}[ ][ ][ ][ ][ ][ ]";AT 19,0;"{H}{H}{H}{H}{H}{H}[ ][ ][ ][ ][ ]{F}{F}{F}{F}[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]{H}{H}{H}{H}{H}{H}";AT 20,0;"{H}{H}{H}{H}{H}{H}{H}{F}[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]{F}{H}{H}{H}{H}{H}{H}{H}";AT 21,0;"{H}{H}{H}{F}{F}{F}[ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ][ ]{F}{F}{F}{H}{H}{H}"
  45 DIM A$(2,6)
  48 DIM B$(3,6)
  50 LET A$(1)=" {W}{D}{7}[ ]{R}"
  55 LET A$(2)="{D}{Q} {E}[ ]{7}"
  60 LET B$(1)=" {W}{D}{7}{A}{R}"
  65 LET B$(2)="{D}{Q} {E}{A}{7}"
  66 LET B$(3)=" {W}{D}{W}{A}{Q}"
  69 LET H$="{Q}{W}[ ]{E}"
  70 LET D1=1
  71 LET Q=0
  80 LET D2=2
  90 LET D3=1
 100 DIM X(6)
 110 DIM Y(6)
 120 LET X(1)=7
 130 LET X(3)=17
 140 LET X(5)=7
 150 LET Y(1)=2
 160 LET Y(3)=11
 170 LET Y(5)=26
 175 LET L=L+1
 176 LET L$=STR$ L
 177 FOR F=1 TO LEN L$
 178 LET L$(F)=CHR$ (CODE L$(F)+128)
 179 NEXT F
 180 PRINT AT 20,10;"[L][E][V][E][L][:]";L$
 181 PRINT AT X(1)+1,Y(1);B$(D1,1 TO 3);AT X(3)+1,Y(3);B$(D2,1 TO 3)
 190 LET F=SIN PI
 200 PRINT AT X(1),Y(1);B$(D1,1 TO 3);AT X(1)+1,Y(1);B$(D1,4 TO 6);AT X(3),Y(3);B$(D2,1 TO 3);AT X(3)+1,Y(3);B$(D2,4 TO 6)
 210 LET F=SIN PI
 220 PRINT AT X(5)+1,Y(5);A$(D3,1 TO 3)
 230 LET F=SIN PI
 250 PRINT AT X(5),Y(5);A$(D3,1 TO 3);AT X(5)+1,Y(5);A$(D3,4 TO 6)
 260 PAUSE 100
 265 REM FAST
 266 PRINT AT X(1),Y(1);"   ";AT X(1)+1,Y(1);"   ";AT X(3),Y(3);"   ";AT X(3)+1,Y(3);"   "
 267 PRINT AT X(5),Y(5);"   ";AT X(5)+1,Y(5);"   "
 270 LET Y(1)=Y(1)+1
 275 IF Y(1)=30 THEN LET Y(1)=0
 280 LET Y(3)=Y(3)-1
 285 IF Y(3)=-1 THEN LET Y(3)=29
 290 LET F=INT (2*RND)
 300 IF F=0 THEN LET X(1)=X(1)-(X(1)>H1)
 305 IF F=1 THEN LET X(1)=X(1)+(X(1)<7)
 306 LET F=INT (2*RND)
 310 IF F=0 THEN LET X(3)=X(3)-(X(3)>H2)
 315 IF F=1 THEN LET X(3)=X(3)+(X(3)<17)
 320 PRINT AT X(1),Y(1);B$(D1,1 TO 3);AT X(1)+1,Y(1);B$(D1,4 TO 6);AT X(3),Y(3);B$(D2,1 TO 3);AT X(3)+1,Y(3);B$(D2,4 TO 6)
 330 LET F$=INKEY$
 335 IF X(5)=9 OR X(5)=10 THEN GOTO 350
 340 LET Y(5)=Y(5)-(F$="Z")+(F$=".")
 350 IF Y(5)=30 THEN LET Y(5)=0
 360 IF Y(5)=-1 THEN LET Y(5)=29
 370 LET D3=(F$=".")+(2 AND F$="Z")+(D3 AND (F$<>"." AND F$<>"Z"))
 380 IF F$="M" THEN LET X(5)=X(5)-(2 AND X(5)>0)
 390 LET X(5)=X(5)+1
 400 IF X(5)=18 AND (Y(5)>5 AND Y(5)<26) THEN LET X(5)=X(5)-1
 410 IF X(5)=8 AND (Y(5)<10 OR Y(5)>19) THEN LET X(5)=X(5)-1
 415 IF X(5)=10 AND (Y(5)<10 OR Y(5)>19) THEN LET X(5)=X(5)+1
 420 PRINT AT X(5),Y(5);A$(D3,1 TO 3);AT X(5)+1,Y(5);A$(D3,4 TO 6)
 425 REM SLOW
 426 IF Q AND Q<>-1 AND (B$(2)="      " OR B$(1)="      ") THEN GOSUB 500
 430 IF Y(5)<6 AND X(5)>14 THEN GOTO 1000
 440 IF (Y(5)>=Y(3) AND Y(5)<=Y(3)+2) OR (Y(5)>=Y(1) AND Y(5)<=Y(1)+2) THEN GOTO 1500
 450 IF (Y(5)+2>=Y(3) AND Y(5)+2<=Y(3)+2) OR (Y(5)+2>=Y(1) AND Y(5)+2<=Y(1)+2) THEN GOTO 1500
 460 IF B$(1)="      " AND B$(2)="      " THEN GOTO 2500
 470 IF X(5)>=19 THEN GOTO 1130
 480 GOTO 265
 500 IF B$(1)="      " THEN GOTO 550
 510 LET X(3)=17
 520 LET Y(3)=11
 530 PRINT AT X(3),Y(3);B$(3, TO 3);AT X(3)+1,Y(3);B$(3,4 TO )
 535 LET B$(2)="{D}{Q} {E}{A}{7}"
 540 PAUSE 100
 541 LET Q=-1
 542 GOTO 255
 550 LET X(1)=7
 560 LET Y(1)=2
 570 PRINT AT X(1),Y(1);B$(3, TO 3);AT X(1)+1,Y(1);B$(3,4 TO )
 580 PAUSE 100
 586 LET B$(1)=" {W}{D}{7}{A}{R}"
 590 GOTO 541
1000 FOR F=18 TO X(5)+1 STEP -1
1010 IF F=18 THEN PRINT AT 18,Y(5);H$(1 TO 2)
1020 IF F=17 THEN PRINT AT F,Y(5);H$(1 TO 2);AT F+1,Y(5);H$(3 TO 4)
1030 IF F<17 THEN PRINT AT F,Y(5);H$(1 TO 2);AT F+1,Y(5);H$(3 TO 4);AT F+2,Y(5);"[ ]"
1050 NEXT F
1060 FOR F=X(5)+1 TO 19
1070 IF F<16 THEN PRINT AT F-1,Y(5);"   ";AT F,Y(5);A$(D3,1 TO 3);AT F+1,Y(5);H$(1 TO 2);AT F+2,Y(5);H$(3 TO 4)
1080 IF F=16 THEN PRINT AT F-1,Y(5);"   ";AT F,Y(5);A$(D3,1 TO 3);AT F+1,Y(5);H$(1 TO 2)
1090 IF F=17 THEN PRINT AT F-1,Y(5);"   ";AT F,Y(5);A$(D3,1 TO 3)
1100 IF F=18 THEN PRINT AT F-1,Y(5);"   ";AT F,Y(5);A$(D3,1 TO 3)
1110 IF F=19 THEN PRINT AT F-1,Y(5);"   ";
1120 NEXT F
1130 LET M=M-1
1135 PRINT AT 20,9;"[Y][E][E][ ][G][O][T][ ][H][I][T][-][=][-][=][-][=]"
1136 PAUSE 100
1137 LET L=L-1
1140 IF M>0 THEN GOTO 35
1150 PRINT AT 10,10;"YOU DIED<><>"
1160 PRINT AT 0,10;"SCORE:";S
1170 PRINT TAB 10;"PRESS ANY KEY"
1180 PAUSE 4E4
1190 RUN
1500 IF X(5)>=X(3)-1 AND X(5)<=X(3)+1 THEN GOTO 1600
1510 IF X(5)>=X(1)-1 AND X(5)<=X(1)+1 THEN GOTO 1700
1520 GOTO 460
1600 REM HIT?
1610 IF X(5)=X(3) AND B$(2)<>"      " THEN GOTO 1900
1620 IF X(5)=X(3)+1 AND B$(2)<>"      " THEN GOTO 1800
1625 IF B$(2)="      " THEN GOTO 460
1630 LET B$(2)="      "
1635 PRINT AT X(3),Y(3);"   ";AT X(3)+1,Y(3);"   ";AT X(5),Y(5);A$(D3, TO 3);AT X(5)+1,Y(5);A$(D3,4 TO )
1640 FOR F=X(3)+1 TO (7 AND (Y(3)<10 OR Y(3)>21))+(17 AND (Y(3)>9 AND Y(3)<22))
1650 PRINT AT F,Y(3)+1;" ";AT F+1,Y(3)+1;"{H}"
1660 NEXT F
1675 LET S=S+10
1676 LET Q=Q+(Q=0)
1680 GOTO 460
1700 REM HIT?
1710 IF X(5)=X(1) AND B$(1)<>"      " THEN GOTO 1950
1720 IF X(5)=X(1)+1 AND B$(1)<>"      " THEN GOTO 1800
1725 IF B$(1)="      " THEN GOTO 460
1730 LET B$(1)="      "
1735 PRINT AT X(1),Y(1);"   ";AT X(1)+1,Y(1);"   ";AT X(5),Y(5);A$(D3, TO 3);AT X(5)+1,Y(5);A$(D3,4 TO )
1740 FOR F=X(1)+1 TO (7 AND (Y(1)<10 OR Y(1)>21))+(17 AND (Y(1)>9 AND Y(1)<22))
1750 PRINT AT F,Y(1)+1;" ";AT F+1,Y(1)+1;"{H}"
1760 NEXT F
1770 GOTO 1675
1800 PRINT AT X(5),Y(5);"   ";AT X(5)+1,Y(5);"   "
1801 PRINT AT X(1),Y(1);B$(D1,1 TO 3);AT X(1)+1,Y(1);B$(D1,4 TO 6);AT X(3),Y(3);B$(D2,1 TO 3);AT X(3)+1,Y(3);B$(D2,4 TO 6)
1810 GOTO 1130
1900 PRINT AT X(5),Y(5);"   ";AT X(5)+1,Y(5);"   "
1901 IF Y(5)<=-1 THEN LET Y(5)=29
1905 LET Y(5)=Y(5)-2
1910 GOTO 460
1950 PRINT AT X(5),Y(5);"   ";AT X(5)+1,Y(5);"   "
1955 LET Y(5)=Y(5)+2
1956 IF Y(5)>=30 THEN LET Y(5)=0
1960 GOTO 460
2500 LET S=S+100
2510 PRINT AT 21,10;"[Y][E][E][ ][M][A][D][E][ ][I][T]"
2515 LET H1=H1-(H1>0)
2516 LET H2=H2-(H2>11)
2520 PAUSE 100
2530 GOTO 35
3000 SAVE "J[O]"
3010 PRINT AT 3,3;"   {T}    {Q} {E}  {R}    {T}   {T}";AT 4,3;"  {Q}    {T}{8} {Y}  {8}   {Q}{6}  {T}{5}";AT 5,3;"  {8}   {T} {8}  {Y} {8}    {8}   {5}";AT 6,3;"{Q}{6}{Q}  {Q}{6}{6}{Q}   {Y}{E} {Q}{6}{6}{Q}   {5}"
3020 FOR A=1 TO 15
3030 FOR R=A-1 TO 23-A STEP 2
3040 PRINT AT A+7,R+3;"{A}"
3050 NEXT R
3060 NEXT A
3070 PRINT AT 15,1;"BY:";AT 16,1;"STEVEN";AT 17,1;"REID"
3080 PRINT AT 21,0;"[P][R][E][S][S][ ][A][N][Y][ ][K][E][Y][ ][T][O][ ][B][E][G][I][N][ ][P][L][A][Y][=][-][=][-][=]"
3090 PAUSE 4E4
3100 RUN