1 LV=1 2 GOSUB 7000 5 POKE 12314,0:EXEC 54316:SET*2,3,4 6 GOSUB9900:ON LV GOSUB 10000,10100,10200,10300,10400,10500,10600,10700 7 PRINT@1,"CASTLE ";C$:PRINT@32,"WIND" 9 GOSUB9300:GOSUB20000:GOSUB9400 10 REM --- START --- 20 V=10-RND(20):GOSUB8600 30 GOSUB 8140:GOSUB 8300:GOSUB 8200:GOSUB 8100 40 B=A*(3.1415926/180) 50 G=9.8 70 P=(F*F*SIN(2*B))/G 80 I=0.1 110 X=0+INT(F*COS(B)*I)+1+(V*1.5) 120 Y=YC-8-INT(F*SIN(B)*I-0.5*G*I*I)-1 130 RESET(XX,YY) 132 IF Y<12 THEN GOTO 155 133 IF X<0 THEN GOTO 162 135 IF X>159 OR Y>124 THEN GOTO 175 136 IF X>111 AND Y>YP THEN GOTO 175 137 XX=X:YY=Y 140 IF POINT(X,Y)>0 THEN GOTO 170 150 SET(X,Y,1) 155 SOUND 200-Y,1 162 I=I+0.1:GOTO 110 165 GOTO 10 170 IF X>=XP THEN GOSUB 8500:GOSUB 8400 175 NB=NB-1:GOSUB9500 177 IF FC=0 THEN GOTO 300 179 IF NB=0 THEN GOTO 200 180 GOTO 10 190 END 200 REM --- GAME OVER --- 210 PRINT@8*80+35,"GAME OVER":PRINT@10*80+27,"YOU RAN OUT OF PROJECTILES" 220 PRINT@14*80+31,"PLAY AGAIN ? (Y/N)" 230 K$=INKEY$:IF K$="" THEN GOTO 230 240 IF K$="Y" THEN GOTO 1 250 IF K$="N" THEN END 260 GOTO 230 300 REM --- NEXT LEVEL --- 310 PRINT@8*80+35,"WELL DONE !":PRINT@10*80+28,"YOU DESTROYED THIS CASTLE" 320 PRINT@14*80+27,"PRESS A KEY FOR NEXT TARGET" 325 GOSUB 8700 330 K$=INKEY$:IF K$="" THEN GOTO 330 335 IF LV=8 THEN GOTO 7600 340 LV=LV+1 350 GOTO 5 7000 REM --- INSTRUCTIONS --- 7010 POKE 12314,1:EXEC 54316:CLS1 7012 POKE251,114 7015 X=46:Y=14 7020 A$="2935293329353035334329354343293330353035293329353333":GOSUB7500 7022 A$="3343323332413843334332414343323338433843323333433235":GOSUB7500 7024 A$="3343333343333843334333434343333338433843333333433333":GOSUB7500 7026 A$="3135353531353943313531354343353539433943353531353535":GOSUB7500 7027 POKE251,50:PRINT@211,"(C) OLIPIX 2024":POKE251,114 7030 PRINT@241 7032 PRINT " YOUNG AND AMBITIOUS LORD OF AQUITANIA" 7034 PRINT " YOU SWEAR TO REVENGE YOUR FAMILY" 7036 PRINT " KILLED BY THE KING OF FRANCIA." 7038 PRINT 7040 PRINT " ARMED WITH YOUR MIGHTY CATAPULT," 7042 PRINT " YOU MUST DESTROY ONE BY ONE" 7044 PRINT " THE 8 ROYAL CASTLES !" 7046 PRINT 7048 PRINT " YOUR AMMUNITIONS ARE LIMITED 7050 PRINT " AND THE WIND WILL NOT HELP YOU.":PRINT 7052 PRINT " CHOOSE THE RIGHT ANGLE WITH SPACE" 7054 PRINT " AND THEN THE ADEQUATE FORCE AGAIN" 7056 PRINT " WITH SPACE. GOOD LUCK !":PRINT 7057 PRINT:POKE251,31 7058 PRINT " PRESS A KEY TO PLAY" 7060 IF INKEY$="" THEN GOTO 7060 7490 RETURN 7500 REM --- AFFICHE TITRE --- 7510 FOR I=1 TO LEN(A$) STEP 2 7520 PRINT@X,CHR$(100+VAL(MID$(A$,I,2))) 7525 X=X+1 7530 NEXT I 7535 X=X+Y 7540 RETURN 7600 REM --- VICTORY --- 7610 POKE 12314,1:EXEC 54316:CLS1 7612 POKE251,114 7615 X=48:Y=19 7620 A$="334333293533433343432941373438433329353833":GOSUB7500 7622 A$="333333294333433343433333333838343329433835":GOSUB7500 7624 A$="3232333241324132414332353437384333324142":GOSUB7500 7630 PRINT@241 7632 PRINT " VICTORY ! YOU HAVE DESTROYED ALL " 7634 PRINT " THE ROYAL CASTLES. THE KING WILL " 7636 PRINT " NEVER TRY TO KILL YOUR FAMILY AGAIN." 7638 PRINT " IT'S LOGICAL BECAUSE YOUR ONLY HAD" 7640 PRINT "ONE FAMILY AND THERE ARE ALREADY DEAD" 7644 PRINT 7646 PRINT " WANDERING THROUGH YOUR KINGDOM OF " 7648 PRINT " AQUITANIA, YOU NOW FEEL BORED AND" 7650 PRINT " DEPRESSED, DESTROYED BY SADNESS." 7651 PRINT 7652 PRINT "TIME HAS PASSED AND THE KING OF FRANCIA" 7654 PRINT "REBUILT HIS ROYAL CASTLES, LEAVING YOU" 7656 PRINT " NO CHOICE BUT TO GO BACK TO WAR !":PRINT 7657 PRINT:POKE251,31 7658 PRINT " PRESS A KEY TO PLAY AGAIN" 7660 IF INKEY$="" THEN GOTO 7660 7690 GOTO 1 8100 REM --- CATAPULTE TIRE --- 8110 FOR I=1 TO 5:RESET(I,YC-5):NEXTI 8115 FOR I=5 TO 1 STEP -1:SET(I,YC-10+I,2) 8120 SOUND I*2,1:NEXTI 8130 RETURN 8135 REM --- REPOS CATAPULTE --- 8140 FOR I=1 TO 5:RESET(I,YC-10+I):NEXTI 8155 FOR I=1 TO 5:SET(I,YC-5,2):NEXTI 8160 RETURN 8200 REM --- CHOIX PUISSANCE --- 8205 FORI=0TO41:RESET(I,123):NEXT 8207 SET(0,124,1):SET(20,124,1):SET(41,124,1) 8210 XF=0:SF=1 8220 SET(XF,123,2):RESET(XF+1,123) 8230 IF INKEY$<>"" THEN GOTO 8260 8235 XF=XF+SF:IF XF=41 OR XF=0 THEN SF=-SF 8240 GOTO 8220 8260 F=XF+10:RETURN 8300 REM --- CHOIX ANGLE --- 8310 A=90:AA=-2 8320 XB=XA:YB=YA 8322 XA=1+15*COS(A/57.29577951):YA=YC-15*SIN(A/57.29577951) 8325 RESET(XB,YB):SET(XA,YA,1) 8330 K$=INKEY$ 8335 IF K$=" " THEN RESET(XA,YA):RETURN 8340 A=A+AA 8350 IF A>90 THEN A=90:AA=-AA 8355 IF A<2 THEN A=2:AA=-AA 8370 GOTO 8320 8400 REM --- ROUTINE ECROULEMENT --- 8410 FOR J=Y+4 TO Y-10 STEP -1:FOR I=X-4 TO X+4 8415 IF J>YP-1 OR I>159 THEN GOTO 8490 8420 IF POINT(I,J)<1 THEN GOTO 8490 8430 IF POINT(I,J+1)=1 THEN GOTO 8490 8440 C=0 8445 IF J+C>YP-1 THEN GOTO 8490 8460 RESET(I,J+C) 8470 C=C+1 8480 SET(I,J+C,1) 8485 IF POINT(I,J+C+1)=0 THEN GOTO 8445 8487 FC=FC-0.2:SOUND 200,1 8490 NEXT I:NEXT J 8493 GOSUB 9350 8495 RETURN 8500 REM --- EXPLODE --- 8510 AX=X:BX=Y 8520 FOR I=1 TO 4 8530 SET(AX-I,BX-I,1):SET(AX,BX-I,1):SET(AX-I,BX,1) 8531 IF AX+I>159 THEN GOTO 8533 8532 SET(AX+I,BX-I,1):SET(AX+I,BX,1) 8533 IF BX+I>=YP THEN GOTO 8540 8535 SET(AX-I,BX+I,1):SET(AX,BX+I,1) 8536 IF AX+I>159 THEN GOTO 8540 8537 SET(AX+I,BX+I,1) 8540 RESET(AX-I,BX-I):RESET(AX,BX-I):RESET(AX-I,BX) 8542 IF AX+I>159 THEN GOTO 8544 8543 RESET(AX+I,BX-I):RESET(AX+I,BX) 8544 IF BX+I>=YP THEN GOTO 8550 8545 RESET(AX-I,BX+I):RESET(AX,BX+I) 8546 IF AX+I>159 THEN GOTO 8548 8547 RESET(AX+I,BX+I) 8548 SOUNDI,1 8550 NEXT I 8555 FC=FC-5 8560 RETURN 8600 REM --- AFFICHAGE VENT --- 8602 FOR I=1 TO 10 8603 RESET(67-I,8):RESET(67-I,9):RESET(67-I,10) 8604 RESET(67+I,8):RESET(67+I,9):RESET(67+I,10) 8605 NEXT I 8610 SET(67,8,1):SET(67,9,1):SET(67,10,1) 8612 IF V=0 THEN GOTO 8650 8615 J=1:IF V<0 THEN J=-1 8620 FOR I=0 TO V STEP J 8630 SET(67+I,9,1):NEXT I 8632 SET(67+I-J-J,8,1):SET(67+I-J-J,10,1) 8650 RETURN 8700 REM --- VICTOIRE --- 8710 SOUND102,3:SOUND135,3:SOUND154,3:SOUND165,6:SOUND154,3:SOUND165,6 8720 RETURN 9000 REM --- RECTANGLE --- 9010 FOR I=0 TO L-1 9020 FOR J=0 TO H-1 9030 SET(XO+I,YO+J,1) 9040 NEXT J 9050 NEXT I 9060 RETURN 9069 REM --- RECTANGLE DELETE --- 9070 FOR I=0 TO L-1:FOR J=0 TO H-1 9075 RESET(XO+I,YO+J) 9080 NEXT J:NEXT I 9090 RETURN 9100 REM --- CRENEAUX --- 9110 FOR I=0 TO C-1 9120 SET(XO+I*2,YO,1):SET(XO+I*2,YO+1,1):SET(XO+I*2,YO+2,1) 9130 NEXT I 9140 RETURN 9300 REM --- DESSIN GAUGE ---- 9310 FOR I=99 TO 156:SET(I,4,1):SET(I,10,1):NEXT I 9320 FOR I=5 TO 9:SET(99,I,1):SET(156,I,1):NEXT I 9330 FOR I=0 TO FC-1:FOR J=0 TO 4 9335 SET(100+I,5+J,2):NEXT J:SOUND100+I,1:NEXT I 9340 RETURN 9349 REM --- MAJ GEAUGE --- 9350 IF FC<0 THEN FC=0 9355 FOR I=FO TO FC STEP -1:FOR J=0 TO 4 9360 RESET(100+I,5+J):NEXT J:NEXT I 9365 FO=FC 9370 RETURN 9400 REM --- DESSIN NB BOULETS --- 9410 FOR I=0 TO NB-1 9420 SET(I*3+2,9,1):SET(I*3+3,9,1):SET(I*3+2,10,1):SET(I*3+3,10,1) 9430 NEXT I 9440 RETURN 9500 REM --- MAJ NB BOULETS --- 9510 RESET(NB*3+2,9):RESET(NB*3+3,9):RESET(NB*3+2,10):RESET(NB*3+3,10) 9520 RETURN 9900 REM --- SOL --- 9902 YS=60+RND(60):YC=YS:D=RND(10):Q=3 9905 FOR XS=0 TO 15:SET(XS,YS,1):SET(XS,YS+1,1):NEXT XS 9910 FOR XS=15 TO 125 9915 Q=RND(5) 9920 IF Q>=3 THEN YS=YS+RND(2)*(XS<70)-RND(2)*(XS>=70) 9930 IF Q=2 THEN YS=YS-RND(3)*(XS<70)+RND(3)*(XS>=70) 9940 IF YS>121 THEN YS=121 9945 IF YS<30 THEN YS=30 9948 SET(XS,YS,1):SET(XS,YS+1,1):SET(XS,YS+2,1) 9950 NEXT XS 9955 YP=YS:REM SOL CHATEAU 9960 FOR XS=125 TO 159:SET(XS,YS,1):SET(XS,YS+1,1):NEXT XS 9970 RETURN 10000 REM --- LEVEL 1 --- 10005 C$="OF LESPARRE" 10010 XO=135:L=11:H=13:YO=YS-H:GOSUB9000 10020 XO=134:C=7:YO=YS-14:GOSUB9100 10030 FC=20:FO=FC:REM FORCE CHATEAU 10040 XP=134:REM DEBUT CHATEAU 10050 NB=7:REM NOMBRE BOULETS 10060 RETURN 10100 REM --- LEVEL 2 --- 10105 C$="OF ROQUETAILLADE" 10110 XO=130:L=27:H=7:YO=YS-H:GOSUB9000 10120 XO=130:L=5:H=5:YO=YS-5-H:GOSUB9000 10130 XO=152:L=5:H=5:YO=YS-5-H:GOSUB9000 10140 XO=129:C=4:YO=YS-11:GOSUB9100 10150 XO=151:C=4:YO=YS-11:GOSUB9100 10160 FC=40:FO=FC:REM FORCE CHATEAU 10165 XP=128:REM DEBUT CHATEAU 10170 NB=10:REM NOMBRE BOULETS 10195 RETURN 10200 REM --- LEVEL 3 --- 10205 C$="OF CASTELNAU" 10210 XO=143:L=9:H=3:YO=YS-H:GOSUB9000 10220 XO=140:L=3:H=5:YO=YS-H:GOSUB9000 10230 XO=152:L=3:H=5:YO=YS-H:GOSUB9000 10235 XO=145:L=5:H=9:YO=YS-H:GOSUB9000 10240 XO=139:C=3:YO=YS-7:GOSUB9100 10250 XO=151:C=3:YO=YS-7:GOSUB9100 10255 XO=144:C=4:YO=YS-11:GOSUB9100 10260 FC=20:FO=FC:REM FORCE CHATEAU 10265 XP=139:REM DEBUT CHATEAU 10270 NB=9:REM NOMBRE BOULETS 10295 RETURN 10300 REM --- LEVEL 4 --- 10305 C$="OF GISORS" 10310 XO=130:L=23:H=8:YO=YS-H:GOSUB9000 10320 XO=139:L=5:H=5:YO=YS-H-8:GOSUB9000 10330 XO=142:L=2:H=2:YO=YS-H-13:GOSUB9000 10340 XO=129:C=13:YO=YS-10:GOSUB9100 10350 XO=139:L=4:H=3:YO=YS-H:GOSUB9070 10355 XO=140:L=2:H=4:YO=YS-H:GOSUB9070 10360 FC=40:FO=FC:REM FORCE CHATEAU 10365 XP=129:REM DEBUT CHATEAU 10370 NB=10:REM NOMBRE BOULETS 10395 RETURN 10400 REM --- LEVEL 5 --- 10405 C$="GAILLARD" 10410 XO=126:L=17:H=8:YO=YS-H:GOSUB9000 10420 XO=142:L=17:H=5:YO=YS-H:GOSUB9000 10430 XO=131:L=7:H=4:YO=YS-H-8:GOSUB9000 10435 XO=156:L=3:H=3:YO=YS-H-5:GOSUB9000 10440 XO=155:C=3:YO=YS-9:GOSUB9100 10450 XO=134:L=1:H=2:YO=YS-H-8:GOSUB9070 10455 XO=129:L=1:H=2:YO=YS-H-4:GOSUB9070 10457 XO=140:L=1:H=2:YO=YS-H-4:GOSUB9070 10458 XO=151:L=1:H=2:YO=YS-H-2:GOSUB9070 10460 FC=55:FO=FC:REM FORCE CHATEAU 10465 XP=126:REM DEBUT CHATEAU 10470 NB=10:REM NOMBRE BOULETS 10495 RETURN 10500 REM --- LEVEL 6 --- 10505 C$="OF ANGERS" 10510 XO=126:L=33:H=6:YO=YS-H:GOSUB9000 10520 XO=126:L=5:H=2:YO=YS-H-6:GOSUB9000 10530 XO=132:L=5:H=2:YO=YS-H-6:GOSUB9000 10535 XO=154:L=5:H=2:YO=YS-H-6:GOSUB9000 10537 XO=139:L=13:H=2:YO=YS-H-6:GOSUB9000 10538 XO=139:L=5:H=4:YO=YS-H-8:GOSUB9000 10540 XO=147:L=5:H=4:YO=YS-H-8:GOSUB9000 10542 XO=138:C=4:YO=YS-13:GOSUB9100 10544 XO=146:C=4:YO=YS-13:GOSUB9100 10546 XO=144:L=3:H=3:YO=YS-H:GOSUB9070 10548 RESET(145,YS-4) 10550 FOR I=1 TO 3 10552 RESET(126+I,YS-5):RESET(126+I,YS-3):RESET(126+I,YS-1) 10554 RESET(132+I,YS-5):RESET(132+I,YS-3):RESET(132+I,YS-1) 10556 RESET(154+I,YS-5):RESET(154+I,YS-3):RESET(154+I,YS-1) 10558 RESET(139+I,YS-11):RESET(139+I,YS-9):RESET(139+I,YS-7) 10560 RESET(147+I,YS-11):RESET(147+I,YS-9):RESET(147+I,YS-7) 10562 NEXT I 10565 FC=54:FO=FC:REM FORCE CHATEAU 10570 XP=126:REM DEBUT CHATEAU 10575 NB=10:REM NOMBRE BOULETS 10595 RETURN 10600 REM --- LEVEL 7 --- 10605 C$="OF FOY" 10610 XO=130:L=3:H=11:YO=YS-H:GOSUB9000 10620 XO=138:L=5:H=12:YO=YS-H:GOSUB9000 10630 XO=149:L=5:H=12:YO=YS-H:GOSUB9000 10635 XO=133:L=5:H=6:YO=YS-H:GOSUB9000 10637 XO=143:L=6:H=4:YO=YS-H:GOSUB9000 10640 XO=129:C=3:YO=YS-12:GOSUB9100 10642 XO=137:C=4:YO=YS-13:GOSUB9100 10644 XO=148:C=4:YO=YS-13:GOSUB9100 10646 XO=131:L=1:H=2:YO=YS-9:GOSUB9070 10648 XO=135:L=1:H=2:YO=YS-4:GOSUB9070 10650 XO=140:L=1:H=2:YO=YS-10:GOSUB9070 10652 XO=151:L=1:H=2:YO=YS-9:GOSUB9070 10670 FC=40:FO=FC:REM FORCE CHATEAU 10680 XP=129:REM DEBUT CHATEAU 10690 NB=8:REM NOMBRE BOULETS 10695 RETURN 10700 REM --- LEVEL 7 --- 10705 C$="OF MONSEGUR" 10710 XO=131:L=7:H=8:YO=YS-H:GOSUB9000 10720 XO=138:L=18:H=6:YO=YS-H:GOSUB9000 10730 XO=132:L=1:H=2:YO=YS-7:GOSUB9070 10740 XO=136:L=1:H=2:YO=YS-7:GOSUB9070 10750 XO=143:L=3:H=3:YO=YS-3:GOSUB9070 10760 RESET(144,YS-4) 10770 FC=33:FO=FC:REM FORCE CHATEAU 10780 XP=131:REM DEBUT CHATEAU 10790 NB=6:REM NOMBRE BOULETS 10795 RETURN 20000 REM --- DATA CATAPULTE --- 20001 RESTORE 20005 YY=YC-8:XX=1 20010 READ D1,D2 20020 IF D1=4 THEN RETURN 20025 IF D1=3 THEN YY=YY+1:XX=1:GOTO 20010 20030 FOR I=1 TO D2 20040 IF D1=1 THEN SET(XX,YY,2) 20050 XX=XX+1 20060 NEXT I 20070 GOTO 20010 20075 DATA 2,5,1,1,3,3,2,5,1,2,3,3,2,5,1,1,2,1,1,1,3,3 20076 DATA 1,6,2,2,1,1,3,3,2,5,1,2,2,2,1,1,3,3,1,11,3,3 20077 DATA 1,10,3,3,2,1,1,2,2,4,1,2,4,4