1 REM ************* 2 REM *** 2048 *** 3 REM ************* 5 CLEAR 10 REM ERASE A,B,C 15 DIM A(5,5),B(5),C(5) 16 A(1,1)=6:A(1,2)=6 17 A(2,1)=6:A(2,2)=6 20 N=0:P=0:C=15:B=0:T=2 50 GOSUB 950: GOSUB 900 100 REM BOUCLE DE JEU 105 REM INITIALISATION AVEC DEUX 2 110 GOSUB 1000 120 IF T>1 THEN GOSUB 900 130 K$=INKEY$:IF K$="" THEN 130 140 IF K$="B" OR K$="b" THEN B=1-B:BEEP 100,2 150 IF ASC(K$)<28 OR ASC(K$)>31 THEN GOTO 130 155 IN=0:T=0 160 ON ASC(K$)-27 GOSUB 500,600,800,700 170 GOTO 100 500 REM JEU A DROITE 510 FOR I=1 TO 4:IN=1 520 REM Copie Cadree du Vecteur dans B 525 IF T=1 THEN T=0 530 MM=4:CC=1:FOR J=4 TO 1 STEP -1 :IF A(I,J)<>0 THEN B(MM)=A(I,J):MM=MM-1:IN=0:T=T*2 ELSE B(CC)=0:CC=CC+1:IF T=0 THEN T=1 535 NEXT J 537 IF IN=1 THEN GOTO 560 540 GOSUB 1200 550 MM=4:CC=1:FOR J=4 TO 1 STEP -1:IF B(J)<>0 THEN A(I,MM)=B(J):MM=MM-1 ELSE A(I,CC)=0:CC=CC+1 555 NEXT J 560 NEXT I 570 RETURN 600 REM GAUCHE 610 FOR I=1 TO 4:IN=1 620 REM Copie Cadree du Vecteur dans B 625 IF T=1 THEN T=0 630 MM=1:CC=4:FOR J=1 TO 4 :IF A(I,J)<>0 THEN B(5-MM)=A(I,J):MM=MM+1:IN=0:T=T*2 ELSE B(5-CC)=0:CC=CC-1:IF T=0 THEN T=1 635 NEXT J 637 IF IN THEN 660 640 GOSUB 1200 650 MM=1:CC=4:FOR J=1 TO 4:IF B(5-J)<>0 THEN A(I,MM)=B(5-J):MM=MM+1 ELSE A(I,CC)=0:CC=CC-1 655 NEXT J 660 NEXT I 670 RETURN 700 REM HAUT 710 FOR I=1 TO 4:IN=1 720 REM Copie Cadree du Vecteur dans B 725 IF T=1 THEN T=0 730 MM=4:CC=1:FOR J=4 TO 1 STEP -1:IF A(J,I)<>0 THEN B(MM)=A(J,I):MM=MM-1:IN=0:T=2*T ELSE B(CC)=0:CC=CC+1:IF T=0 THEN T=1 735 NEXT J 737 IF IN THEN 760 740 GOSUB 1200 750 MM=4:CC=1:FOR J=4 TO 1 STEP -1:IF B(J)<>0 THEN A(MM,I)=B(J):MM=MM-1 ELSE A(CC,I)=0:CC=CC+1 755 NEXT J 760 NEXT I 790 RETURN 800 REM BAS 805 IN=1 810 FOR I=1 TO 4:IN=1 820 REM Copie Cadree du Vecteur dans B 825 IF T=1 THEN T=0 830 MM=1:CC=4:FOR J=1 TO 4 :IF A(J,I)<>0 THEN B(5-MM)=A(J,I):MM=MM+1:IN=0:T=2*T ELSE B(5-CC)=0:CC=CC-1:IF T=0 THEN T=1 835 NEXT J 837 IF IN THEN 860 840 GOSUB 1200 850 MM=1:CC=4:FOR J=1 TO 4:IF B(5-J)<>0 THEN A(MM,I)=B(5-J):MM=MM+1 ELSE A(CC,I)=0:CC=CC-1 855 NEXT J 860 NEXT I 890 RETURN 900 REM TIRAGE ALEATOIRE 910 X=INT(RND(1)*4+1):Y=INT(RND(1)*4+1) 920 IF A(X,Y)<>0 THEN 910 930 A(X,Y)=1-(RND(1)>0.9):N=N+1 935 LOCATE (Y-1)*3+1,X-1:PRINT MID$(STR$(2^A(X,Y))+" ",2,2); 936 LOCATE C-2,1:PRINT N 938 IF B=1 THEN BEEP 100,2 940 RETURN 950 REM Preparation du plateau 952 CLS 955 LINE (3,0)-(3,30) 960 LINE (21,0)-(21,30) 965 LINE (39,0)-(39,30) 970 LINE (57,0)-(57,30) 975 LINE (75,0)-(75,30) 980 LOCATE C,0:PRINT "Nbr:"; 985 LOCATE C,2:PRINT "Pts:"; 990 RETURN 1000 REM Impression des chiffres 1020 FOR I=1 TO 4 1030 FOR J=1 TO 4 1035 P$=" " 1040 IF A(I,J)>6 THEN GOSUB 1500:P$=CHR$(128)+CHR$(129):GOTO 1045 1042 IF A(I,J)>0 THEN P$=MID$(STR$(2^A(I,J))+" ",2,2) 1045 LOCATE (J-1)*3+1,I-1:PRINT P$; 1050 NEXT J 1060 NEXT I 1074 LOCATE C-2,3:PRINT P; 1090 RETURN 1200 REM CADRAGE / ELIMINATION 1220 FOR J=4 TO 2 STEP -1 1230 IF B(J)=B(J-1) AND B(J)<>0 THEN B(J)=B(J)+1:B(J-1)=0:P=P+2^B(J):T=2 1240 NEXT J 1260 RETURN 1500 ON A(I,J)-6 GOSUB 2010,2020,2030,2040,2050 1510 RETURN 2000 REM CARACTERES 2010 REM 128 2011 FONT$(128)="&H0,&H14,&H30,&H14,&H14,&H14,&H0,&H0" 2012 FONT$(129)="&H0,&H90,&HA8,&H90,&H28,&H90,&H0,&H0" 2013 RETURN 2020 REM 256 2021 FONT$(128)="&H0,&H6C,&H28,&H6C,&H44,&H6C,&H0,&H0" 2022 FONT$(129)="&H0,&H40,&H40,&H70,&H50,&H70,&H0,&H0" 2023 RETURN 2030 REM 512 2031 FONT$(128)="&H0,&H30,&H24,&H30,&H10,&H30,&H0,&H0" 2032 FONT$(129)="&H0,&HB0,&H90,&HB0,&HA0,&HB0,&H0,&H0" 2033 RETURN 2040 REM 1024 2041 FONT$(128)="&H0,&H24,&H68,&H28,&H28,&H24,&H0,&H0" 2042 FONT$(129)="&H0,&H68,&HA8,&HEC,&HC4,&H64,&H0,&H0" 2043 RETURN 2050 REM 2048 2051 FONT$(128)="&H00,&HC8,&H54,&HD4,&H94,&HC8,&H00,&H00" 2052 FONT$(129)="&H00,&H88,&H94,&H88,&HD4,&H48,&H00,&H00" 2053 RETURN