Table of Contents
LE BOUSCULE TOUT
Info
Author | Cyril Henard & Logi'Stick |
---|---|
Computer | Amstrad PCW 8256 / 8512 / 9512 |
Year | 1990 |
Gender | Arcade |
Controls | Keyboard |
Languages | French |
Status | Preserved |
Screenshots
Description
Le Bouscule Tout is a game that renews the traditional brick breaker, offering endless game board possibilities, with simplicity and facilitating their creation, thanks to an interactive board composition program.
Everyone knows the famous brick breaker that marked the heyday of consoles and arcades. With the appearance of video game consoles and personal microcomputers, most of these games were adapted, even improved and, above all, made accessible to all households.
How to play
The principle of the game is extremely simple: equipped with a racket whose horizontal movements you control with two keys, you must (almost) completely destroy a board more or less full of redefined bricks with a devastating ball.
The characters to destroy, as they are redefined in the program, have different points depending on their graphics.
There are a total of 8 types of characters whose score ranges from 2 to 100. Depending on the number and arrangement of targets on a board, it is worth more or less points.
You have five different angles to return the ball with the racket and three balls per game to try to get the best play. This is partly to try to achieve the best score. This is stored via a RECORD.BUT file for posterity. The move to the next board is acquired once the qualification score has been reached, that is, the value of the board minus 150 points plus the maximum score (its value) of the previous board.
It is possible to destroy an entire board, but it is long and very difficult… So, to reward you for your tenacity, a bonus of 500 points and an extra ball is awarded to you on the next board. Six boards are planned, but play resumes on the first board if you beat the sixth, with your current score. Perpetual motion!
Presentation
The keys to direct the racket, the qualifying score to get to the next board, the record, your score, the current board, your number of balls and passable options are permanently displayed on the screen.
In fact, to allow you to rest between two boards and as long as you haven't exhausted your ball credit, you can interrupt the game by moving to the next board and save it as it is for later resumption, using the <S>save and <C>Load options. .
Please note that when uploading, the backup file is deleted to prevent cheating. A healthy principle to respect for more pleasure, although modifications are entirely possible… Games saved on floppy disk have the extension “.PEC”.
Creating a board
Before fully enjoying the game, we must enter the board creation program and create the six boards necessary to play the game.
The character redefinition routine is included in both programs: it is the essential MATRIX and data for the redefined codes (206 to 213 for target patterns, 200 to 205 for frame and dotted lines in the game) they are included in the DATA lines, therefore modifiable.
The interest of this principle is to be able to create, without any restriction or limit, game boards according to your tastes and your playful aptitudes. The game thus becomes infinitely rich and varied. It's Byzantium!
Especially since all the parameters: number of boards, number of balls, rating score, sound effects, etc…, are modifiable. Listings are annotated for this purpose. The most interesting lines are, for the game program: 190-200 and 880 (number and name of the tables), 400 (rating score), 150-180 (graphic code data), and for the creation program: 130-160 (graphic code data).
The creation of the tables is done by means of the blinking “underlined” cursor: you place yourself in the place you want in the space reserved for the table to drop the chosen “graphic” character by pressing the corresponding number. The points are automatically calculated by the program and saved with the table that automatically has the extension .TBL, an unnecessary extension to specify when loading.
To simplify your task, you can load and modify an existing table, then save it under a different or same name. Caution, to modify a character, you must first enter “<E> delete, and then enter its number. Everything is interactive, the active keys of the options are permanently displayed.
For the lazy or those in a hurry, six “standard” boards have been burned to floppy with the BOUSTOUT and CREATION programs. Created dashboards are saved with the .TBL extension, like standard dashboards.
In the French version, the boards created by us must always be saved with the same name and only by changing the board number, for example “TABLEAU1”…“TABLEAU2”, etc. In the case of the Spanish game they will be saved with the name “TABLERO1”… “TABLERO2”, etc.
Conclusion
From a technical point of view, although perfectible, the programs are very interesting and even allow beginners to integrate certain practices into basic programming.
With this game, the playful universe of the PCW grows even more. We are offered an impression of freedom and I know that some will rush to make many modifications to further improve these programs or adapt them to their wishes.
Listing
- Listing 1 - CREATION.BAS
10 REM' Création de tableaux 20 CLEAR:WIDTH 255:ON ERROR GOTO 760:esc$=CHR$(27):bip$=CHR$(7) 30 cl$=esc$+"y"+esc$+"E"+esc$+"H"+esc$+"0" 40 iv$=esc$+"p":vi$=esc$+"q":cu$=esc$+"e":nc$=esc$+"f" 50 DEF FNl$(x,y)=esc$+"Y"+CHR$(32+y)+CHR$(32+x) 60 REM' chargement et redéfinition caractères 70 RESTORE 80:FOR n=&HC070 TO &HC098:READ d8:POKE n,d8:NEXT n 80 DATA 243,62,129,211,241,62,130,211,242,175,95,103,22,184,58,153,192,111,41,41 90 DATA 41,25,17,154,192,235,1,8,0,237,176,62,133,211,241,62,134,211,242,251,201 100 RESTORE 130:FOR i=1 TO 8:READ n:FOR ap=1 TO 8 110 READ pn(ap):NEXT ap:POKE &HC099,n:FOR tp=1 TO 8 120 POKE &HC099+tp,pn(tp):NEXT tp:c=&HC070:CALL c:NEXT i 130 DATA 206,204,51,204,51,204,51,204,51,207,85,85,85,85,85,85,85,85 140 DATA 208,0,42,84,170,85,42,20,0,209,24,60,90,90,90,90,60,24 150 DATA 210,0,24,126,243,243,126,24,0,211,7,15,31,62,124,138,134,131 160 DATA 212,96,48,56,126,255,255,126,0,213,60,60,24,126,219,60,102,195 170 DIM ca(90,28),ca$(45,20),lgn$(28):a=0:b=0:PRINT nc$cl$ 180 REM' affichage dessin et mode d'emploi 190 GOSUB 410 200 GOSUB 480:PRINT FNl$(b,a)" "; 210 IF ca$(b,a)="" THEN PRINT FNl$(b,a)" "FNl$(b,a)" "ELSE PRINT FNl$(b,a)ca$(b,a) 220 PRINT FNl$(62,10)"points du tableau :mpnt 230 z$=INKEY$:IF z$="" THEN 200 ELSE z=ASC(z$) 240 IF z=31 THEN a=a-1 250 IF z=30 THEN a=a+1 260 IF z=6 THEN b=b+1 270 IF z=1 THEN b=b-1 280 IF z=32 THEN PRINT cl$:ERASE ca,ca$:DIM ca(90,28),ca$(45,20):mpnt=0:GOTO 190 290 IF z$="1" THEN GOSUB 750:ca(b,a)=1:ca$(b,a)=CHR$(206):mpnt=mpnt+2 300 IF z$="2" THEN GOSUB 750:ca(b,a)=2:ca$(b,a)=CHR$(207):mpnt=mpnt+5 310 IF z$="3" THEN GOSUB 750:ca(b,a)=3:ca$(b,a)=CHR$(208):mpnt=mpnt+10 320 IF z$="4" THEN GOSUB 750:ca(b,a)=4:ca$(b,a)=CHR$(209):mpnt=mpnt+20 330 IF z$="5" THEN GOSUB 750:ca(b,a)=5:ca$(b,a)=CHR$(210):mpnt=mpnt+25 340 IF z$="6" THEN GOSUB 750:ca(b,a)=6:ca$(b,a)=CHR$(211):mpnt=mpnt+50 350 IF z$="7" THEN GOSUB 750:ca(b,a)=7:ca$(b,a)=CHR$(212):mpnt=mpnt+75 360 IF z$="8" THEN GOSUB 750:ca(b,a)=8:ca$(b,a)=CHR$(213):mpnt=mpnt+100 370 IF z$="E" THEN GOSUB 660:ca(b,a)=0:ca$(b,a)="" 380 IF z$="C" THEN GOSUB 610:GOTO 190 390 IF z$="S" THEN GOSUB 530:GOTO 190 400 IF z$="Q" THEN PRINT cu$;:END ELSE 200 410 PRINT FNl$(15,28)"Les flèches pour se déplacer, <ESPACE> pour effacer l'écran" 420 FOR i=1 TO 8 STEP 2:PRINT FNl$(55,i)CHR$(48+i)": "CHR$(205+i)" = points, "CHR$(49+i)": "CHR$(206+i)" = points":NEXT i 430 PRINT FNl$(62,1)" 2"FNl$(80,1)" 5"FNl$(62,3)"10"FNl$(80,3)" 20" 440 PRINT FNl$(62,5)"25"FNl$(80,5)" 50"FNl$(62,7)"75"FNl$(80,7)"100" 450 PRINT FNl$(65,13)"<C> = CHARGER"FNl$(65,15)"<E> = EFFACER" 460 PRINT FNl$(65,17)"<Q> = QUITTER"FNl$(65,19)"<S> = SAUVER":RETURN 470 REM' controle des limites d'ecran 480 IF a<0 THEN a=0 490 IF a=18 THEN a=17 500 IF b<0 THEN b=0 510 IF b=40 THEN b=39 520 RETURN:REM' sauvegarde des créations 530 PRINT cl$"Sauvegarde du tableau créé (8 lettres maximum): ";:INPUT"",nom$:pt=0 540 nom$=UPPER$(LEFT$(nom$,8)):OPEN"O",2,nom$+".TBL":FOR i=0 TO 18:FOR j=0 TO 39 550 IF ca(j,i)=1 THEN pt=pt+2 ELSE IF ca(j,i)=2 THEN pt=pt+5 560 IF ca(j,i)=3 THEN pt=pt+10 ELSE IF ca(j,i)=4 THEN pt=pt+20 570 IF ca(j,i)=5 THEN pt=pt+25 ELSE IF ca(j,i)=6 THEN pt=pt+50 580 IF ca(j,i)=7 THEN pt=pt+75 ELSE IF ca(j,i)=8 THEN pt=pt+100 590 PRINT #2,ca(j,i):NEXT j,i:PRINT #2,pt:CLOSE:PRINT cl$:RETURN 600 REM' chargement de tableaux 610 i=1:PRINT cl$"Nom du fichier à charger : ";:INPUT"",nom$:nom$=UPPER$(LEFT$(nom$,8)) 620 OPEN"I",1,nom$+".TBL":FOR i=0 TO 18:FOR j=0 TO 39:INPUT #1,mur:ca(j,i)=mur 630 IF mur=0 THEN PRINT FNl$(j,i)" "ELSE ca$(j,i)=CHR$(205+mur):PRINT FNl$(j,i)ca$(j,i) 640 NEXT j,i:INPUT #1,mpnt:CLOSE:RETURN 650 REM' calcul des points du tableau en cours de création 660 IF ca(b,a)=1 THEN mpnt=mpnt-2 670 IF ca(b,a)=2 THEN mpnt=mpnt-5 680 IF ca(b,a)=3 THEN mpnt=mpnt-10 690 IF ca(b,a)=4 THEN mpnt=mpnt-20 700 IF ca(b,a)=5 THEN mpnt=mpnt-25 710 IF ca(b,a)=6 THEN mpnt=mpnt-50 720 IF ca(b,a)=7 THEN mpnt=mpnt-75 730 IF ca(b,a)=8 THEN mpnt=mpnt-100 740 RETURN 750 IF ca(b,a)<>0 THEN PRINT bip$:GOTO 200 ELSE RETURN 760 PRINT FNl$(18,15)iv$" Erreur n°"ERR"en ligne"ERL vi$:h$=INPUT$(1):RESUME NEXT
- Listing 2 - BOUSTOUS.BAS
1 REM'***************************** 3 REM'* Cyril HENARD & LOGI'STICK * 5 REM'* Vous prsentent * 7 REM'* LE BOUSCULE TOUT * 9 REM'***************************** 10 CLEAR:WIDTH 255:ON ERROR GOTO 870:IF FIND$("RECORD.BUT")="" THEN 30 20 OPEN"I",1,"RECORD.BUT":INPUT #1,recor,rec$:CLOSE 30 esc$=CHR$(27):cl$=esc$+"y"+esc$+"E"+esc$+"H"+esc$+"0" 40 iv$=esc$+"p":vi$=esc$+"q":ef$=esc$+"K":cu$=esc$+"e":nc$=esc$+"f" 50 DEF FNl$(x,y)=esc$+"Y"+CHR$(32+y)+CHR$(32+x) 55 REM' redéfinition caractères 60 RESTORE 70:FOR n=&HC070 TO &HC098:READ d8:POKE n,d8:NEXT n 70 DATA 243,62,129,211,241,62,130,211,242,175,95,103,22,184,58,153,192,111,41,41 80 DATA 41,25,17,154,192,235,1,8,0,237,176,62,133,211,241,62,134,211,242,251,201 90 RESTORE 120:FOR i=1 TO 14:READ n:FOR ap=1 TO 8 100 READ pn(ap):NEXT ap:POKE &HC099,n:FOR tp=1 TO 8 110 POKE &HC099+tp,pn(tp):NEXT tp:c=&HC070:CALL c:NEXT i 120 DATA 200,0,127,127,96,111,111,108,109,201,0,254,254,6,246,246,54,182 130 DATA 202,109,108,111,111,96,127,127,0,203,182,54,246,246,6,254,254,0 140 DATA 204,0,0,60,126,126,60,0,0,205,255,255,255,255,0,0,0,0 150 DATA 206,204,51,204,51,204,51,204,51,207,85,85,85,85,85,85,85,85 160 DATA 209,24,60,90,90,90,90,60,24,208,0,42,84,170,85,42,20,0 170 DATA 210,0,24,126,243,243,126,24,0,211,7,15,31,62,124,138,134,131 180 DATA 212,96,48,56,126,255,255,126,0,213,60,60,24,126,219,60,102,195 190 DIM ch(77,47):RESTORE 200:FOR tb=1 TO 6:READ a$:tbl$(tb)=a$:NEXT tb:tb=1 200 DATA "TABLEAU1","TABLEAU2","TABLEAU3","TABLEAU4","TABLEAU5","TABLEAU6" 205 REM' cadres et mode d'emploi 210 OUT 248,8:PRINT nc$cl$FNl$(53,0)iv$CHR$(134)STRING$(35,138)CHR$(140) 220 PRINT FNl$(53,1)CHR$(133)" L E B O U S C U L E T O U T "CHR$(133) 230 PRINT FNl$(53,2)CHR$(131)STRING$(35,138)CHR$(137)vi$ 240 PRINT FNl$(58,4)"Jeu d'adresse et de précision" 250 PRINT FNl$(54,6)ef$"Se joue avec les touches"esc$"23 º+§ et º-§" 260 PRINT FNl$(54,8)ef$esc$"21pour les déplacements gauche-droite" 270 PRINT FNl$(58,10)"<S>auvegarde ? <C>hargement"FNl$(53,12)STRING$(37,126) 280 PRINT FNl$(60,17)iv$CHR$(134)STRING$(20,138)CHR$(140) 290 FOR i=18 TO 28:PRINT FNl$(60,i)CHR$(133)SPC(20)CHR$(133) 300 NEXT i:PRINT FNl$(60,29)CHR$(131)STRING$(20,138)CHR$(137)vi$:OUT 248,7 310 w$=CHR$(200)+CHR$(201):v$=CHR$(202)+CHR$(203):FOR i=0 TO 47 STEP 2 320 PRINT FNl$(i,0)w$FNl$(i,28)w$FNl$(i,1)v$FNl$(i,29)v$:NEXT i:FOR i=2 TO 26 STEP 2 330 PRINT FNl$(0,i)w$FNl$(46,i)w$FNl$(0,i+1)v$FNl$(46,i+1)v$:NEXT i 340 tb=1:fin=0:mscor=0:bx=INT(RND*34)+2:bal=3:niv=1:IF bx/2<>INT(bx/2) THEN 340 350 scor=0 355 REM' chargement tableaux 360 OPEN"I",2,tbl$(tb)+".TBL":FOR j=0 TO 18 370 FOR i=0 TO 39:INPUT #2,mur:ch(i+4,j+3)=mur 380 IF mur=0 THEN PRINT FNl$(4+i,j+3)" " ELSE PRINT FNl$(4+i,j+3)CHR$(205+mur) 390 NEXT i,j:INPUT #2,maxi:CLOSE:mscor=mscor+maxi 400 PRINT FNl$(58,13)ef$"Score de qualification :"mscor-(150*tb) 410 PRINT FNl$(58,15)ef$"pour accéder au tableau "niv+1 420 GOSUB 460:PRINT FNl$(bx+4,25)CHR$(204)FNl$(3,27)SPC(43) 430 PRINT FNl$(4,27)"Appuyez sur <ESPACE> pour lancer le jeu" 440 GOSUB 890:a=a+1:IF h$<>" " THEN 440 ELSE RANDOMIZE(a):PRINT FNl$(3,27)SPC(43) 450 GOSUB 780:GOTO 470 460 PRINT FNl$(bx,26)" "STRING$(6,205)" ":RETURN 465 REM' controle limites d'écran 470 az=INT(RND*9)+1:IF az>=0 AND az<3 THEN xa=-1 480 IF az>=3 AND az<6 THEN xa=0 490 IF az>=6 AND az<=9 THEN xa=1 500 ya=-1:GOSUB 460:x=bx+4:y=25:x1=x:y1=y:IF a<0 THEN a=0 510 x1=x+xa:y1=y+ya:IF x1<=4 THEN x1=4:xa=-xa ELSE IF x1>=43 THEN x1=43:xa=-xa 520 GOSUB 740:IF y1=26 AND x1>bx+1 AND x1<bx+4 THEN xa=-1:x1=x+2*xa:ya=-ya:y1=y1-2 530 IF y1=26 AND x1>bx+5 AND x1<bx+8 THEN xa=1:ya=-ya:y1=y1-2:x1=x+2*xa 540 IF y1=26 AND (x1=bx+4 OR x1=bx+5) THEN xa=0:ya=-ya:y1=y1-2 550 IF y1=27 THEN PRINT FNl$(x,y)" ":GOTO 720 560 GOSUB 460 565 REM' controle et calcul score 570 t=ch(x1,y1) 580 IF t<>0 THEN FOR i=0 TO 9:OUT 248,11:OUT 248,12:NEXT i:ya=-ya:PRINT FNl$(x,y)" ":x=x1:y=y1:y1=y1+ya 590 IF t=1 THEN ch(x1,y1-ya)=0:scor=scor+2:GOSUB 780:GOTO 570 600 IF t=2 THEN ch(x1,y1-ya)=0:scor=scor+5:GOSUB 780:GOTO 570 610 IF t=3 THEN ch(x1,y1-ya)=0:scor=scor+10:GOSUB 780:GOTO 570 620 IF t=4 THEN ch(x1,y1-ya)=0:scor=scor+20:GOSUB 780:GOTO 570 630 IF t=5 THEN ch(x1,y1-ya)=0:scor=scor+25:GOSUB 780:GOTO 570 640 IF t=6 THEN ch(x1,y1-ya)=0:scor=scor+50:GOSUB 780:GOTO 570 650 IF t=7 THEN ch(x1,y1-ya)=0:scor=scor+75:GOSUB 780:GOTO 570 660 IF t=8 THEN ch(x1,y1-ya)=0:scor=scor+100:GOSUB 780:GOTO 570 670 IF y1=2 THEN ya=1 675 REM' *** si tout est éliminé 680 IF scor=mscor+(fin*500) THEN fin=fin+1:scor=scor+500:bal=3:niv=niv+1:tb=tb+1:GOSUB 880:GOTO 360 690 PRINT FNl$(x,y)" "FNl$(x1,y1)CHR$(204):x=x1:y=y1 700 IF y=2 OR x=4 OR x=43 THEN FOR i=0 TO 99:OUT 248,11:OUT 248,12:NEXT i 705 REM' balle rebondissant contre les bords 710 GOTO 510 720 bal=bal-1:IF bal=0 THEN 770 730 GOTO 430 735 REM' controle test clavier 740 tch$=INKEY$:IF tch$=CHR$(22) AND bx>2 THEN bx=bx-2:RETURN 750 IF tch$=CHR$(28) AND bx<36 THEN bx=bx+2:RETURN 760 RETURN 765 REM' controle et enregistrement record 770 IF scor>=mscor-(150*tb) THEN bal=3:niv=niv+1:tb=tb+1:GOSUB 880:GOTO 360 ELSE 810 780 PRINT FNl$(63,21)iv$"De "rec$FNl$(63,19)"RECORD.: "USING"######";recor 790 PRINT FNl$(63,27)"BALLES.: "bal;FNl$(63,25)"TABLEAU: "USING"##";niv 800 PRINT FNl$(63,23)"SCORE..: "USING"######";scor:PRINT vi$:RETURN 810 IF scor>recor THEN recor=scor:GOSUB 850:OPEN"O",1,"RECORD.BUT":PRINT #1,recor,rec$:CLOSE 820 GOSUB 780:PRINT FNl$(3,27)nc$"Appuyez <R> pour re jouer, <Q> pour quitter" 830 GOSUB 1010:IF h$="R" THEN PRINT FNl$(4,26)SPC(41):GOTO 340 840 IF h$="Q" THEN PRINT cl$cu$;:END ELSE 830 850 PRINT FNl$(58,13)ef$STRING$(10,7)iv$" BRAVO ! Record battu... "vi$ 860 PRINT FNl$(58,15)ef$cu$;:INPUT"Votre nom : ",rec$:RETURN 865 REM' traitement d'erreurs basic du listing 870 PRINT FNl$(10,14)iv$" Erreur nº"ERR"en ligne"ERL vi$:h$=INPUT$(1):RESUME NEXT 875 REM' controle si dernier tableau utilisé 880 IF tb=7 THEN tb=1:scor=scor+700:GOTO 360 ELSE RETURN 890 GOSUB 1010:IF bal=3 AND h$="S" THEN 920 900 IF bal=3 AND h$="C" THEN 960 910 RETURN 915 REM' sauvegarde partie en cours 920 PRINT FNl$(54,6)ef$"Nom du fichier à sauvegarder"FNl$(54,8)ef$cu$; 930 INPUT"(sans extension) : ",n$:n$=LEFT$(n$,8)+".PEC":PRINT nc$ 940 mscor=mscor-maxi:OPEN"O",1,n$:PRINT #1,niv,tb,scor,mscor,fin 950 CLOSE:PRINT cl$cu$;:END 955 REM' chargement partie en cours 960 PRINT FNl$(54,6)ef$"Nom du fichier à charger..."FNl$(54,8)ef$cu$; 970 INPUT"(sans extension) : ",n$:n$=LEFT$(n$,8)+".PEC":PRINT nc$ 980 PRINT FNl$(54,6)ef$"Se joue avec les touches"esc$"23 º+§ et º-§" 990 PRINT FNl$(54,8)ef$esc$"21pour les deplacements gauche-droite" 1000 mscor=0:maxi=0:OPEN"I",1,n$:INPUT #1,niv,tb,scor,mscor,fin:CLOSE:KILL n$:GOTO 360 1010 h$=UPPER$(INPUT$(1)):IF h$="" THEN 1010 1020 RETURN
Controls for CREATION
↑ = Up ↓ = Down ← = Left → = Right Numbers 1 to 8 = Select graphic SPACE = Clear the screen C = Load E = Delete Q = Exit G = Save
Controls for BOUSTOUS
+ = Left - = Right SPACE = Start
Loading the program
1.- Insert the CP/M disc on side 2 2.- Write BASIC and wait for it to load 3.- Remove the CP/M disk and insert the disk containing the game Le Bouscule Tout 4.- Type run "CREATION" and press the "ENTER" key to create the boards 5.- Type run "BOUSTOUS" and press the "ENTER" key to play with the created boards
Extras
Download
- Le Bouscule Tout in French (game in dsk format, compressed with zip)
- Le Bouscule Tout in Spanish (game in dsk format, compressed with zip)