This file is part of Miscellaneous Programs
. Download the collection to get this file.
Choose your armor, weapons and shield, then battle the black knight.
Content
Source Code
1 PRINT "From ZX COMPUTING": PAUSE 300
10 PAPER 4: BORDER 4: CLS : RESTORE : GO SUB 7000
100 INK ec: IF eh=1 THEN PRINT AT y-1,x-1;"_\u\s "
110 PRINT AT y,x;"\a\b\c ": IF x/2=INT (x/2) THEN PRINT AT y+1,x;"\d\e\f "
120 IF x/2<>INT (x/2) THEN PRINT AT y+1,x;"\g\h\i "
130 INK ac: IF ah=1 THEN PRINT AT y-1,29-x;" \t\u_"
140 PRINT AT y,28-x;" \l\k\j": IF x/2=INT (x/2) THEN PRINT AT y+1,28-x;" \o\n\m"
150 IF x/2<>INT (x/2) THEN PRINT AT y+1,28-x;" \r\q\p"
160 LET x=x-1: BEEP .003,10: PAUSE 2: BEEP .003,5: PAUSE 3: BEEP .003,0: PAUSE 5
170 IF x=16 AND ec=7 THEN GO TO 200
180 IF x<2 THEN GO TO 800
190 GO TO 100
200 LET ad=le+INT (RND*6)-ar-(ar=2)-INT (RND*6): LET ed=la+INT (RND*4)-er-(er=2)-INT (RND*4)
210 IF ad<=0 AND ed<=0 THEN GO TO 100
220 IF ad>0 AND ed>0 THEN GO TO 500+100*(ad>ed)
230 IF ad>0 THEN GO TO 600
240 GO TO 500
500 PRINT AT y-1,x-4;" \t/\": BEEP .1,50: BEEP .1,30
510 PRINT AT y-1,x-4;" ": BEEP .1,20: BEEP .1,10
520 RESTORE 9100: FOR f=0 TO 1: FOR g=0 TO 7: READ a: POKE USR CHR$ 163+g,a: NEXT g: PRINT AT y+1,x-6+f;CHR$ 163;: NEXT f
530 PRINT " ";AT y,x+3;" ";AT y,28-x;" "
540 LET x=x-1: LET ex=x+9: LET y=y-1: LET ah=0: LET em=em-INT (RND*6)-1: LET se=se-8: GO TO 100
600 PRINT AT y-1,x;"/\\s": BEEP .1,50: BEEP .1,30
610 PRINT AT y-1,x;" ": BEEP .1,50: BEEP .1,30
620 INK 7: RESTORE 9100: FOR f=0 TO 1: FOR g=0 TO 7: READ a: POKE USR CHR$ 162+g,a: NEXT g: PRINT AT y+1,x+4+f;CHR$ 162;: NEXT f
630 PRINT AT y+1,x-4;" ";AT y,x+3;" ";AT y,x-28;" "
640 LET x=x-1: LET ex=x+9: LET y=y-1: LET eh=0: LET am=am-INT (RND*4): LET sa=sa-5: GO TO 100
800 IF eh=1 AND ah=1 THEN GO TO 900
810 LET x=20: LET ex=10: LET y=y+1
820 IF eh=1 THEN LET x=5
830 IF ah=1 THEN LET ex=25
840 GO TO 1000
900 PRINT AT y-1,x;" ";AT y-1,28-x;" "
910 LET x=26: LET y=10: LET dc=ac: LET ac=ec: LET ec=dc: GO TO 100
1000 PRINT AT y-1,0;" ";TAB 31;" "; INK 7;AT y,0;" \l\k\j"; INK 0;TAB 28;" \a\b\c"; INK 7;AT y+1,0;" \o\n\m"; INK 0;AT y+1,28;" \g\h\i"
1010 FOR f=1 TO 2: PRINT AT y-f,0;" ";AT y-f,27;" ": NEXT f
1020 RESTORE 9060: FOR f=1 TO 2: FOR g=0 TO 7: READ a: POKE USR CHR$ (143+f)+g,a: NEXT g: NEXT f
1030 RESTORE 9100: FOR f=3 TO 12: FOR g=0 TO 7: READ a: POKE USR CHR$ (143+f)+g,a: NEXT g: NEXT f
1040 PRINT AT y+1,5;" "
1100 PRINT INK 0;AT y,ex;v$;"\a ";AT y+1,ex;" \e "; INK 7;AT y,x-1;" \b";w$;AT y+1,x-1;" \f "
1110 IF ex>x+2 THEN PRINT AT y,ex-1;" ";AT y,x+3;" "
1120 LET x=x+(INKEY$="8")-(INKEY$="5")+(x<6)-(x>25): LET x=x-(x>ex-2)
1130 LET ex=ex+SGN (-(ex>x+1 AND RND<.5)+(ex<5)-(ex>25)+(RND<.3)+(se<3 AND ex<25)): IF ex-x>2 THEN GO TO 1400
1200 LET a$=INKEY$: IF a$<"1" OR a$>"4" THEN LET a$="0"
1210 LET ez=INT (RND*4)+1: IF se<ez THEN LET ez=se-1
1220 IF se<3 THEN LET ez=0
1230 IF a$="0" THEN GO TO 1300
1240 LET sa=sa-VAL a$: IF sa<1 THEN GO TO 4000
1250 IF VAL a$+wa+(RND*7)+1>ez+es+er-1+(we=1) THEN LET em=em-1
1260 IF em<1 THEN GO TO 4500
1300 BEEP .03,45: LET se=se-ez
1305 IF se<1 THEN GO TO 4500
1310 IF ez+we+INT (RND*3)>VAL a$+sh+ar+(wa=1) THEN LET am=am-1
1320 IF am<1 THEN GO TO 4000
1330 IF sa>am THEN LET sa=am
1340 IF se>em THEN LET se=em
1400 PRINT AT 20,0; INK 7;sa;" ";AT 20,20; INK 0;se;" "
1405 PRINT AT 21,0; INK 7;am;" ";AT 21,20; INK 0;;em;" ": IF ex-x<3 THEN GO TO 1100
1410 FOR f=1 TO 2: IF sa<am THEN LET sa=sa+1: NEXT f
1420 IF se<em THEN LET se=se+1
1430 GO TO 1100
4000 PRINT INK 0;AT y,x;" ";v$;"\a "; INK 7;AT y+1,x;" \c\d"; INK 0;" \e "
4010 PRINT AT 20,0;"you die.": GO TO 5000
4500 PRINT INK 7;AT y,x;" \b";w$;" ";AT y+1,x;" \f "; INK 0;"\c\d"
4510 PRINT AT 20,20;"he dies": GO TO 5000
5000 INPUT "Play again? (Y/N)";b$
5005 IF b$="y" THEN GO TO 10
5010 STOP
7000 PRINT "Knight Fight"''
7050 RANDOMIZE : LET ah=1: LET eh=1: LET x=26: LET y=10
7060 LET cash=100: LET sh=0: LET ac=0: LET ec=7
7100 PRINT '"(1) chain-mail costs 40 coins,"'"(2) plate-mail 50."
7110 PRINT '"(1) light lances cost 10"'"(2) medium lances 20"'"(3)heavy lances 30."
7120 PRINT '"(1)swords cost 20"'"(2) axes 20"'"(3) maces 30."'"(4) Shields 20."
7130 FOR f=1 TO 21: FOR g=0 TO 7: READ a: POKE USR CHR$ (f+143)+g,a: NEXT g: NEXT f
7200 PRINT AT 21,0;"What armour do you want?": LET a$=INKEY$: IF a$<"1" OR a$>"2" THEN GO TO 7200
7210 BEEP .5,0: LET ar=VAL a$: LET cash=cash-30-10*ar
7220 PRINT AT 21,0;"What lance do you want? ": LET a$=INKEY$: IF a$<"1" OR a$>"3" THEN GO TO 7220
7230 BEEP .5,0: LET la=VAL a$: LET cash=cash-10*la
7240 PRINT AT 21,0;"What other weapon do you buy?": LET a$=INKEY$: IF a$<"1" OR a$>"3" THEN GO TO 7240
7250 BEEP .5,0: LET wa=VAL a$: LET w$=CHR$ (152+wa): IF cash-20-10*(wa=3)<0 THEN GO TO 7240
7260 LET cash=cash-10-10*(wa=3): IF cash<20 THEN GO TO 7300
7270 PRINT AT 21,0;"Do you buy a shield? (Y/N) ": LET a$=INKEY$: IF a$<>"y" AND a$<>"n" THEN GO TO 7270
7280 BEEP .5,0: LET cash=-20*(a$="y"): LET sh=(a$="y")
7320 LET sa=25: LET se=20: LET am=25: LET em=20
7360 CLS : PRINT ''"your opponent chooses:-"''
7370 GO TO 7400+INT (RND*2)*50
7400 PRINT "defence: medium armour."''"attack:-heavy lance and a mace."
7410 LET er=2: LET es=0: LET we=3: LET le=3: LET v$="\i": GO TO 8000
7450 PRINT "Defense:-Heavy armour and shield"''"Attack:-medium lance and sword."
7460 LET er=2: LET es=1: LET we=1: LET le=2: LET v$="\g"
8000 PRINT ''"(Press enter to start)": PAUSE 0: CLS
8010 PLOT 0,120: DRAW 250,0: PLOT 0,120: DRAW 0,30: GO SUB 8500
8020 DRAW 0,-20: GO SUB 8500: DRAW 0,30: GO SUB 8500
8030 DRAW 0,-10: GO SUB 8500: DRAW 0,10: GO SUB 8500
8040 DRAW 0,-30: GO SUB 8500: DRAW 0,20: GO SUB 8500: DRAW 0,-30
8050 PLOT 115,120: DRAW 0,10: DRAW 20,0,-PI: DRAW 0,-10
8060 FOR f=15 TO 230 STEP 70: PLOT f,130: DRAW 5,0: DRAW 0,7: DRAW -5,0,PI: DRAW 0,-7: NEXT f: GO TO 9140
8500 FOR f=1 TO 3: DRAW 0,5: DRAW 5,0: DRAW 0,-5: DRAW 5,0: NEXT f: DRAW 0,5: DRAW 5,0: DRAW 0,-5: RETURN
9000 DATA 1,10,15,23,31,59,51,33,236,61,191,255,255,255,255,255,0,128,224,240,248,244,243,224
9010 DATA 3,6,8,8,4,3,0,0,255,227,128,0,0,0,0,0,192,192,112,56,8,4,2,6
9020 DATA 1,1,0,1,3,2,6,0,254,248,192,128,1,2,2,0,224,192,64,128,0,0,0,0
9030 DATA 128,80,240,232,248,220,204,132,55,188,253,255,255,255,255,255
9040 DATA 0,1,7,15,31,47,207,7,128,128,0,128,192,64,96,0,127,31,3,1,128,64,64,0,7,3,2,1,0,0,0,0
9050 DATA 192,96,16,16,32,192,0,0,255,199,1,0,0,0,0,0,3,3,14,28,16,32,64,96
9060 DATA 120,248,112,56,40,246,214,116,30,31,14,28,20,111,107,48,0,0,0,0,0,0,255,255
9100 DATA 0,0,32,63,0,71,120,0,3,4,9,251,255,248,8,240
9110 DATA 60,60,60,60,54,34,34,102,60,60,60,60,108,68,68,54
9120 DATA 0,64,32,16,10,4,10,3,16,24,60,24,16,8,4,3,0,0,48,112,72,8,4,3
9130 DATA 0,2,4,8,80,32,80,8,24,60,24,16,32,64,192,192,0,0,12,14,18,16,32,192
9140 RETURN
9998 SAVE "knight" LINE 1
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

