( Jeu de casse briques pour coeur FORTH. Version 2.00 du 18 Mars 2012. Ecrit par jpb.forth . ) DECIMAL START 2@ CONSTANT DEBUT_BRIQUES FEN_STRING" S_BRIQUES Casse-BRIQUES" Cass-BRICKS" FEN_STRING" S_DESCRIPTIF Casse-BRIQUES FORTH Version 2.00 du 18/03/2012 http://jpb.forth.free.fr/ jpb_forth@yahoogroups.com Que le FORTH soit avec TOI! " FORTH Cass-BRICKS Version 2.00 in 03/18/2012 http://jpb.forth.free.fr/ jpb_forth@yahoogroups.com May the FORTH be with you! " FEN_STRING" S_MENU NOUVEAU JEU....Esc G PAUSE/REPRISE..Esc R FERMER.........Esc F MENU...........Esc N" NEW GAME........ESC G PAUSE/RECOVERY..Esc R CLOSE...........ESC F MENU............ESC N" FEN_STRING" S_SCORES Meilleurs SCORES: " Better SCORES: " " NEMO..........4000 NEMO..........2000 NEMO..........1000 NEMO...........500 NEMO...........250 NEMO .....0" STRING S_SCORES+ FEN_STRING" S_NIVEAU Niveau : 0" Level : 0" " Score : 0" STRING S_SCORE FEN_STRING" S_NOTICE Esc G pour commencer le jeu, Esc R pour faire une pause ou reprendre le jeu." Esc G to begin the game, Esc R to make a pause or to recover the game." FEN_STRING" S_NOM_RECORD FELICITATION! Votre nom :" CONGRATULATION! Your name :" FEN_STRING" S_PB_SCORES Probleme pendant l'enregistrement des scores !" Problem during the recording of the scores!" FEN_STRING" S_BAD_SCORE Desole, votre score n'est pas suffisamment brillant pour etre memorise :-( " Sorry, your score is not sufficiently brilliant to be records :-( " 0 VARIABLE F_BRQ 0 VARIABLE MSQ_BRQ 0 VARIABLE SON_BRQ 0 VARIABLE ETAT 0 VARIABLE PRECED 0 VARIABLE NIVEAU_BRQ 0 VARIABLE NB_BRIQUES 3 VARIABLE NB_BALLES 0 VARIABLE CNT_BALLE 0 VARIABLE PAUSE 0 VARIABLE X_RAQUETTE 0 VARIABLE MEMX_RAQUETTE 0 VARIABLE X_BALLE 0 VARIABLE Y_BALLE 0 VARIABLE MEMX_BALLE 0 VARIABLE MEMY_BALLE 0 VARIABLE DX_BALLE 0 VARIABLE DY_BALLE 0 VARIABLE SCORE 0 VARIABLE RECORD 0 VARIABLE CNT_BALLE_PERDUE -1 VARIABLE BRIQUE_1 -1 VARIABLE BRIQUE_2 HERE 40 26 2 */ ALLOT CONSTANT FOND_JEUX ( --> 40 x 26 ) HERE ( Table des 15 angles possibles de depart dx,dy ) -16 , -3 , -15 , -6 , -13 , -9 , -12 , -12 , -9 , -13 , -6 , -15 , -3 , -16 , 0 , -16 , 3 , -16 , 6 , -15 , 9 , -13 , 12 , -12 , 13 , -9 , 15 , -6 , 16 , -3 , CONSTANT ANGLES " APPLICATIONS/JEUX/briques.scr" STRING S_FIC_SCORES S_FIC_SCORES COUNT CHEMIN_CONCATENE ?DUP [IF] : LNG ( adr --> adr,lng ) 0 BEGIN OVER OVER + C@ 4 < IF -1 ELSE 1+ 0 THEN UNTIL ; LNG FORGET LNG HERE OVER 2+ 2/ ALLOT OVER OVER C! 3 PICK OVER 1+ 4 ROLL CMOVE CONSTANT S_FIC_SCORES MEMOIRE_LIBERE DROP [THEN] " I" STRING S_1 " II" STRING S_2 " III" STRING S_3 " IV" STRING S_4 BIN HERE 1111111011111110 , ( 0 ) 1101100011011000 , 1110010011100100 , 1000000010000000 , 0000000011111110 , 0000000011011000 , 0000000011100100 , 0000000010000000 , 1111111011111110 , 1101100011011000 , 1110010011100100 , 1000000010000000 , 1111111000000000 , 1101100000000000 , 1110010000000000 , 1000000000000000 , 0000000100000001 , ( 1 ) 0010011100100111 , 0001101100011011 , 0111111101111111 , 0000000000000001 , 0000000000100111 , 0000000000011011 , 0000000001111111 , 0000000100000001 , 0010011100100111 , 0001101100011011 , 0111111101111111 , 0000000100000000 , 0010011100000000 , 0001101100000000 , 0111111100000000 , 0000000000000000 , ( 2 ) 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000100000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , ( 3 ) 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000110000000 , 0000001011000000 , 0000001111000000 , 0000000110000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0111110000111110 , ( 4 ) 0111110000111110 , 0011100000011100 , 0011100000111000 , 0011100001110000 , 0011100011100000 , 0011100111000000 , 0011111110000000 , 0011111110000000 , 0011100111000000 , 0011100011100000 , 0011100001110000 , 0011100000111000 , 0011100000011100 , 0111110000111110 , 0111110000111110 , 0011111000111110 , ( 5 ) 0110001101100011 , 0000001101100000 , 0011111100111000 , 0110001100001110 , 0110001100000011 , 0110011101100011 , 0011101100111110 , 0011111000000000 , 0110001100000000 , 0110000000000000 , 0011100000000000 , 0000111000000000 , 0000001100000000 , 0110001100000000 , 0011111000000000 , 0000001111100110 , ( 6 ) 0000111111111110 , 0001110000011110 , 0011100000001110 , 0011100000000110 , 0111000000000000 , 0111000000000000 , 0111000000000000 , 0111000000000000 , 0111000000000000 , 0111000000000000 , 0011100000000110 , 0011100000001110 , 0001110000011110 , 0000111111111110 , 0000001111100110 , 0011111000111110 , ( 7 ) 0110001101100011 , 0000001101100000 , 0011111100111000 , 0110001100001110 , 0110001100000011 , 0110011101100011 , 0011101100111110 , 0011111000111110 , 0110001101100011 , 0110000001100011 , 0011100001100011 , 0000111001111110 , 0000001101100000 , 0110001101100011 , 0011111000111110 , 0000000000000000 , ( 8 ) 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000111111110000 , 0000111111110000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0000000000000000 , 0111111111000000 , ( 9 ) 0111111111110000 , 0011100000111000 , 0011100000011100 , 0011100000011100 , 0011100000111000 , 0011111111110000 , 0011111111111000 , 0011100000011100 , 0011100000001110 , 0011100000001110 , 0011100000001110 , 0011100000001110 , 0011100000011100 , 0111111111111000 , 0111111111100000 , 0111111111100000 , ( 10 ) 0111111111111000 , 0011100000011100 , 0011100000001110 , 0011100000001110 , 0011100000001110 , 0011100000001110 , 0011100000011100 , 0011111111111000 , 0011111111100000 , 0011100011100000 , 0011100001110000 , 0011100000111000 , 0011100000011100 , 0111110000111110 , 0111110000111110 , 0000001111100000 , ( 11 ) 0000001111100000 , 0000000111000000 , 0000000111000000 , 0000000111000000 , 0000000111000000 , 0000000111000000 , 0000000111000000 , 0000000111000000 , 0000000111000000 , 0000000111000000 , 0000000111000000 , 0000000111000000 , 0000000111000000 , 0000001111100000 , 0000001111100000 , 0000001111000000 , ( 12 ) 0000111111110000 , 0001110000111000 , 0011100000011100 , 0011100000011100 , 0111000000001110 , 0111000000001110 , 0111000000001110 , 0111000000001110 , 0111000000001110 , 0111000011001110 , 0011100011111100 , 0011100001111100 , 0001110000111000 , 0000111111111100 , 0000001111001100 , 0111110000111110 , ( 13 ) 0111110000111110 , 0011100000011100 , 0011100000011100 , 0011100000011100 , 0011100000011100 , 0011100000011100 , 0011100000011100 , 0011100000011100 , 0011100000011100 , 0011100000011100 , 0011100000011100 , 0001110000111000 , 0001110000111000 , 0000111111110000 , 0000001111000000 , 0111111111111110 , ( 14 ) 0111111111111110 , 0011100000001110 , 0011100000000110 , 0011100000000000 , 0011100001100000 , 0011111111100000 , 0011111111100000 , 0011100001100000 , 0011100000000000 , 0011100000000000 , 0011100000000000 , 0011100000000110 , 0011100000001110 , 0111111111111110 , 0111111111111110 , 0000011111110000 , ( 15 ) 0001111111111100 , 0011100000001110 , 0111000000000110 , 0111000000000000 , 0111000000000000 , 0011110000000000 , 0000111110000000 , 0000000111110000 , 0000000000111100 , 0000000000001110 , 0000000000001110 , 0110000000001110 , 0111000000011100 , 0011111111111000 , 0000111111100000 , 0000000000000000 , ( 16 ) 0000000000001011 , 0000001011111111 , 0001111111111111 , 0111111111111111 , 1111111111111111 , 1111111111111111 , 0111111111110101 , 0000101011111111 , 1111111111111111 , 1111111111111111 , 1111111111111111 , 1111111111111111 , 1111111111111111 , 1111010100000000 , 0000000000000000 , 1111111101010000 , ( 17 ) 1111111111111111 , 1111111111111111 , 1111111111111111 , 1111111111111111 , 1111111111111111 , 0000000010101111 , 0000000000000000 , 0000000000000000 , 1101000000000000 , 1111111101000000 , 1111111111111000 , 1111111111111110 , 1111111111111111 , 1111111111111111 , 1010111111111110 , 0000001010000000 , ( 18 ) 0000100000100000 , 0000000000001000 , 0010000000000000 , 0000000000000010 , 0100000101000000 , 0000001010100001 , 1000010101000000 , 0000001010100001 , 1000010101000000 , 0000001010000010 , 0100000000000000 , 0000000000000100 , 0001000000000000 , 0000010000010000 , 0000000101000000 , 0000000101000000 , ( 19 ) 0000010000010000 , 0001000000000000 , 0000000000000100 , 0100000000000000 , 0000000000000010 , 1000000000000000 , 0000000001010001 , 1000000010101000 , 0000000001010001 , 0100000010101000 , 0000000001010010 , 0010000000000000 , 0000000000001000 , 0000100000100000 , 0000001010000000 , 0000001010000000 , ( 20 ) 0000100000100000 , 0000000000001000 , 0010000000000000 , 0000000000000010 , 0100000000000000 , 0000000000000001 , 1000000000000000 , 0000000000001001 , 1000000000010100 , 0000000000101010 , 0100000000010000 , 0000000000000100 , 0001000000000000 , 0000010000010000 , 0000000101000000 , 0000000101000000 , ( 21 ) 0000010000010000 , 0001000000000000 , 0000000000000100 , 0100000000000000 , 0000000000000010 , 1000000000000000 , 0000000000000001 , 1000000000000000 , 0000000000000001 , 0100000000000100 , 0000000000001010 , 0010000000000000 , 0000000000001000 , 0000100000100000 , 0000001010000000 , 0000001010000000 , ( 22 ) 0000100000100000 , 0000000000001000 , 0010000000000000 , 0000000000000010 , 0100000000000000 , 0000000000000001 , 1000000000000000 , 0000000000000001 , 1000000000000000 , 0000000000000010 , 0100000000000000 , 0000000000000100 , 0001000000000000 , 0000010000010000 , 0000000101000000 , 0000000101000000 , ( 23 ) 0000010000010000 , 0001000000000000 , 0001000000000100 , 0110000000000000 , 0000000000000010 , 1000000000000000 , 0000000000000001 , 1000000000000000 , 0000000000000001 , 0100000000000000 , 0000000000000010 , 0010000000000000 , 0000000000001000 , 0000100000100000 , 0000001010000000 , 0000001010000000 , ( 24 ) 0000100000100000 , 0000000000001000 , 0010000000000000 , 0000100000000010 , 0101010000000000 , 0010100000000001 , 1001000000000000 , 0000000000000001 , 1000000000000000 , 0000000000000010 , 0100000000000000 , 0000000000000100 , 0001000000000000 , 0000010000010000 , 0000000101000000 , 0000000101000000 , ( 25 ) 0000010000010000 , 0001000000000000 , 0000000000000100 , 0100101000000000 , 0001010100000010 , 1000101000000000 , 0001010100000001 , 1000101000000000 , 0000000000000001 , 0100000000000000 , 0000000000000010 , 0010000000000000 , 0000000000001000 , 0000100000100000 , 0000001010000000 , 0000000000000000 , ( 26 ) 0000001111000000 , 0000111111110000 , 0001111111111000 , 0011111111111100 , 0011111111111100 , 0111111111111110 , 0111111111111110 , 0111111111111110 , 0111111111111110 , 0011111111111100 , 0011111111111100 , 0001111111111000 , 0000111111110000 , 0000001111000000 , 0000000000000000 , CONSTANT SYMBOLES_SOURIS DECIMAL : DEGRADE_BRQ ( adr_degrade --> - ) : CREATE DUP HERE OVER 2+ @ 3 PICK 4+ @ + 4* 2* 64+ DUP 2/ ALLOT CMOVE MEMOIRE_LIBERE DROP DOES> ; 95 95 95 47 47 47 95 0 95 0 0 95 0 95 0 95 95 0 95 77 0 95 0 0 47 0 0 0 0 0 95 95 95 11 24 24 -1 DEGRADE_\ DEGRADE_BRQ FOND_ICONE 95 95 95 47 47 47 95 0 95 0 0 95 0 95 0 95 95 0 95 77 0 95 0 0 47 0 0 0 0 0 95 95 95 11 640 432 -1 DEGRADE_\ DEGRADE_BRQ FOND_SOMBRE 255 255 255 127 127 127 255 0 255 0 0 255 0 255 0 255 255 0 255 127 0 255 0 0 127 0 0 0 0 0 255 255 255 11 640 432 -1 DEGRADE_\ DEGRADE_BRQ FOND_CLAIR 0 0 0 127 0 0 255 255 255 3 32 16 -1 DEGRADE_\ DEGRADE_BRQ FOND_BRIQUE_I 0 0 0 255 0 0 255 255 255 3 32 16 -1 DEGRADE_\ DEGRADE_BRQ FOND_BRIQUE_II 0 0 0 255 127 0 255 255 255 3 32 16 -1 DEGRADE_\ DEGRADE_BRQ FOND_BRIQUE_III 0 0 0 255 255 0 255 255 255 3 32 16 -1 DEGRADE_\ DEGRADE_BRQ FOND_BRIQUE_IV 0 0 0 47 0 0 95 95 95 3 32 16 -1 DEGRADE_\ DEGRADE_BRQ FOND_BRIQUE_I_F 0 0 0 95 0 0 95 95 95 3 32 16 -1 DEGRADE_\ DEGRADE_BRQ FOND_BRIQUE_II_F 0 0 0 95 47 0 95 95 95 3 32 16 -1 DEGRADE_\ DEGRADE_BRQ FOND_BRIQUE_III_F 0 0 0 95 95 0 95 95 95 3 32 16 -1 DEGRADE_\ DEGRADE_BRQ FOND_BRIQUE_IV_F ( Aire du jeu dans une matrice de 40x25 cases: 0 1 2 3 0123456789012345678901234567890123456789 00 1 2 3 4 [][][] 5 []()() 6 []() 7 []() 8 []() 9 []() 10 [][][] 1 ()()() 2 3 4 5 6 7 8 9 O 20 1 2 3 4 ==== 5 Code des briques: - 00 --> rien - 1x --> brique simple cote gauche ROUGE - 2x --> brique simple cote droit ROUGE - 3x --> brique resistante cote gauche ORANGE - 4x --> brique resistante cote droit ORANGE - 5x --> brique plus resistante cote gauche JAUNE - 6x --> brique plus resistante cote droit JAUNE - 7x --> brique encore plus resistante cote gauche BLANCHE - 8x --> brique encore plus resistante cote droit BLANCHE ) HEX HERE 70807080 2, 70800000 2, 00007080 2, 30403040 2, 00007080 2, 30400000 2, 00007080 2, 30400000 2, 00007080 2, 30400000 2, 00007080 2, 30400000 2, 70807080 2, 70800000 2, 00003040 2, 30403040 2, CONSTANT MOTIF_I HERE 70807080 2, 00007080 2, 70800000 2, 70803040 2, 30400000 2, 70803040 2, 70803040 2, 00000000 2, 70803040 2, 00007080 2, 00007080 2, 00003040 2, 00007080 2, 30407080 2, 30400000 2, 00000000 2, 70800000 2, 30400000 2, 00000000 2, 70803040 2, 00000000 2, 00000000 2, 00003040 2, 00000000 2, CONSTANT MOTIF_V HERE 70807080 2, 00007080 2, 70800000 2, 70803040 2, 30400000 2, 70803040 2, 00007080 2, 00007080 2, 00003040 2, 00000000 2, 70800000 2, 30400000 2, 00007080 2, 00007080 2, 00000000 2, 70800000 2, 30400000 2, 70800000 2, 70807080 2, 00007080 2, 70803040 2, 00003040 2, 30400000 2, 30403040 2, CONSTANT MOTIF_X DECIMAL HERE 500 , 250 , 0 , CONSTANT SON_PERTE_BALLE HERE 10 , 500 , 0 , CONSTANT SON_MUR HERE 10 , 1000 , 0 , CONSTANT SON_RAQUETTE HERE 10 , 2000 , 0 , CONSTANT SON_BRIQUE : BRIQUES_I ( x,y --> - ) 40 * + FOND_JEUX + MOTIF_I DUP >R [ 8 8 * LITERAL ] + R> DO I OVER 8 CMOVE 40+ 8 +LOOP DROP 20 NB_BRIQUES +! ; : BRIQUES_V ( x,y --> - ) 40 * + FOND_JEUX + MOTIF_V DUP >R [ 12 8 * LITERAL ] + R> DO I OVER 12 CMOVE 40+ 12 +LOOP DROP 25 NB_BRIQUES +! ; : BRIQUES_X ( x,y --> - ) 40 * + FOND_JEUX + MOTIF_X DUP >R [ 12 8 * LITERAL ] + R> DO I OVER 12 CMOVE 40+ 12 +LOOP DROP 28 NB_BRIQUES +! ; : INIT_BRIQUES ( niveau --> - ) -1 PAUSE ! 320 DUP X_RAQUETTE ! DUP MEMX_RAQUETTE ! 8- DUP X_BALLE ! MEMX_BALLE ! [ 23 4 LSH 8+ LITERAL ] DUP Y_BALLE ! MEMY_BALLE ! NPA ABS 9 MOD 3+ 4* ANGLES + DUP @ DX_BALLE ! 2+ @ DY_BALLE ! DUP NIVEAU_BRQ @ 0= AND IF 3 NB_BALLES ! 0 SCORE 2! THEN DUP NIVEAU_BRQ ! DUP IF 2 ELSE 1 THEN ETAT ! FOND_JEUX [ 40 26 * LITERAL ] 0 FILL 0 NB_BRIQUES ! DUP >R CASE 1 OF 16 4 BRIQUES_I ENDOF 2 OF 12 4 BRIQUES_I 20 4 BRIQUES_I ENDOF 3 OF 8 4 BRIQUES_I 16 4 BRIQUES_I 24 4 BRIQUES_I ENDOF 4 OF 10 4 BRIQUES_I 18 4 BRIQUES_V ENDOF 5 OF 14 4 BRIQUES_V ENDOF 6 OF 10 4 BRIQUES_V 22 4 BRIQUES_I ENDOF 7 OF 6 4 BRIQUES_V 18 4 BRIQUES_I 26 4 BRIQUES_I ENDOF 8 OF 2 4 BRIQUES_V 14 4 BRIQUES_I 22 4 BRIQUES_I 30 4 BRIQUES_I ENDOF 9 OF 10 4 BRIQUES_I 18 4 BRIQUES_X ENDOF 10 OF 14 4 BRIQUES_X ENDOF 11 OF 10 4 BRIQUES_X 22 4 BRIQUES_I ENDOF 12 OF 6 4 BRIQUES_X 18 4 BRIQUES_I 26 4 BRIQUES_I ENDOF 13 OF 2 4 BRIQUES_X 14 4 BRIQUES_I 24 4 BRIQUES_I 30 4 BRIQUES_I ENDOF 14 OF 4 4 BRIQUES_X 16 4 BRIQUES_I 24 4 BRIQUES_V ENDOF 15 OF 8 4 BRIQUES_X 20 4 BRIQUES_V ENDOF 16 OF 4 4 BRIQUES_X 16 4 BRIQUES_V 28 4 BRIQUES_I ENDOF 6 1 BRIQUES_I 24 1 BRIQUES_V 2 15 BRIQUES_I 10 15 BRIQUES_I 24 15 BRIQUES_X ENDCASE R> ?DUP IF 12 ELSE 8 20 THEN 4 DO I 40 * FOND_JEUX + 38 2 DO DUP I + @ 0= IF OVER I 2/ 3 AND J 3 AND CASE 0 OF CASE 0 OF 5 ENDOF 1 OF 9 ENDOF 2 OF 8 ENDOF 15 ENDCASE ENDOF 1 OF CASE 0 OF 13 ENDOF 1 OF 1 ENDOF 2 OF 16 ENDOF 4 ENDCASE ENDOF 2 OF CASE 0 OF 7 ENDOF 1 OF 11 ENDOF 2 OF 6 ENDOF 10 ENDCASE ENDOF CASE 0 OF 15 ENDOF 1 OF 3 ENDOF 2 OF 14 ENDOF 2 ENDCASE ENDCASE < NOT IF [ 16 8 LSH 32+ LITERAL ] OVER I + ! 1 NB_BRIQUES +! THEN THEN 2 +LOOP DROP LOOP 65535 AND 10000 /MOD ?DUP IF 48+ S_NIVEAU 10+ C! 1000 /MOD 48+ S_NIVEAU 11+ C! 100 /MOD 48+ S_NIVEAU 12+ C! 10 /MOD 48+ S_NIVEAU 13+ C! ELSE 32 S_NIVEAU 10+ C! 1000 /MOD ?DUP IF 48+ S_NIVEAU 11+ C! 100 /MOD 48+ S_NIVEAU 12+ C! 10 /MOD 48+ S_NIVEAU 13+ C! ELSE 32 S_NIVEAU 11+ C! 100 /MOD ?DUP IF 48+ S_NIVEAU 12+ C! 10 /MOD 48+ S_NIVEAU 13+ C! ELSE 32 S_NIVEAU 12+ C! 10 /MOD ?DUP IF 48+ ELSE 32 THEN S_NIVEAU 13+ C! THEN THEN THEN 48+ S_NIVEAU 14+ C! ; TACHE: T_SON_BRQ SON_BRQ DUP >R 2@ DUP @ DUP IF >R 2+ DUP @ 246 CW! R> T_SON_BRQ T_ACTIVE 2+ R> 2! ELSE DUP 246 CW! R> 2! DROP THEN ; : LANCE_SON_BRQ ( adr_son --> - ) SON_BRQ 2! 0 T_SON_BRQ T_ACTIVE ; : X_REBOND ( x --> x' ) DX_BALLE DUP >R @ DUP >R 0< IF 16 OVER 15 AND - 2* + ELSE DUP 15 AND 2* - THEN R> NEGATE R> ! ; : Y_REBOND ( y --> y' ) DY_BALLE DUP >R @ DUP >R 0< IF 16 OVER 15 AND - 2* + ELSE DUP 15 AND 2* - THEN R> NEGATE R> ! ; : CHANGE_BRIQUE ( adr --> - ) SON_BRIQUE LANCE_SON_BRQ DUP C@ ?DUP IF 16 AND 0= + DUP C@ 255 AND 32- DUP 0< IF DROP 0 1 NB_BRIQUES -! THEN OVER C! DUP 1+ C@ 255 AND 32- DUP 0< IF DROP 0 THEN OVER 1+ C! DUP FOND_JEUX - BRIQUE_1 DUP @ 0< NOT IF DROP BRIQUE_2 THEN ! SCORE DUP >R 2@ 1+ DUP 50 MOD 0= IF NB_BALLES DUP >R @ 1+ 5 MIN R> ! THEN R> 2! THEN DROP ; : SP_AF_TEXTE ( x,y,adr_s,fen --> - ) >R >R >R >R 255 CARACTERES_GRAPHIQUES R> R> R> COUNT BEGIN 0 SWAP BEGIN 1- >R OVER OVER + C@ 255 AND 31 > IF 1+ R> DUP 0= ELSE R> -1 THEN UNTIL R@ SWAP >R FEN_TRACE_CHAINE 1+ >R 14+ R> R> DUP 0= UNTIL DROP DROP DROP DROP DROP DROP R> DROP ; : SP_EF_RAQUETTE ( fen --> - ) >R FOND_CLAIR MEMX_RAQUETTE @ DUP >R 32- 0 MAX [ 26 4 LSH 8+ LITERAL ] R> 31+ 639 MIN OVER 7+ R> FEN_TAPISSE_REC ; : SP_AF_RAQUETTE ( fen --> - ) X_RAQUETTE @ DUP MEMX_RAQUETTE @ - IF OVER SP_EF_RAQUETTE DUP MEMX_RAQUETTE ! THEN >R 16 8 170 4 PICK FEN_DEVANT_? IF DUP 2/ + THEN R> 32- [ 26 4 LSH 8+ LITERAL ] [ SYMBOLES_SOURIS 16 5 LSH + DUP 64+ LITERAL LITERAL ] DO I 7 PICK FEN_TRACE_MOTIF >R 16+ R> 16 +LOOP DROP DROP DROP DROP DROP DROP ; : SP_AF_BALLE ( fen --> - ) >R FOND_CLAIR MEMX_BALLE @ MEMY_BALLE @ 32+ OVER 15+ OVER 15+ R@ FEN_TAPISSE_REC 16 DUP 170 R@ FEN_DEVANT_? IF DUP 2/ + THEN X_BALLE @ DUP MEMX_BALLE ! Y_BALLE @ DUP MEMY_BALLE ! 32+ [ SYMBOLES_SOURIS 26 5 LSH + LITERAL ] R@ FEN_TRACE_MOTIF >R >R DUP XOR R> R> [ SYMBOLES_SOURIS 18 5 LSH + LITERAL ] CNT_BALLE @ 7 AND 5 LSH + R> FEN_TRACE_MOTIF DROP DROP DROP DROP DROP ; : SP_AF_BRIQUES ( x,y,fen_devant,fen --> - ) >R >R 16 DUP 162 R> IF DUP 2/ + THEN 5 ROLL 5 ROLL FEN_LANGUE_? IF >R 12+ R> THEN SYMBOLES_SOURIS R@ FEN_TRACE_MOTIF_RELIEF >R 32+ R> [ SYMBOLES_SOURIS 6 5 LSH + LITERAL ] R@ FEN_TRACE_MOTIF_RELIEF >R >R >R 2/ R> R> 16+ R> 8+ FEN_LANGUE_? IF [ SYMBOLES_SOURIS 5 5 LSH + LITERAL ] R@ FEN_TRACE_MOTIF_RELIEF >R 16+ R> [ SYMBOLES_SOURIS 5 5 LSH + 16+ LITERAL ] R@ FEN_TRACE_MOTIF_RELIEF >R >R >R 2* R> R> 8+ R> 8- ELSE [ SYMBOLES_SOURIS 7 5 LSH + LITERAL ] R@ FEN_TRACE_MOTIF_RELIEF >R 16+ R> [ SYMBOLES_SOURIS 7 5 LSH + 16+ LITERAL ] R@ FEN_TRACE_MOTIF_RELIEF >R >R >R 2* R> R> 16+ R> 8- THEN [ SYMBOLES_SOURIS 8 5 LSH + LITERAL ] R@ FEN_TRACE_MOTIF_RELIEF >R 16+ R> [ SYMBOLES_SOURIS 9 5 LSH + LITERAL ] R@ FEN_TRACE_MOTIF_RELIEF >R 16+ R> [ SYMBOLES_SOURIS 10 5 LSH + LITERAL ] R@ FEN_TRACE_MOTIF_RELIEF >R 16+ R> [ SYMBOLES_SOURIS 11 5 LSH + LITERAL ] R@ FEN_TRACE_MOTIF_RELIEF >R 16+ R> FEN_LANGUE_? IF [ SYMBOLES_SOURIS 6 5 LSH + LITERAL ] R@ FEN_TRACE_MOTIF_RELIEF >R 16+ R> [ SYMBOLES_SOURIS 4 5 LSH + LITERAL ] ELSE [ SYMBOLES_SOURIS 12 5 LSH + LITERAL ] R@ FEN_TRACE_MOTIF_RELIEF >R 16+ R> [ SYMBOLES_SOURIS 13 5 LSH + LITERAL ] R@ FEN_TRACE_MOTIF_RELIEF >R 16+ R> [ SYMBOLES_SOURIS 14 5 LSH + LITERAL ] THEN R@ FEN_TRACE_MOTIF_RELIEF >R 16+ R> [ SYMBOLES_SOURIS 15 5 LSH + LITERAL ] R@ FEN_TRACE_MOTIF_RELIEF >R 32+ R> SYMBOLES_SOURIS R> FEN_TRACE_MOTIF_RELIEF DROP DROP DROP DROP DROP ; : AFFICHE_BRIQUE ( X,Y,clair,fen --> - ) >R OVER 40 * 4 PICK -2 AND + FOND_JEUX + C@ ?DUP IF DUP [ 5 4* 4* LITERAL ] < IF [ 3 4* 4* LITERAL ] < IF S_1 OVER IF FOND_BRIQUE_I ELSE FOND_BRIQUE_I_F THEN ELSE S_2 OVER IF FOND_BRIQUE_II ELSE FOND_BRIQUE_II_F THEN THEN ELSE [ 7 4* 4* LITERAL ] < IF S_3 OVER IF FOND_BRIQUE_III ELSE FOND_BRIQUE_III_F THEN ELSE S_4 OVER IF FOND_BRIQUE_IV ELSE FOND_BRIQUE_IV_F THEN THEN THEN ELSE 0 OVER IF FOND_CLAIR ELSE FOND_SOMBRE THEN THEN 5 PICK 4 LSH 5 PICK 2+ 4 LSH OVER 31+ OVER 15+ R@ FEN_TAPISSE_REC DUP IF >R IF 255 ELSE 169 THEN CARACTERES_GRAPHIQUES 4 ROLL 4 LSH R@ COUNT >R DROP 32 R> 7 * - 2/ + 4 ROLL 2+ 4 LSH 4+ R> COUNT R> FEN_TRACE_CHAINE_RELIEF ELSE R> THEN DROP DROP DROP DROP DROP ; : SP_AF_NIVEAU_SCORE ( fen --> - ) >R FOND_SOMBRE [ 10 7 * 32+ LITERAL ] 4 OVER [ 5 7 * 1- LITERAL ] + OVER 23+ R@ FEN_TAPISSE_REC 32 4 S_NIVEAU R@ SP_AF_TEXTE 32 20 S_SCORE R> SP_AF_TEXTE ; FEN: SP_AFFICHE_BRQ DUP >R FEN_TAILLE_? DROP 64 < IF R@ FEN_TAILLE_? >R 24- 2/ R> 24- 2/ FOND_ICONE 3 PICK 3 PICK R@ FEN_ECRIT_REC >R 4+ R> 4+ 16 DUP 162 R@ FEN_DEVANT_? IF DUP 2/ + THEN 5 ROLL 5 ROLL [ SYMBOLES_SOURIS 26 5 LSH + LITERAL ] R@ FEN_TRACE_MOTIF >R >R DUP XOR R> R> [ SYMBOLES_SOURIS 18 5 LSH + LITERAL ] CNT_BALLE @ 7 AND 5 LSH + R@ FEN_TRACE_MOTIF DROP DROP DROP DROP DROP ELSE MSQ_BRQ 2@ ?DUP IF 0 27 0 DO 2 OVER LSH 3 PICK AND IF LEAVE ELSE 1+ THEN LOOP DUP 2 < IF DUP IF [ 640 15 4 LSH - 2/ LITERAL ] 8 R@ FEN_DEVANT_? R@ SP_AF_BRIQUES ELSE FOND_SOMBRE 0 0 639 31 R@ FEN_TAPISSE_REC THEN ELSE 2- DUP 25 < IF R> 40 0 DO I 3 PICK DUP 6 > OVER 17 < AND I 10 > I 28 < AND AND ETAT @ 1 = AND 0= 4 PICK AFFICHE_BRIQUE 2 +LOOP >R ETAT @ 1 = IF DUP 13 = IF 257 160 S_SCORES R@ SP_AF_TEXTE R> 255 CARACTERES_GRAPHIQUES 257 174 S_SCORES+ 5 0 DO 1+ 18 7 PICK FEN_TRACE_CHAINE >R 14+ R> LOOP DROP DROP DROP DROP DROP >R ELSE DUP 17 = IF 222 252 S_NOTICE R@ SP_AF_TEXTE THEN THEN THEN THEN THEN DROP DROP THEN ETAT @ 1 - IF 16 DUP 162 R@ FEN_DEVANT_? IF DUP 2/ + THEN 488 8 R> 5 0 DO NB_BALLES @ I > IF >R [ SYMBOLES_SOURIS 26 5 LSH + LITERAL ] R@ FEN_TRACE_MOTIF 5 PICK 5 PICK 0 5 PICK 5 PICK [ SYMBOLES_SOURIS 18 5 LSH + LITERAL ] CNT_BALLE @ 5+ I 2* + 7 AND 5 LSH + R@ FEN_TRACE_MOTIF DROP DROP DROP DROP DROP R> ELSE FOND_SOMBRE 4 PICK 4 PICK OVER 15+ OVER 15+ 6 PICK FEN_TAPISSE_REC THEN >R >R 32+ R> R> LOOP >R DROP DROP DROP DROP DROP R@ SP_AF_NIVEAU_SCORE THEN R@ SP_AF_RAQUETTE R@ SP_AF_BALLE BRIQUE_1 @ DUP 0< NOT IF BRIQUE_2 @ DUP 0< NOT IF 40 /MOD -1 R@ AFFICHE_BRIQUE ELSE DROP THEN 40 /MOD -1 R@ AFFICHE_BRIQUE ELSE DROP THEN THEN R> DROP ; FEN: CHRONO_BRQ 1 CNT_BALLE +! DUP >R FEN_TAILLE_? DROP 64 < IF 59 ELSE MSQ_BRQ DUP >R 2@ 2* DUP R> 2! IF 1 ELSE SCORE 2@ 65535 AND 10000 /MOD ?DUP IF 48+ S_SCORE 10+ C! 1000 /MOD 48+ S_SCORE 11+ C! 100 /MOD 48+ S_SCORE 12+ C! 10 /MOD 48+ S_SCORE 13+ C! ELSE 32 S_SCORE 10+ C! 1000 /MOD ?DUP IF 48+ S_SCORE 11+ C! 100 /MOD 48+ S_SCORE 12+ C! 10 /MOD 48+ S_SCORE 13+ C! ELSE 32 S_SCORE 11+ C! 100 /MOD ?DUP IF 48+ S_SCORE 12+ C! 10 /MOD 48+ S_SCORE 13+ C! ELSE 32 S_SCORE 12+ C! 10 /MOD ?DUP IF 48+ ELSE 32 THEN S_SCORE 13+ C! THEN THEN THEN 48+ S_SCORE 14+ C! -1 DUP BRIQUE_1 ! BRIQUE_2 ! PAUSE @ 0= IF DX_BALLE @ DY_BALLE @ OR IF X_BALLE @ DX_BALLE @ DUP >R + Y_BALLE @ DY_BALLE @ DUP >R + R> R> ( x',y',dy,dx ) 0< IF 0< IF ( dx < 0;dy < 0 ) OVER 0< IF >R X_REBOND R> SON_MUR LANCE_SON_BRQ THEN DUP 0< IF Y_REBOND SON_MUR LANCE_SON_BRQ THEN OVER -4 LSH OVER -4 LSH 40 * + FOND_JEUX + 1+ DUP -2 AND C@ IF >R Y_REBOND R> DUP CHANGE_BRIQUE 39+ DUP -2 AND C@ IF >R >R X_REBOND R> R> DUP CHANGE_BRIQUE THEN ELSE 39+ DUP -2 AND C@ IF >R >R X_REBOND R> R> DUP CHANGE_BRIQUE ELSE 40- DUP -2 AND C@ IF >R DY_BALLE @ ABS DX_BALLE @ ABS - ?DUP IF 0< IF >R X_REBOND R> ELSE Y_REBOND THEN ELSE >R X_REBOND R> Y_REBOND THEN R> DUP CHANGE_BRIQUE THEN THEN THEN DROP ELSE ( dx < 0;dy >= 0 ) DUP 7+ [ 24 16 * 1- LITERAL ] > IF X_RAQUETTE @ >R OVER 15+ R@ 32- < 3 PICK R@ 31+ > OR IF 1 NB_BALLES -! 0 DUP DX_BALLE ! DY_BALLE ! 1000 60 / CNT_BALLE_PERDUE ! SON_PERTE_BALLE LANCE_SON_BRQ ( Perte de la balle ) ELSE DROP 8+ R@ 30- - 4/ 0 MAX 14 MIN 4* ANGLES + DUP >R @ DUP DX_BALLE ! X_BALLE @ + DUP 0< OVER 15+ [ 40 16 * 1- LITERAL ] > OR IF X_REBOND THEN R> 2+ @ DUP DY_BALLE ! Y_BALLE @ + SON_RAQUETTE LANCE_SON_BRQ THEN R> DROP ELSE OVER 0< IF >R X_REBOND R> SON_MUR LANCE_SON_BRQ THEN OVER -4 LSH OVER -4 LSH 40 * + FOND_JEUX + 41+ DUP -2 AND C@ IF >R Y_REBOND R> DUP CHANGE_BRIQUE 41- DUP -2 AND C@ IF >R >R X_REBOND R> R> DUP CHANGE_BRIQUE THEN ELSE 41- DUP -2 AND C@ IF >R >R X_REBOND R> R> DUP CHANGE_BRIQUE ELSE 40+ DUP -2 AND C@ IF >R DY_BALLE @ ABS DX_BALLE @ ABS - ?DUP IF 0< IF >R X_REBOND R> ELSE Y_REBOND THEN ELSE >R X_REBOND R> Y_REBOND THEN R> DUP CHANGE_BRIQUE THEN THEN THEN DROP THEN THEN ELSE 0< IF ( dx >= 0;dy < 0 ) OVER 15+ [ 40 16 * 1- LITERAL ] > IF >R X_REBOND R> SON_MUR LANCE_SON_BRQ THEN DUP 0< IF Y_REBOND SON_MUR LANCE_SON_BRQ THEN OVER -4 LSH OVER -4 LSH 40 * + FOND_JEUX + DUP -2 AND C@ IF >R Y_REBOND R> DUP CHANGE_BRIQUE 41+ DUP -2 AND C@ IF >R >R X_REBOND R> R> DUP CHANGE_BRIQUE THEN ELSE 41+ DUP -2 AND C@ IF >R >R X_REBOND R> R> DUP CHANGE_BRIQUE ELSE 40- DUP -2 AND C@ IF >R DY_BALLE @ ABS DX_BALLE @ ABS - ?DUP IF 0< IF >R X_REBOND R> ELSE Y_REBOND THEN ELSE >R X_REBOND R> Y_REBOND THEN R> DUP CHANGE_BRIQUE THEN THEN THEN DROP ELSE ( dx >= 0;dy >= 0 ) DUP 7+ [ 24 16 * 1- LITERAL ] > IF X_RAQUETTE @ >R OVER 15+ R@ 32- < 3 PICK R@ 31+ > OR IF 1 NB_BALLES -! 0 DUP DX_BALLE ! DY_BALLE ! 1000 60 / CNT_BALLE_PERDUE ! SON_PERTE_BALLE LANCE_SON_BRQ ( Perte de la balle ) ELSE DROP 8+ R@ 30- - 4/ 0 MAX 14 MIN 4* ANGLES + DUP >R @ DUP DX_BALLE ! X_BALLE @ + DUP 0< OVER 15+ [ 40 16 * 1- LITERAL ] > OR IF X_REBOND THEN R> 2+ @ DUP DY_BALLE ! Y_BALLE @ + SON_RAQUETTE LANCE_SON_BRQ THEN R> DROP ELSE OVER 15+ [ 40 16 * 1- LITERAL ] > IF >R X_REBOND R> SON_MUR LANCE_SON_BRQ THEN OVER -4 LSH OVER -4 LSH 40 * + FOND_JEUX + 40+ DUP -2 AND C@ IF >R Y_REBOND R> DUP CHANGE_BRIQUE 39- DUP -2 AND C@ IF >R >R X_REBOND R> R> DUP CHANGE_BRIQUE THEN ELSE 39- DUP -2 AND C@ IF >R >R X_REBOND R> R> DUP CHANGE_BRIQUE ELSE 40+ DUP -2 AND C@ IF >R DY_BALLE @ ABS DX_BALLE @ ABS - ?DUP IF 0< IF >R X_REBOND R> ELSE Y_REBOND THEN ELSE >R X_REBOND R> Y_REBOND THEN R> DUP CHANGE_BRIQUE THEN THEN THEN DROP THEN THEN THEN Y_BALLE ! X_BALLE ! ELSE CNT_BALLE_PERDUE @ ?DUP IF 1- DUP 0= IF 2 ETAT ! -1 PAUSE ! NB_BALLES @ 0< NOT IF 320 DUP X_RAQUETTE ! 8- X_BALLE ! [ 23 4 LSH 8+ LITERAL ] Y_BALLE ! NPA ABS 9 MOD 3+ 4* ANGLES + DUP @ DX_BALLE ! 2+ @ DY_BALLE ! THEN THEN CNT_BALLE_PERDUE ! THEN THEN THEN NB_BRIQUES @ IF 59 ELSE NIVEAU_BRQ DUP >R @ 1+ 17 MOD 1 MAX DUP R> ! INIT_BRIQUES -1 MSQ_BRQ 2! 1 THEN THEN THEN SP_AFFICHE_BRQ CHRONO_BRQ R@ FEN_CHRONO ETAT @ 2 = NB_BALLES @ 0< AND IF 0 ETAT ! SCORE 2@ 65535 AND S_SCORES+ COUNT DUP 1+ 6 / >R + 5 0 DO 1- OVER IF >R 10 /MOD R> ROT 48+ ELSE 46 THEN OVER C! LOOP >R DROP R> R> 0 5 0 DO ( adr_nbr,decalage,index_nbr ) 3 PICK 5 OVER 5 PICK I 1+ * - OVER STRCMP 0> IF 1+ ELSE LEAVE THEN LOOP ?DUP IF 3 PICK 3 PICK - 6+ DUP 12 S_NOM_RECORD R@ FEN_DIALOGUE_TEXTE ( adr_nbr,decalage,index_nbr,adr_nom,nbc ) DUP 0> IF OVER 5 PICK 5 PICK * - 3 PICK 6 PICK - OVER - ?DUP IF >R DUP 6 PICK OVER + R> CMOVE THEN DUP 6 PICK 1- 46 FILL DUP >R SWAP CMOVE DROP R> + 6- 5 CMOVE S_FIC_SCORES 1+ 0 FOPEN 0< NOT IF S_SCORES COUNT 3 PICK FWRITE DROP S_SCORES+ COUNT 3 PICK FWRITE DROP THEN FCLOSE IF S_PB_SCORES R@ FEN_DIALOGUE_MESSAGE THEN ELSE DROP DROP DROP DROP DROP THEN ELSE DROP DROP S_BAD_SCORE R@ FEN_DIALOGUE_MESSAGE THEN 0 INIT_BRIQUES -1 MSQ_BRQ 2! THEN R> DROP ; FEN: AFFICHE_BRQ -1 MSQ_BRQ 2! DROP ; FEN: SORT_BRQ >R [ 640 15 4 LSH - 2/ LITERAL ] 8 0 R> SP_AF_BRIQUES ; FEN: A_PROPOS_BRQ >R S_DESCRIPTIF R> FEN_DIALOGUE_MESSAGE ; FEN: ICONE_BRQ SP_AFFICHE_BRQ EXECUTE ; FEN: FERME_BRQ >R ICONE_BRQ R> FEN_ICONE ; FEN: MENU_BRQ BEGIN 5 S_MENU 0 4 PICK FEN_DIALOGUE_CHOIX CASE 1 OF 2 ETAT ! 1 INIT_BRIQUES OVER AFFICHE_BRQ EXECUTE -1 ENDOF 2 OF PAUSE DUP >R @ NOT R> ! -1 ENDOF 3 OF DUP FERME_BRQ EXECUTE -1 ENDOF 4 OF 0 ENDOF -1 ENDCASE UNTIL DROP ; FEN: CLV_BRQ SWAP PRECED DUP >R @ 27 = IF 31 AND 0 ELSE DUP 27 = IF 0 SWAP ELSE 0 THEN THEN R> ! DUP 6 = ( fermeture ) IF DROP DUP FERME_BRQ EXECUTE 0 THEN DUP 7 = ( nouveau jeu ) IF 2 ETAT ! 1 INIT_BRIQUES OVER AFFICHE_BRQ EXECUTE DUP XOR THEN ETAT @ 1 > IF PAUSE @ IF DUP 13 = IF DUP XOR DUP PAUSE ! 3 ETAT ! THEN THEN DUP 8 = CNT_BALLE_PERDUE @ 0= AND IF X_RAQUETTE DUP >R @ 13- 0 MAX DUP R> ! ETAT @ 2 > IF DROP ELSE 8- 0 MAX X_BALLE ! THEN DUP XOR THEN DUP 9 = CNT_BALLE_PERDUE @ 0= AND IF X_RAQUETTE DUP >R @ 13+ 639 MIN DUP R> ! ETAT @ 2 > IF DROP ELSE 8- 624 MIN X_BALLE ! THEN DUP XOR THEN DUP 42 = ( * ) IF NIVEAU_BRQ @ 1+ 17 MOD INIT_BRIQUES OVER AFFICHE_BRQ EXECUTE DUP XOR THEN DUP 43 = ( + ) IF DROP ETAT @ 3 = IF 1 ETAT -! ELSE NB_BALLES DUP >R @ 1+ 5 MIN R> ! THEN 0 THEN DUP 45 = ( - ) IF DROP NB_BALLES DUP >R @ ?DUP IF 1- R> ! ELSE R> DROP ETAT @ 2 = IF -1 ETAT ! ELSE 0 INIT_BRIQUES DUP AFFICHE_BRQ EXECUTE THEN THEN 0 THEN THEN DUP 14 = ( menu ) IF DROP DUP MENU_BRQ EXECUTE 0 THEN DUP 18 = ( pause ) IF PAUSE DUP >R @ NOT R> ! DUP XOR THEN IF BELL THEN DROP ; FEN: SOURIS_BRQ >R OVER OVER OR IF ETAT @ 1 > PAUSE @ AND IF 0 PAUSE ! 3 ETAT ! THEN ELSE ETAT @ 1 = CNT_BALLE_PERDUE @ OR IF 0 ELSE 4 PICK 0 MAX 639 MIN DUP X_RAQUETTE ! 8- ETAT @ 2 > IF DROP ELSE 0 MAX 624 MIN X_BALLE ! THEN 3 PICK 31 > 2 AND THEN 5 LSH SYMBOLES_SOURIS + R@ FEN_MOTIF_SOURIS THEN R> DROP DROP DROP DROP DROP ; : BRIQUES F_BRQ @ ?DUP IF FEN_SELECTIONNE ELSE FEN_CREE ?DUP IF DUP >R F_BRQ ! 1 ETAT ! 0 INIT_BRIQUES S_FIC_SCORES 1+ -1 FOPEN DUP 0< NOT IF S_SCORES+ 1+ 19 4 PICK FREAD DROP 19- S_SCORES+ 1+ SWAP 3 PICK FREAD THEN DROP FCLOSE DROP 0 S_SCORES+ COUNT 1+ 6 / + 1- DUP 6- DO 10 * I C@ 48- DUP 0< IF DROP ELSE + THEN LOOP RECORD ! ECRAN 4+ @ [ 40 16 * LITERAL ] - 2/ ECRAN 6+ @ [ 27 16 * LITERAL ] - 2/ R@ FEN_POSITION [ 40 16 * LITERAL ] [ 27 16 * LITERAL ] R@ FEN_TAILLE S_BRIQUES R@ FEN_NOM FERME_BRQ R@ FEN_FERME MENU_BRQ R@ FEN_MENU A_PROPOS_BRQ R@ FEN_A_PROPOS AFFICHE_BRQ R@ FEN_AFFICHE SORT_BRQ R@ FEN_SORT CLV_BRQ R@ FEN_CLAVIER SOURIS_BRQ R@ FEN_SOURIS R@ FERME_BRQ EXECUTE 1 SP_AFFICHE_BRQ CHRONO_BRQ R@ FEN_CHRONO 49152 T_SON_BRQ T_AJOUTE R> FEN_ACTIVE ELSE ." IMPOSSIBLE de creer l'application Casse-BRIQUES FORTH!" ABORT THEN THEN ; ' BRIQUES 4- DUP DEBUT_BRIQUES 4- - SWAP 2! DICO_INIT BRIQUES ( FIN )