10 ' **********************************
20 ' * * 30 ' * CUBEMELEON * 40 ' * * 50 ' * Auteur Georges GOUMENT * 60 ' * * 70 ' * AMSTRAD CPC 464 * 80 ' * * 90 ' ********************************** 100 ' 110 'redéfinition lettres accentuées 120 ' 130 MODE 0:BORDER 13:FOR I=0 TO 15:INK I,13:NEXT:PRINT CHR$(22)+CHR$(1) 140 DIM E$(3) 150 SYMBOL AFTER 64 160 SYMBOL 64,&60,&10,&78,&8C,&7C,&CC,&76 170 KEY 129,CHR$(64) 180 SYMBOL 123,&6,&8,&3C,&66,&7E,&60,&3C 190 KEY 128,CHR$(123) 200 SYMBOL 125,&60,&10,&3C,&66,&7E,&60,&3C 210 KEY 132,CHR$(125) 220 SYMBOL 92,&0,&0,&3C,&66,&60,&3E,&8,&18 230 KEY 135,CHR$(92) 240 SYMBOL 94,&18,&24,&3C,&66,&7E,&60,&3C 250 KEY 134,CHR$(94) 260 ' 270 'redéfinition caractères du titre et des cubes du jeu 280 ' 290 FOR I=144 TO 165 300 READ S1,S2,S3,S4,S5,S6,S7,S8 310 SYMBOL I,S1,S2,S3,S4,S5,S6,S7,S8 320 NEXT I 330 DATA &0,&0,&0,&0,&1F,&3F,&7F,&FF,&0,&0,&0,&0,&F0,&F0,&F0,&F0,&0,&0,&0,&0,&10,&20,&50,&A0,&F0,&F0,&F0,&F0,&E0,&C0,&80,&0,&50,&A0,&50,&A0,&50,&A0,&40,&80,&0,&0,&0,&0,&0,&15,&2A,&55 340 DATA &0,&0,&0,&0,&0,&50,&A0,&40,&0,&0,&0,&18,&18,&0,&0,&0,&C0,&C0,&C0,&C0,&C0,&C0,&FF,&FF,&0,&0,&C0,&C0,&C0,&C0,&C0,&C0,&0,&0,&FF,&FF,&C0,&C0,&C0,&C0,&0,&0,&0,&C0,&C0,&C0,&C0,&C0,&C0,&C0,&C0,&C0,&C0,&C0,&C0,&C0 350 DATA &0,&0,&C0,&C0,&C0,&C0,&C0,&0,&FF,&FF,&C0,&C0,&C0,&C0,&FF,&FF,&0,&0,&C0,&C0,&C0,&C0,&C0,&C0,&0,&0,&C0,&C0,&C0,&C0,&0,&0,&F8,&F8,&C0,&C0,&C0,&C0,&FF,&FF,&0,&0,&C0,&C0,&F3,&F3,&F3,&F3,&CC,&CC,&CC,&C0,&C0,&C0,&C0,&C0 360 DATA &0,&0,&C0,&C0,&F0,&F0,&F0,&F0,&CC,&CC,&C3,&C3,&C3,&C3,&C0,&C0 370 E$(1)=CHR$(144)+CHR$(145)+CHR$(10)+CHR$(8)+CHR$(147)+CHR$(11) 380 E$(2)=CHR$(9)+CHR$(146)+CHR$(10)+CHR$(8)+CHR$(8)+CHR$(143)+CHR$(148)+CHR$(11) 390 E$(3)=CHR$(9)+CHR$(149)+CHR$(150) 400 FOR I=176 TO 192 410 READ S1,S2,S3,S4,S5,S6,S7,S8 420 SYMBOL I,S1,S2,S3,S4,S5,S6,S7,S8 430 NEXT I 440 DATA &3F,&7F,&0,&0,&30,&30,&30,&30,&F0,&F0,&30,&30,&30,&20,&20,&0,&30,&30,&30,&30,&3F,&3F,&0,&0,&0,&30,&70,&30,&30,&30,&20,&0,&30,&70,&30,&30,&30,&30,&30,&30,&30,&30,&30,&30,&30,&30,&20,&0,&3F,&7F,&0,&0,&30,&30,&3C,&3C 450 DATA &3F,&7F,&0,&0,&30,&30,&3F,&3F,&0,&0,&30,&30,&3F,&3F,&0,&0,&F0,&F0,&30,&30,&30,&30,&20,&0,&F0,&F0,&30,&30,&20,&0,&0,&0,&30,&70,&3C,&3C,&C,&C,&C,&C,&33,&32,&30,&30,&30,&30,&20,&0,&30,&70,&3C,&3C,&C,&C,&F,&F 460 DATA &33,&33,&30,&30,&30,&30,&20,&0,&F0,&F0,&30,&30,&30,&30,&30,&30,&4,&0,&30,&30,&3F,&3F,&0,&0 470 ' 480 ' présentation du jeu 490 ' 500 POKE &B290,100:CLS 510 FOR Y=400 TO 374 STEP-1:PLOT 0,Y:DRAW 640,Y,7:NEXT 520 X=640 530 FOR Y=373 TO 368 STEP-1 540 X=X-1:PLOT 0,Y 550 DRAW X,Y,6:NEXT 560 FOR I=1 TO 39 570 READ V,W,X,Y 580 PEN W 590 LOCATE X,Y 600 PRINT CHR$(V) 610 NEXT I 620 DATA 152,1,1,2,152,3,3,2,153,13,10,1,152,10,13,2,152,9,17,2,153,3,3,1,153,3,4,1,153,2,6,1,153,10,13,1,153,9,18,1,153,15,20,1,154,1,1,1,154,2,5,1,154,4,7,1,154,8,11,1,154,11,15,1,154,9,17,1,155,1,2,2 630 DATA 156,3,4,2,155,4,8,2,155,8,12,2,155,10,14,2,155,11,16,2,156,13,10,2,156,9,18,2,156,15,20,2,157,1,2,1,158,2,5,2,159,2,6,2,160,4,8,1,160,8,12,1,160,11,16,1,161,4,7,2,161,8,11,2,161,11,15,2,162,13,9,1,163,13,9,2,164,15,19,1,165,15,19,2 640 FOR I=1 TO 39 650 READ V,W,X,Y 660 PEN W 670 LOCATE X,Y 680 PRINT CHR$(V) 690 NEXT I 700 DATA 176,10,1,1,177,10,2,1,178,10,1,2,179,10,2,2,180,11,3,1,180,11,4,1,178,11,3,2,181,11,4,2,183,9,5,1,177,9,6,1,184,9,5,2,185,9,6,2,182,15,7,1,186,15,8,1,192,15,7,2,179,15,8,2,187,5,9,1,180,5,10,1,188,5,9,2,181,5,10,2 710 DATA 182,14,11,1,186,14,12,1,192,14,11,2,179,14,12,2,180,1,13,1,178,1,13,2,179,1,14,2,182,3,15,1,186,3,16,1,192,3,15,2,179,3,16,2,176,2,17,1,191,2,18,1,178,2,17,2,181,2,18,2,189,4,19,1,180,4,20,1,190,4,19,2,181,4,20,2 720 PEN 6:LOCATE 3,7:PRINT "JEU DE REFLEXION":LOCATE 6,9:PRINT "2 niveaux":LOCATE 1,24:PRINT "(c) Georges GOUMENT" 730 LOCATE 5,14:PEN 10:PRINT E$(1):LOCATE 5,14:PEN 1:PRINT E$(2) 740 LOCATE 7,14:PEN 11:PRINT E$(1):LOCATE 7,14:PEN 3:PRINT E$(2) 750 LOCATE 9,14:PEN 9:PRINT E$(1):LOCATE 9,14:PEN 2:PRINT E$(2) 760 LOCATE 11,14:PEN 15:PRINT E$(1):LOCATE 11,14:PEN 4:PRINT E$(2) 770 LOCATE 13,14:PEN 5:PRINT E$(1):LOCATE 13,14:PEN 13:PRINT E$(2) 780 LOCATE 15,14:PEN 14:PRINT E$(1):LOCATE 16,14:PEN 8:PRINT CHR$(146):LOCATE 15,15:PRINT CHR$(143)+CHR$(148) 790 BORDER 0:INK 1,2:INK 10,11:INK 3,3:INK 11,17:INK 2,6:INK 9,16:INK 4,9:INK 15,19:INK 13,12:INK 5,24:INK 8,15:INK 14,25:INK 6,26:INK 7,0 800 GOSUB 5440 810 ' 820 'mode d'emploi et règles du jeu 830 ' 840 MODE 1:BORDER 13:FOR I=0 TO 15:INK I,13:NEXT 850 ORIGIN 1,1:DRAW 1,399,1:DRAW 639,399,1:DRAW 639,1,1:DRAW 1,1,1 860 PLOT 5,5:DRAW 5,394,3:DRAW 634,394,3:DRAW 634,5,3:DRAW 5,5,3 870 PLOT 9,9:DRAW 9,390,2:DRAW 630,390,2:DRAW 630,9,2:DRAW 9,9,2 880 WINDOW #1,2,39,2,23:PAPER #1,0:CLS #1 890 PEN #1,1:PRINT #1:PRINT #1," MODE D'EMPLOI":PEN #1,2:PRINT #1," *************" 900 PRINT #1:PRINT #1:PEN #1,3:PRINT #1,"Vous choisirez votre niveau de jeu dèsque les règles du jeu seront terminées":PRINT #1:PEN #1,2:PRINT #1,"FORCE 1:":PEN #1,3:PRINT #1," débutant 15 cubes 4 couleurs":PRINT #1 910 PEN #1,2:PRINT #1,"FORCE 2:":PEN #1,3:PRINT #1," champion 25 cubes 6 couleurs":PRINT #1 920 PRINT #1:PEN #1,2:PRINT #1," chaque niveau comporte 4 options":PRINT #1," de mélange des couleurs":PRINT #1:PEN #1,3:PRINT #1,"l'ordinateur en tire une au sort avant de préparer la partie" 930 GOSUB 1100 940 PEN #1,1:PRINT #1:PRINT #1," PREPARATION":PEN #1,2:PRINT #1," ***********":PRINT #1:PRINT #1 950 PEN #1,3:PRINT #1," L'ordinateur choisi un des cubesdisponibles l' affiche dans le bas de l'écran et prépare le jeu.":PRINT #1 960 PRINT #1,"Après avoir disposé ce cube sur 3 ou 5rangs il effectue un mélange.":PRINT #1:PRINT #1,"Le choix des cubes, la procédure et lenombre de brouillages sont aléatoires." 970 PRINT #1:PEN #1,2:PRINT #1," Vous ne pouvez pas intervenir durantla préparation de la partie." 980 GOSUB 1100 990 PEN #1,1:PRINT #1:PRINT #1," REGLES DU JEU":PEN #1,2:PRINT #1," *************":PRINT #1 1000 PEN #1,3:PRINT #1,"Vous commencez à jouer lorsqu'un pointblanc apparait sur la face avant du cube central.":PRINT #1 1010 PEN #1,2:PRINT #1," Ce point indique le cube servant debase à une permutation de couleurs.":PRINT #1:PEN #1,3:PRINT #1," Servez vous des touches fléchées pourpasser d'un cube à l'autre.":PRINT #1 1020 PEN #1,2:PRINT #1,"TOUCHE COPY";:PEN #1,3:PRINT #1," Permute les couleurs":PEN #1,2:PRINT #1,"TOUCHE <A>";:PEN #1,3:PRINT #1," Annule la partie" 1030 PEN #1,2:PRINT #1:PRINT #1," TOUCHE <V>";:PEN #1,3:PRINT #1,"L'ordinateur vérifie la couleur de voscubes avant de vous déclarer vainqueur" 1040 GOSUB 1100 1050 PEN #1,2:PRINT #1:PRINT #1," POUR GAGNER UNE PARTIE VOUS DEVEZ":PRINT #1:PRINT #1," REDONNER A VOS CUBES UNE COULEUR":PRINT #1:PRINT #1," IDENTIQUE A CELLE QUE L'ORDINATEUR A" 1060 PRINT #1:PRINT #1," CHOISIE AU DEBUT DU JEU":PRINT #1:PRINT #1:PRINT #1," BONNE CHANCE !":PRINT #1:PRINT #1: 1070 PEN #1,3:PRINT #1,"Quand les divers affichages clignotentil vous reste 20 coups a jouer.":PRINT #1:PRINT #1,"L'option de mélange des couleurs est valable durant toute une partie,à vousde la trouver !" 1080 GOSUB 1100 1090 GOTO 1230 1100 INK 1,24:INK 2,3:INK 3,0 1110 LOCATE 2,24:PEN 1:PRINT "Appuyez sur une touche" 1120 WHILE INKEY$="":WEND 1130 CLS #1:INK 1,13:INK 2,13:INK 3,13 1140 RETURN 1150 ' 1160 ' choix du niveau de jeu: F 1 ou 2 1170 ' 1180 ' tirage option mélange: OP 1 à 4 1190 ' 1200 ' dessin du jeu 1210 ' 1220 ' 1230 RANDOMIZE TIME:MODE 0:INK 1,0:PEN 1:PRINT CHR$(22)+CHR$(1):OP=INT(RND*4)+1:PRINT "NIVEAU CHOISI ?" 1240 A$=INKEY$:IF A$="" THEN 1240 1250 IF A$="1" THEN F=1:GOTO 1270 1260 IF A$<>"2" THEN 1240 ELSE F=2 1270 CLS:FOR I=1 TO 15:INK I,13:NEXT:FOR Y=158 TO 174:PLOT 192,Y:DRAW 447,Y,12:NEXT:PLOT 192,156:DRAW 449,156,7:DRAW 449,174,7:PEN 7:LOCATE 7,15:PRINT "couleurs ":FOR Y=384 TO 400:PLOT 160,Y:DRAW 477,Y,12:NEXT:PLOT 160,382:DRAW 479,382,7:DRAW 479,400,7 1280 WINDOW #1,1,5,20,23:PAPER #1,10:CLS#1:WINDOW #2,16,20,20,23:PAPER #2,10:CLS#2:A$=STRING$(5,CHR$(143)):PEN 6:LOCATE 1,20:PRINT A$:LOCATE 16,20:PRINT A$ 1290 LOCATE 1,20:PEN 1:PRINT "SCORE":LOCATE 16,20:PEN 1:PRINT "FORCE":PEN 12:LOCATE 2,22:PRINT "000":LOCATE 16,22:PRINT F:LOCATE 18,22:PRINT "-":LOCATE 18,22:PRINT OP 1300 LOCATE 6,1:PEN 7:PRINT "cubeméléon":PLOT 0,32:DRAW 162,32,7:DRAW 162,94,7:PLOT 480,32:DRAW 639,32,7:DRAW 639,94,7 1310 ' 1320 ' placement de 4 ou 6 cubes selon niveau de jeu (F) 1330 ' 1340 Y=16:IF F=1 THEN 1370 1350 X=5 1360 LOCATE X,Y:PEN 11:PRINT E$(1):LOCATE X,Y:PEN 3:PRINT E$(2):LOCATE X,Y+1:PEN 7:PRINT E$(3) 1370 LOCATE 7,Y:PEN 9:PRINT E$(1):PEN 2:LOCATE 7,Y:PRINT E$(2):LOCATE 7,Y+1:PEN 7:PRINT E$(3) 1380 LOCATE 9,Y:PEN 15:PRINT E$(1):LOCATE 9,Y:PEN 4:PRINT E$(2):LOCATE 9,Y+1:PEN 7:PRINT E$(3) 1390 LOCATE 11,Y:PEN 5:PRINT E$(1):LOCATE 11,Y:PEN 13:PRINT E$(2):LOCATE 11,Y+1:PEN 7:PRINT E$(3) 1400 LOCATE 13,Y:PEN 10:PRINT E$(1):LOCATE 13,Y:PEN 1:PRINT E$(2):LOCATE 13,Y+1:PEN 7:PRINT E$(3) 1410 IF F=1 THEN 1450 ELSE LOCATE 15,Y:PEN 14:PRINT CHR$(144)+CHR$(145):LOCATE 16,Y+1:PRINT CHR$(147):LOCATE 16,Y:PEN 8:PRINT CHR$(146):LOCATE 15,Y+1:PRINT CHR$(143)+CHR$(148):LOCATE 15,Y+1:PEN 7:PRINT E$(3) 1420 ' 1430 ' appel couleur 1440 ' 1450 A=0:INK 1,2:INK 2,6:INK 3,3:INK 4,9:INK 5,24:INK 6,26:INK 7,0:INK 8,15:INK 9,16:INK 10,11:INK 11,17:INK 12,7:INK 13,12:INK 14,25:INK 15,19 1460 ENV 1,1,15,1,1,0,110,15,-1,8 1470 ENT 1,15,-5,6,5,15,5 1480 SOUND 7,80,-1,0,1,1 1490 ' 1500 'choix d'un cube par l'ordinateur 1510 ' 1520 ' niveau 1 - 4 couleurs (F=1) 1530 ' 1540 ' niveau 2 - 6 couleurs (F=2) 1550 ' 1560 A=INT(RND*6)+1 1570 IF F=1 THEN 1590 1580 IF A=1 THEN A=3:B=11:GOTO 1690 1590 IF A=2 THEN A=4:B=15:GOTO 1690 1600 IF A=3 THEN A=2:B=9:GOTO 1690 1610 IF A=4 THEN A=13:B=5:GOTO 1690 1620 IF A=5 THEN A=1:B=10:GOTO 1690 1630 IF F=1 THEN 1560 1640 IF A=6 THEN A=8:B=14:GOTO 1690 1650 GOTO 1560 1660 ' 1670 ' affichage du cube choisi 1680 ' 1690 FOR Y=78 TO 96:PLOT 224,Y:DRAW 415,Y,12:NEXT:FOR Y=96 TO 112:PLOT 256,Y:DRAW 383,Y,12:NEXT:PLOT 224,76:DRAW 417,76,7:DRAW 417,96,7:PLOT 385,96:DRAW 385,112,7:PEN 7:LOCATE 9,19:PRINT"cube":LOCATE 8,20:PRINT "choisi" 1700 LOCATE 10,21:PEN B:PRINT E$(1):LOCATE 10,21:PEN A:PRINT E$(2) 1710 LOCATE 10,22:PEN 7:PRINT E$(3) 1720 ' 1730 'mise en place de 15 ou 25 cubes selon variable F 1740 ' 1750 IF F=1 THEN 1860 1760 FOR X=10 TO 18 STEP 2 1770 LOCATE X,4:PEN A:PRINT CHR$(143) 1780 LOCATE X,3:PEN B:PRINT CHR$(144) 1790 LOCATE X+1,3:PRINT CHR$(145) 1800 LOCATE X+1,4:PRINT CHR$(147) 1810 LOCATE X+1,3:PEN A:PRINT CHR$(146) 1820 LOCATE X+1,4:PRINT CHR$(148) 1830 LOCATE X+1,4:PEN 7:PRINT CHR$(149) 1840 NEXT X 1850 LOCATE 20,4:PRINT CHR$(150) 1860 FOR X=8 TO 16 STEP 2 1870 LOCATE X,6:PEN A:PRINT CHR$(143) 1880 LOCATE X,5:PEN B:PRINT CHR$(144) 1890 LOCATE X+1,5:PRINT CHR$(145) 1900 LOCATE X+1,6:PRINT CHR$(147) 1910 LOCATE X+1,5:PEN A:PRINT CHR$(146) 1920 LOCATE X+1,6:PRINT CHR$(148) 1930 LOCATE X+1,6:PEN 7:PRINT CHR$(149) 1940 NEXT X 1950 LOCATE 18,6:PRINT CHR$(150) 1960 FOR X=6 TO 14 STEP 2 1970 LOCATE X,8:PEN A:PRINT CHR$(143) 1980 LOCATE X,7:PEN B:PRINT CHR$(144) 1990 LOCATE X+1,7:PRINT CHR$(145) 2000 LOCATE X+1,8:PRINT CHR$(147) 2010 LOCATE X+1,7:PEN A:PRINT CHR$(146) 2020 LOCATE X+1,8:PRINT CHR$(148) 2030 LOCATE X+1,8:PEN 7:PRINT CHR$(149) 2040 NEXT X 2050 LOCATE 16,8:PRINT CHR$(150) 2060 FOR X=4 TO 12 STEP 2 2070 LOCATE X,10:PEN A:PRINT CHR$(143) 2080 LOCATE X,9:PEN B:PRINT CHR$(144) 2090 LOCATE X+1,9:PRINT CHR$(145) 2100 LOCATE X+1,10:PRINT CHR$(147) 2110 LOCATE X+1,9:PEN A:PRINT CHR$(146) 2120 LOCATE X+1,10:PRINT CHR$(148) 2130 LOCATE X+1,10:PEN 7:PRINT CHR$(149) 2140 NEXT X 2150 LOCATE 14,10:PRINT CHR$(150) 2160 IF F=1 THEN 2300 2170 FOR X=2 TO 10 STEP 2 2180 LOCATE X,12:PEN A:PRINT CHR$(143) 2190 LOCATE X,11:PEN B:PRINT CHR$(144) 2200 LOCATE X+1,11:PRINT CHR$(145) 2210 LOCATE X+1,12:PRINT CHR$(147) 2220 LOCATE X+1,11:PEN A:PRINT CHR$(146) 2230 LOCATE X+1,12:PRINT CHR$(148) 2240 LOCATE X+1,12:PEN 7:PRINT CHR$(149) 2250 NEXT X 2260 ' 2270 ' nombre de mélanges (variable M) selon niveau de jeu (variable F) 2280 ' 2290 PEN 7:LOCATE 12,12:PRINT CHR$(150) 2300 WINDOW #3,7,14,23,24 2310 GOSUB 2320:GOTO 2350 2320 FOR J=1 TO 10:FOR I=1 TO 100 STEP 10 2330 SOUND 1,I,1,15 2340 NEXT I:NEXT J:RETURN 2350 IF F=2 THEN 2380 2360 M=INT(RND*10)+5 2370 GOTO 2420 2380 M=INT(RND*25)+10 2390 ' 2400 ' début du brouillage variable (P) tirage aléatoire selon F 2410 ' 2420 FOR P=1 TO M 2430 IF F=2 THEN 2540 2440 ' 2450 ' niveau 1 - 3 rangs de cubes 2460 ' 2470 Y=INT(RND*3)+1 2480 IF Y=1 THEN Y=306:L=6:GOTO 2690 2490 IF Y=2 THEN Y=274:L=8:GOTO 2750 2500 IF Y=3 THEN Y=242:L=10:GOTO 2810 2510 ' 2520 ' niveau 2 - 5 rangs de cubes 2530 ' 2540 Y=INT(RND*5)+1 2550 IF Y=1 THEN Y=338:L=4:GOTO 2630 2560 IF Y=2 THEN Y=306:L=6:GOTO 2690 2570 IF Y=3 THEN Y=274:L=8:GOTO 2750 2580 IF Y=4 THEN Y=242:L=10:GOTO 2810 2590 IF Y=5 THEN Y=210:L=12:GOTO 2870 2600 ' 2610 ' coordonnées colonnes des cubes déterminées par la ligne choisie 2620 ' 2630 X=INT(RND*5)+1 2640 IF X=1 THEN X=290:C=10:GOTO 3050 2650 IF X=2 THEN X=354:C=12:GOTO 3050 2660 IF X=3 THEN X=418:C=14:GOTO 3050 2670 IF X=4 THEN X=482:C=16:GOTO 3050 2680 IF X=5 THEN X=546:C=18:GOTO 3050 2690 X=INT(RND*5)+1 2700 IF X=1 THEN X=226:C=8:GOTO 3050 2710 IF X=2 THEN X=290:C=10:GOTO 3050 2720 IF X=3 THEN X=354:C=12:GOTO 3050 2730 IF X=4 THEN X=418:C=14:GOTO 3050 2740 IF X=5 THEN X=482:C=16:GOTO 3050 2750 X=INT(RND*5)+1 2760 IF X=1 THEN X=162:C=6:GOTO 3050 2770 IF X=2 THEN X=226:C=8:GOTO 3050 2780 IF X=3 THEN X=290:C=10:GOTO 3050 2790 IF X=4 THEN X=354:C=12:GOTO 3050 2800 IF X=5 THEN X=418:C=14:GOTO 3050 2810 X=INT(RND*5)+1 2820 IF X=1 THEN X=98:C=4:GOTO 3050 2830 IF X=2 THEN X=162:C=6:GOTO 3050 2840 IF X=3 THEN X=226:C=8:GOTO 3050 2850 IF X=4 THEN X=290:C=10:GOTO 3050 2860 IF X=5 THEN X=354:C=12:GOTO 3050 2870 X=INT(RND*5)+1 2880 IF X=1 THEN X=34:C=2:GOTO 3050 2890 IF X=2 THEN X=98:C=4:GOTO 3050 2900 IF X=3 THEN X=162:C=6:GOTO 3050 2910 IF X=4 THEN X=226:C=8:GOTO 3050 2920 IF X=5 THEN X=290:C=10:GOTO 3050 2930 NEXT P 2940 P=60:GOSUB 2320 2950 IF F=2 THEN CJ=M*6:GOTO 2970 2960 IF F=1 THEN CJ=M*4 2970 SC=0 2980 X=290:Y=274:L=8:C=10 2990 ' 3000 ' test couleur: variables A,B (pen) couleurs d'origines variables A1 et B1 (pen) modifications selon variable OP 3010 ' 3020 ' sous programme commun pour la préparation du jeu et les déplacement du joueur 3030 ' 3040 ' 3050 MOVE X,Y 3060 IF F=1 THEN 3110 3070 IF TEST(X,Y)<>3 THEN 3110 3080 A=3:B=11 3090 IF OP=1 OR OP=2 THEN A1=8:B1=14:GOTO 3360 3100 IF OP=3 OR OP=4 THEN A1=2:B1=9:GOTO 3360 3110 IF TEST(X,Y)<>2 THEN 3180 3120 A=2:B=9 3130 IF F=2 THEN 3160 3140 IF OP=1 OR OP=2 THEN A1=1:B1=10:GOTO 3360 3150 GOTO 3170 3160 IF OP=1 OR OP=2 THEN A1=3:B1=11:GOTO 3360 3170 IF OP=3 OR OP=4 THEN A1=4:B1=15:GOTO 3360 3180 IF TEST(X,Y)<>4 THEN 3220 3190 A=4:B=15 3200 IF OP=1 OR OP=2 THEN A1=2:B1=9:GOTO 3360 3210 IF OP=3 OR OP=4 THEN A1=13:B1=5:GOTO 3360 3220 IF TEST(X,Y)<>13 THEN 3260 3230 A=13:B=5 3240 IF OP=1 OR OP=2 THEN A1=4:B1=15:GOTO 3360 3250 IF OP=3 OR OP=4 THEN A1=1:B1=10:GOTO 3360 3260 IF TEST(X,Y)<>1 THEN 3320 3270 A=1:B=10 3280 IF OP=1 OR OP=2 THEN A1=13:B1=5:GOTO 3360 3290 IF F=2 THEN 3310 3300 IF OP=3 OR OP=4 THEN A1=2:B1=9:GOTO 3360 3310 IF OP=3 OR OP=4 THEN A1=8:B1=14:GOTO 3360 3320 IF TEST(X,Y)<>8 THEN 2980 3330 A=8:B=14 3340 IF OP=1 OR OP=2 THEN A1=1:B1=10:GOTO 3360 3350 IF OP=3 OR OP=4 THEN A1=3:B1=11 3360 IF P<=M THEN 4330 3370 GOTO 3460 3380 ' 3390 ' top sonore déplacement impossible 3400 ' 3410 SOUND 10,46,5,7 3420 SOUND 17,66,5,7 3430 ' 3440 'affiche le point blanc sur un cube après déplacement ou permutation 3450 ' 3460 LOCATE C,L:PEN 6:PRINT CHR$(151) 3470 ' 3480 ' déplacement du cube de base 3490 ' 3500 IF INKEY(0)=0 THEN 3700 3510 IF INKEY(2)=0 THEN 3810 3520 IF INKEY(1)=0 THEN 3930 3530 IF INKEY(8)=0 THEN 4100 3540 ' 3550 ' mise en route permutation 3560 ' 3570 IF INKEY(9)=0 THEN 4330 3580 ' 3590 ' annulation de la partie 3600 ' 3610 IF INKEY(69)=0 THEN 6140 3620 ' 3630 ' vérifie la couleur des cubes du jeu avec le choix de l'ordinateur 3640 ' 3650 IF INKEY(55)=0 THEN GOSUB 4250::GOTO 5620 3660 GOTO 3460 3670 ' 3680 ' déplacement impossible en haut 3690 ' 3700 IF F=2 AND L=4 THEN 3410 3710 IF F=1 AND L=6 THEN 3410 3720 GOSUB 4250 3730 ' 3740 ' remonte d'un cube 3750 L=L-2:C=C+2 3760 X=X+64:Y=Y+32 3770 GOTO 3050 3780 ' 3790 'déplacement impossible en bas 3800 ' 3810 IF F=2 AND L=12 THEN 3410:GOTO 3830 3820 IF F=1 AND L=10 THEN 3410 3830 GOSUB 4250 3840 ' 3850 ' descend d'un cube 3860 ' 3870 L=L+2:C=C-2 3880 X=X-64:Y=Y-32 3890 GOTO 3050 3900 ' 3910 ' déplacement impossible à droite 3920 ' 3930 IF F=1 AND L=6 AND C=16 THEN 3410 3940 IF L=4 AND C=18 THEN 3410 3950 IF L=6 AND C=16 THEN 3410 3960 IF L=8 AND C=14 THEN 3410 3970 IF F=2 AND L=10 AND C=12 THEN 3410 3980 IF L=10 AND C=12 THEN 3410 3990 IF L=12 AND C=10 THEN 3410 4000 GOSUB 4250 4010 ' 4020 ' déplacement d'un cube à droite 4030 ' 4040 C=C+2 4050 X=X+64 4060 GOTO 3050 4070 ' 4080 'déplacement impossible à gauche 4090 ' 4100 IF F=1 THEN 4110 ELSE IF L=4 AND C=10 THEN 3410 4110 IF L=6 AND C=8 THEN 3410 4120 IF L=8 AND C=6 THEN 3410 4130 IF L=10 AND C=4 THEN 3410 4140 IF F=1 THEN 4150 ELSE IF L=12 AND C=2 THEN 3410 4150 GOSUB 4250 4160 ' 4170 ' déplacement d'un cube à gauche 4180 ' 4190 C=C-2 4200 X=X-64 4210 GOTO 3050 4220 ' 4230 ' efface le point blanc avant déplacement - retour au sous programme pour de déplacement pour nouvelles coordonnées et nouvel affichage 4240 ' 4250 LOCATE C,L 4260 PEN A 4270 PRINT CHR$(143) 4280 FOR TP=1 TO 300:NEXT 4290 RETURN 4300 ' 4310 'affichage du score (variable SC) 4320 ' 4330 ENV 1,50,2,2:ENT 1,50,-2,2:SOUND 1,220,75,1,1,1 4340 IF P<>60 THEN 4490 'préparation non terminée renvoi aux permutations 4350 SC=SC+1 4360 IF SC<=CJ-19 THEN 4390 ' reste 20 coups à jouer mise en route clignotement 4370 INK 12,7,26 4380 IF SC=CJ+1 THEN 5350 'partie perdue 4390 IF SC>9 THEN 4400 ELSE LOCATE 4,22:PEN 10:PRINT CHR$(143):LOCATE 3,22:PEN 12:PRINT SC:GOTO 4490 4400 IF SC>99 THEN 4410 ELSE LOCATE 3,22:PEN 10:PRINT CHR$(143)+CHR$(143):LOCATE 2,22:PEN 12:PRINT SC:GOTO 4490 4410 LOCATE 2,22:PEN 10:PRINT CHR$(143)+CHR$(143)+CHR$(143):LOCATE 1,22:PEN 12:PRINT SC 4420 ' 4430 ' sous programme de permutation 4440 ' 4450 ' 4460 ' 4470 ' modification du cube de base pen = variables A1 et B1 4480 ' 4490 PEN B1 4500 LOCATE C,L-1:PRINT CHR$(144)+CHR$(145) 4510 LOCATE C+1,L:PRINT CHR$(147) 4520 PEN A1 4530 LOCATE C+1,L-1:PRINT CHR$(146) 4540 LOCATE C,L:PRINT CHR$(143)+CHR$(148) 4550 ' 4560 ' étudie position des cubes autour du cube de base: variables U et V 4570 ' 4580 ' détermine si une permutation de couleur doit ^tre faite selon valeur de L, C et F 4590 ' 4600 IF F=2 AND L=4 THEN 4650 4610 IF F=1 AND L<=6 THEN 4650 4620 U=L-2:V=C+2 4630 YA=Y+32:XA=X+64 4640 GOSUB 4940 4650 IF F=2 AND L=4 AND C=18 THEN 4750 4660 IF F=1 AND L<=6 AND C=16 THEN 4750 4670 IF L=6 AND C=16 THEN 4750 4680 IF L=8 AND C=14 THEN 4750 4690 IF F=1 AND L>=10 AND C=12 THEN 4750 4700 IF L=10 AND C=12 THEN 4750 4710 IF L=12 AND C=10 THEN 4750 4720 U=L:V=C+2 4730 YA=Y:XA=X+64 4740 GOSUB 4940 4750 IF F=2 AND L=12 THEN 4800 4760 IF F=1 AND L>=10 THEN 4800 4770 U=L+2:V=C-2 4780 YA=Y-32:XA=X-64 4790 GOSUB 4940 4800 IF F=2 AND L=4 AND C=10 THEN 4900 4810 IF F=1 AND L<=6 AND C=8 THEN 4900 4820 IF L=6 AND C=8 THEN 4900 4830 IF L=8 AND C=6 THEN 4900 4840 IF F=1 AND L>=10 AND C=4 THEN 4900 4850 IF L=10 AND C=4 THEN 4900 4860 IF L=12 AND C=2 THEN 4900 4870 U=L:V=C-2 4880 YA=Y:XA=X-64 4890 GOSUB 4940 4900 IF P<60 THEN 4920 4910 GOTO 3050 4920 IF P=M THEN 2940 4930 GOTO 2930 4940 ' 4950 ' test couleur des cubes entourant le cube de base: variables XA,YA 4960 ' 4970 IF F=1 THEN 5010 4980 IF TEST(XA,YA)<>3 THEN 5010 4990 IF OP=2 OR OP=3 THEN A1=2:B1=9:GOTO 5230 5000 IF OP=1 OR OP=4 THEN A1=8:B1=14:GOTO 5230 5010 IF TEST(XA,YA)<>2 THEN 5060 5020 IF F=2 THEN 5040 5030 IF OP=1 OR OP=4 THEN A1=1:B1=10:GOTO 5230 5040 IF OP=2 OR OP=3 THEN A1=4:B1=15:GOTO 5230 5050 IF OP=1 OR OP=4 THEN A1=3:B1=11:GOTO 5230 5060 IF TEST(XA,YA)<>4 THEN 5090 5070 IF OP=2 OR OP=3 THEN A1=13:B1=5:GOTO 5230 5080 IF OP=1 OR OP=4 THEN A1=2:B1=9:GOTO 5230 5090 IF TEST(XA,YA)<>13 THEN 5120 5100 IF OP=2 OR OP=3 THEN A1=1:B1=10:GOTO 5230 5110 IF OP=1 OR OP=4 THEN A1=4:B1=15:GOTO 5230 5120 IF TEST(XA,YA)<>1 THEN 5170 5130 IF F=2 THEN 5150 5140 IF OP=2 OR OP=3 THEN A1=2:B1=9:GOTO 5230 5150 IF OP=1 OR OP=4 THEN A1=13:B1=5:GOTO 5230 5160 IF OP=2 OR OP=3 THEN A1=8:B1=14:GOTO 5230 5170 IF F=1 THEN 5230 ELSE IF TEST(XA,YA)<>8 THEN 4900 5180 IF OP=2 OR OP=3 THEN A1=3:B1=11:GOTO 5230 5190 IF OP=1 OR OP=4 THEN A1=1:B1=10 5200 ' 5210 'modifie la couleur cube par cube selon variable OP 5220 ' 5230 PEN B1 5240 LOCATE V,U-1:PRINT CHR$(144) 5250 LOCATE V+1,U-1:PRINT CHR$(145) 5260 LOCATE V+1,U:PRINT CHR$(147) 5270 PEN A1 5280 LOCATE V+1,U-1:PRINT CHR$(146) 5290 LOCATE V,U:PRINT CHR$(143)+CHR$(148) 5300 V=0:U=0:A1=0:B1=0 5310 RETURN 5320 ' 5330 'la partie est perdue 5340 ' 5350 G=40:FOR I=1 TO 26 5360 INK 0,I 5370 SOUND 10,G,10,15 5380 SOUND 17,G-20,10,15 5390 G=G+20 5400 PEN 12:LOCATE 8,24:PRINT "PERDU":NEXT I:GOSUB 2320:GOTO 6190 'affichage du résultat 5410 ' 5420 ' accompagnement musical pour présentation et partie gagnée 5430 ' 5440 ENV 1,1,15,1,10,-3,20 5450 ENV 2,1,6,1,20,-2,0.5 5460 ENV 3,1,3,1,30,-2,0.5 5470 RESTORE 5540 5480 FOR I=1 TO 73 5490 READ D,P1,P2 5500 SOUND 49,P1,D*14,0,1 5510 SOUND 42,P2,D*14,0,2 5520 SOUND 28,P2/2,D*14,0,3 5530 NEXT I 5540 DATA 2,851,106,1,638,80,1,676,84,2,638,80,2,851,106,2,568,71,2,851,106,2,536,67,2,638,80,2,478,60,2,638,80,2,426,53,2,638,80,2,402,50,2,638,80,1,676,84,1,638,80,1,568,71,1,676,84,2,851,106,1,426,53,1,478,60 5550 DATA 1,506,63,1,478,60,1,426,53,1,506,63,1,638,80,1,568,71,1,506,63,1,638,80,2,716,89,1,804,100,1,851,106,2,804,100,1,478,60,1,536,67,1,568,71,1,536,67,1,478,60 5560 DATA 1,568,71,1,716,89,1,638,80,1,568,71,1,716,89,2,804,100,1,851,106,1,956,119,2,851,106,1,536,67,1,568,71,1,638,80,1,568,71,1,536,67,1,638,80,1,804,100,1,716,89,1,638,80,1,804,100,2,851,106,1,956,119 5570 DATA 1,1073,134,2,956,119,2,804,100,2,851,106,2,638,80,1,676,84,1,638,80,1,568,71,1,676,84,2,676,84,1,638,80,1,676,84,3,638,80,3 5580 RETURN 5590 ' 5600 ' controle des couleurs et du choix de l'ordinateur touche <V>:variable Z 5610 ' 5620 X=290:Y=50:MOVE X,Y 5630 IF TEST(X,Y)=1 THEN Z=1 5640 IF TEST(X,Y)=2 THEN Z=2 5650 IF TEST(X,Y)=3 THEN Z=3 5660 IF TEST(X,Y)=4 THEN Z=4 5670 IF TEST(X,Y)=8 THEN Z=8 5680 IF TEST(X,Y)=13 THEN Z=13 5690 IF F=2 THEN 5730 5700 X1=228:X2=482 5710 Y=306:NL=3 5720 GOTO 5740 5730 Y=338:X1=290:X2=548:NL=5 5740 FOR I=1 TO NL 5750 FOR X=X1 TO X2 STEP 64 5760 MOVE X,Y 5770 IF TEST(X,Y)<>Z THEN 5850 ' un des cubes n'est pas de la bonne couleur 5780 NEXT X 5790 X1=X1-64:X2=X2-64:Y=Y-32 5800 NEXT I 5810 GOTO 5890 ' tous les cubes sont corrects - partie gagnée 5820 ' 5830 ' couleur des cubes incorrecte la partie doit continuer 5840 ' 5850 PEN 12:LOCATE 8,24:PRINT "REJOUEZ":GOSUB 2320:PEN 0:FOR X=8 TO 14:LOCATE X,24:PRINT CHR$(143):NEXT X:GOTO 3460 ' retour programme principal 5860 ' 5870 ' couleur d'origine reconstituée partie gagnée 5880 ' 5890 MODE 1:INK 1,7:INK O,19:FOR I=1 TO 10:ENT 1,30,30,5:SOUND 1,20,10,15,0,1:NEXT:PEN 1:LOCATE 5,2:PRINT "J'ai effectué ";M;" permutations":LOCATE 4,4:PRINT "Vous deviez réussir en ";CJ;" coups":LOCATE 10,7:PRINT "VOTRE SCORE EST DE";SC 5900 LOCATE 9,10:PRINT "TOUTES MES FELICITATIONS":IF F=2 THEN 5910 ELSE LOCATE 3,14:PRINT "Mais si vous voulez ^tre un Champion":LOCATE 11,16:PRINT "essayez le niveau 2":GOSUB 5440:GOTO 5940 5910 LOCATE 11,14:PRINT "C'est un vrai plaisir de jouer":LOCATE 6,16:PRINT "avec quelqu'un d'aussi fort":GOSUB 5440 5920 ' 5930 ' attente d'une touche nouvelle partie ou fin de jeu 5940 LOCATE 1,24:PRINT "Nouvelle partie O/N" 5950 T$=UPPER$(INKEY$):IF T$="" THEN 5950 5960 IF T$="N" THEN 6030 5970 IF T$="O" THEN 5990 5980 GOTO 5950 5990 OP=0:P=0:M=0:SC=0:CJ=0:X=0:Y=0:L=0:C=0:NL=0:Z=0:F=0:A=0:B=0:A1=0:B1=0:ya=0:xa=0:BORDER 13:INK 0,13:OP=INT(RND*4)+1:GOTO 1230 'variables remises à 0 pour nouvelle partie 6000 ' 6010 ' fin de partie 6020 ' 6030 MODE 0:BORDER 13:INK 0,0:N=10:LOCATE 1,25 6040 FOR I=1 TO 255:SOUND 1,N,1,15:POKE &B28F,I:PRINT " AU REVOIR":IF I<=128 THEN 6070 6050 N=N-1 6060 GOTO 6080 6070 N=N+1 6080 NEXT 6090 INK 0,1:BORDER 1 6100 MODE 1:INK 1,24:PEN 1:END 6110 ' 6120 ' annulation d'un jeu 6130 ' 6140 MODE 1:BORDER 2:INK 0,2:INK 1,15:PEN 1:FOR I=1 TO 3:FOR N=1 TO 100 STEP 10:SOUND 1,N,2,15:NEXT:NEXT 6150 LOCATE 7,6:PRINT "Vous n'allez pas abandonner":LOCATE 5,10:PRINT "je commencais à bien m'amuser !":LOCATE 12,14:PRINT "ON EN REFAIT UNE ?":GOTO 5940 6160 ' 6170 ' affichage résultat partie perdue 6180 ' 6190 MODE 1:INK 0,7:BORDER 7:INK 1,25:LOCATE 1,4:PEN 1:PRINT " Désolé, je ne suis pas facile à battre":LOCATE 10,9:PRINT "Vous avez joué";SC;"fois":LOCATE 5,12:PRINT "Vous deviez réussir en";CJ;"coups" 6200 LOCATE 9,18:PRINT "PAS TERRIBLE LE RESULTAT":GOTO 5940 |