10 ' ****************************
20 ' ***       BOMBARDE       ***
30 ' ***    PAR IVAN JACOT    ***
40 ' ****************************
50 ' * UTILISEZ 'Q' et 'A' POUR    *
60 ' * SELECTIONNER LES PARAMETRES *
70 ' * VENT NEGATIF : VENT D'EST   *
80 ' * VENT POSITIF : VENT D'OUEST *
90 ' * SI VOUS TOUCHEZ 13 FOIS LE  *
100 ' * CHATEAU ENEMI, VOUS GAGNEZ *
110 ' * BONNE CHANCE !             *
120 '
130 SYMBOL AFTER 200
140 GOSUB 540:GOSUB 840:GOSUB 670:xd=537:RANDOMIZE TIME
150 ' *** Choix des parametres ***
160 PAPER 3:PEN 2:LOCATE 12,2:PRINT tu(1):LOCATE 34,2:PRINT tu(2):GOSUB 1330
170 PAPER 3:PEN 1:GOSUB 650:y=48:a=20:b=10:xv=0:vv=0:yv=0
180 IF xd>320 THEN w=1:xd=(cr1+5)*16:x=xd:loc=2 ELSE loc=23:xd=(cr2-2)*16:x=xd:w=2
190 LOCATE loc,3:PRINT"POUDRE  : 10"
200 GOSUB 450
210 IF UPPER$(q$)="Q" THEN GOSUB 480
220 IF UPPER$(q$)="A" THEN GOSUB 490
230 IF q$=CHR$(13) THEN 250
240 LOCATE loc+9,3:PRINT a;"  ":GOTO 200
250 GOSUB 650
260 LOCATE loc,3:PRINT "ANGLE   : 10"
270 GOSUB 450
280 IF UPPER$(q$)="Q" THEN GOSUB 510
290 IF UPPER$(q$)="A" THEN GOSUB 520
300 IF q$=CHR$(13) THEN 320
310 LOCATE loc+9,3:PRINT b;"   ":GOTO 270
320 GOSUB 650:LOCATE 2,3:PRINT "POUDRE :";A;" ANGLE :";b
330 DEG
340 IF xd<200 THEN xv=COS(b)*a/100 ELSE xv=-COS(b)*a/100
350 yv=SIN(b)*a/100:vv=c/10:te=TEST(x,y):SOUND 1,200,3
360 '
370 ' *** Boucle principale ***
380 '
390 PLOT x,y,te:xv=xv+(vv-xv)*0.005:x=x+xv:yv=yv-0.05:yv=yv-yv*0.05:y=y+yv:IF x>=640 OR x<=0 OR y>=400 OR y<=31 THEN 160 ELSE te=TEST(x,y):GOSUB 590
400 x2=INT(x/16)+1:y2=INT(25-Y/16)+1:GOSUB 620
410 GOTO 390
420 '
430 ' *** Test clavier ***
440 '
450 q$=INKEY$:IF q$="" THEN 450
460 RETURN
470 ' *** S-P Poudre ***
480 IF a=1500 THEN RETURN ELSE a=a+20:RETURN
490 IF a=20 THEN RETURN ELSE a=a-20:RETURN
500 ' *** S-P angle ***
510 IF B=90 THEN RETURN ELSE b=b+2:RETURN
520 IF b=10 THEN RETURN ELSE b=b-2:RETURN
530 ' *** Initialisation ***
540 MODE 1:PAPER 1:CLS:PAPER 3:PEN 2:FOR fu=2 TO 4:LOCATE 2,fu:PRINT SPACE$(38):NEXT:LOCATE 2,2:PRINT "JOUEUR 1 : 0":LOCATE 23,2:PRINT "JOUEUR 2 : 0":c=INT(RND*31)-15:LOCATE 14,4:PRINT "VENT : ";c
550 DIM g(40,25),joueur(2):a=10:b=10
560 BORDER 13:INK 0,0:INK 1,14:INK 2,15:INK 3,3:PEN 1
570 RETURN
580 ' *** Affichage point ***
590 IF te=0 THEN PLOT x,y,1:RETURN
600 PLOT x,y,0:RETURN
610 ' *** Touche ou pas ***
620 IF g(x2,y2)=0 THEN RETURN
630 IF g(x2,y2)=1 THEN PLOT x,y,1:GOTO 160
640 IF g(x2,y2)=2 THEN OUT 255,8:OUT 256,1:PLOT x,y,1:g(x2,y2)=0:tu(w)=tu(w)+1:LOCATE x2,y2:PAPER 1:PEN 0:PRINT " ":OUT 256,2:GOTO 160
650 PAPER 3:PEN 1:LOCATE 2,3:PRINT SPACE$(36):RETURN
660 ' *** S-P affichage decor ***
670 FOR i=1 TO 39 STEP 2:LOCATE i,24:PRINT CHR$(237);CHR$(238);:NEXT:FOR i=1 TO 39 STEP 2:LOCATE i,25:PRINT CHR$(239);CHR$(240);:NEXT
680 PAPER 0:PEN 1:LOCATE 19,18:PRINT CHR$(225);CHR$(226)
690 LOCATE 19,19:PRINT CHR$(227);CHR$(228):g(19,19)=1:g(20,19)=1
700 LOCATE 19,20:PRINT CHR$(229);CHR$(230):g(19,20)=1:g(20,20)=1
710 LOCATE 19,21:PRINT CHR$(231);CHR$(232):g(19,21)=1:g(20,21)=1
720 LOCATE 19,22:PRINT CHR$(233);CHR$(234):g(19,22)=1:g(20,22)=1
730 LOCATE 19,23:PRINT CHR$(235);CHR$(236):g(19,23)=1:g(20,23)=1
740 ec=INT(RND*7)+1:cr1=ec:PAPER 1:PEN 0:LOCATE ec+5,23:PRINT CHR$(241):PEN 1:PAPER 3:GOSUB 760
750 ec=INT(RND*7)+30:cr2=ec:PAPER 1:PEN 0:LOCATE ec-1,23:PRINT CHR$(242):PEN 1:PAPER 3:GOSUB 760:RETURN
760 FOR i=200 TO 204:LOCATE ec+(i-200),19:PRINT CHR$(i):g(ec+(i-200),19)=2:NEXT
770 FOR i=205 TO 209:LOCATE ec+(i-205),20:PRINT CHR$(i):g(ec+(i-205),20)=2:NEXT
780 FOR i=210 TO 214:LOCATE ec+(i-210),21:PRINT CHR$(i):g(ec+(i-210),21)=2:NEXT
790 FOR i=215 TO 219:LOCATE ec+(i-215),22:PRINT CHR$(i):g(ec+(i-215),22)=2:NEXT
800 FOR i=220 TO 224:LOCATE ec+(i-220),23:PRINT CHR$(i):g(ec+(i-220),23)=2:NEXT
810 RETURN
820 ' *** Caracteres redefinis ***
830 ' ********* chateau **********
840 SYMBOL 200,239,239,199,199,131,1,187,147
850 SYMBOL 201,255,255,196,217,239,243,245,247
860 SYMBOL 202,255,255,71,55,239,95,95,95
870 SYMBOL 203,255,255,255,255,255,255,255,241
880 SYMBOL 204,255,255,255,255,255,255,255,152
890 SYMBOL 205,179,147,179,155,187,155,139,155
900 SYMBOL 206,245,243,241,243,241,243,241,243
910 SYMBOL 207,95,223,223,222,92,88,93,221
920 SYMBOL 208,242,245,250,248,124,60,124,124
930 SYMBOL 209,102,254,169,169,123,215,87,215
940 SYMBOL 210,139,155,139,155,139,27,8,24
950 SYMBOL 236,229,123,27,75,103,55,23,91
960 SYMBOL 211,241,243,241,128,158,130,134,2
970 SYMBOL 212,221,221,221,221,93,157,4,48
980 SYMBOL 213,124,124,124,124,124,120,24,192
990 SYMBOL 214,87,183,119,247,23,187,123,171
1000 SYMBOL 215,8,24,12,4,12,4,12,4
1010 SYMBOL 216,23,43,22,41,85,38,72,36
1020 SYMBOL 217,223,255,63,206,87,54,11,23
1030 SYMBOL 218,249,184,56,184,56,176,48,242
1040 SYMBOL 219,107,171,107,171,91,59,11,189
1050 SYMBOL 220,12,4,12,4,12,4,4,0
1060 SYMBOL 221,88,40,16,40,16,8,0,0
1070 SYMBOL 222,15,11,13,11,13,11,13,0
1080 SYMBOL 223,241,242,241,240,241,240,240,0
1090 SYMBOL 224,93,189,93,189,93,173,85,1
1100 ' ******** remparts ********
1110 SYMBOL 225,249,240,240,240,248,249,248,248
1120 SYMBOL 226,255,67,155,99,57,29,141,113
1130 SYMBOL 227,240,241,242,240,240,240,226,225
1140 SYMBOL 228,61,27,203,115,123,59,151,103
1150 SYMBOL 229,224,228,227,193,200,196,195,193
1160 SYMBOL 230,119,55,151,231,111,47,143,239
1170 SYMBOL 231,200,196,227,225,224,224,242,240
1180 SYMBOL 232,239,47,151,231,119,55,151,235
1190 SYMBOL 233,240,240,240,249,248,248,248,249
1200 SYMBOL 234,115,27,139,107,241,125,29,13
1210 SYMBOL 235,240,240,242,241,240,240,226,192
1220 SYMBOL 236,229,123,27,75,103,55,23,91
1230 ' ****** Terre ******
1240 SYMBOL 237,153,103,152,247,79,188,195,255
1250 SYMBOL 238,153,103,152,247,79,188,195,255
1260 SYMBOL 239,153,103,152,247,79,188,195,255
1270 SYMBOL 240,153,103,152,247,79,188,195,255
1280 ' ***** canons *****
1290 SYMBOL 241,&2,&7,&E,&14,&2C,&5A,&B2,&CC
1300 SYMBOL 242,&40,&E0,&70,&28,&34,&5A,&4D,&33
1310 RETURN
1320 ' *** Gagne ? ***
1330 IF tu(1)=13 THEN LOCATE 6,12:PRINT"LE JOUEUR 1 EST VAINQUEUR !":CALL &BB06:RUN 140
1340 IF tu(2)=13 THEN LOCATE 6,12:PRINT"LE JOUEUR 2 EST VAINQUEUR !":CALL &BB06:RUN 140
1350 RETURN