Edit : Mise à jour, version 2.
Suite à un post sur le groupe Thomsonistes, concernant un concours de programme basic en 10 lignes, je me suis amusé à essayer de faire un casse brique en mode texte en 10 lignes (max 255 caractères). C'est juste pour le fun et le défi.
Si cela vous intéresse : Je vous mets ici le code source et les fichiers k7 pour mo5 et TO770 (
Je m'étais fixé comme contrainte de n'utiliser aucun appel assembleur, et pas de caractères graphiques.
Ce n'est pas fabuleux et le code est un peu horrible (10 lignes...) mais ça fonctionne.
Donc un casse brique simple, très, très simple :
Capture Casse10 - Version 2
Il se joue à la manette (conseillée) ou au clavier (avec le bip clavier, car pas de code asm). Il y a des niveaux (Pas sûr que quelqu'un aie envie de passer le premier niveau), j'ai rajouté un chenillard qui soit peut vous aider ou vous compliquer la tâche, la gestion des vies (et donc un game over), et quelques sons rudimentaires.
Changement de cette version (Edit : Merci à Orion,Xavier et Hlide pour les retours) :
- Changement graphique mineurs, et ajout son + bordure quand on perd une vie
- Modification de l'emplacement des briques, des collisions, du rebond, du chenillard (qui décale maintenant légèrement la balle et inverse sa direction), augmentation de la taille de la raquette et affichage de celle-ci plus rapide.
-Corrections de quelques bugs (il doit en rester
Voici le code, attention ça pique
Code : Tout sélectionner
10 DEFINT A-Z:CLS:SCREEN 3,0,0:v=3:vi=3:xd=1:lvl=1:lvlsc=0:yd=-1:x=int(rnd*15)+3:y=10:c=1:d=1:psx=19:rq$="("+chr$(127)+"-"+"-"+chr$(127)+")":rv$=" ":sc=0:x2=10:y2=14:x2D=-1
20 c$="X":line(0,21)-(0,0)c$,7,4:line-(31,0) c$,7,4:line(31,0)-(31,21) c$,7,4:BOXF(32,0)-(39,21)"*",4,0:c$=chr$(127):FOR I=1 TO 8STEP2:LINE(3,I+1)-(28,i+1) c$,1+int(i/2),0
30 next:locate 33,3,0:color3,0:?"CASSE":locate36,4:?"10":locate psx,21,0:color 3,1:?rq$:c$="o":so$="L12SIDOLASISIPPPPPPPP":c2$="O2L2SI":c3$="O5L3FAT12":c4$="L24O3SOLAL11RE#PP":c5$="O1T18DOPP"
50 gosub 160: COLOR 7,0:a$=inkey$:gosub 200 :PSET(x2,y2)" ",3,0:PSET(x2+6,y2)" ":x2=x2D+x2:if(x2<24 and x2>2) then locate x2,y2:color3,0:?"******" else x2D=-x2D
60 color 2,0: locate 0,22:?"SCORE:";sc;"VIE:";vi;"LEVEL:";LVL:IF LVLSC>=104THEN LVLSC=0:LVL=LVL+1:LOCATE 10,10:?"NEW LEVEL ";LVL:yd=-1:x=10:y=10:PLAY c4$:CLS:GOTO 20 ELSE GOTO 50
160 v5=screen(X,Y):if (y+yd)<1 then yd=-yd:playc2$:goto 50:else V=screen(X+xd,Y+yd): if (v5<>88 and v5<>42) then xold=x:yold=y else xold=38:yold=22
170 y=y+yd:x=x+xd:if v=127 then:lvlsc=lvlsc+1:sc=sc+10:playc3$:pset(x-xd,y-yd)" ":yd=-yd:goto50ELSEiF y>=20ANDx>=psx and x<=(psx+5)THENPLAY c2$:yd=-1ELSEIFy>=20THENPSET(X-xd,y-yd)" ":vi=vi-1:x=int(rnd*14)+2:xdir=1:y=10:yd=-1:screen,,1:play c5$:screen,,0
180 if vi<1 thenLOCATE12,10:color 1,0:?"GAME OVER":play so$:goto10 else if x<2 or x>29 then xd=-xd:PLAY c2$
190 pset(xold,yold)" ",0,0:v=screen(x,y):if (v<>88 and v<>42) then PSET(X,Y)c$,2,0:return:else if (v=42) then yd=-yd:xd=(-xd):x=x+1:PLAY c2$:return else return
200 j=stick(0):IF(a$="A" or j=7)and psx>1thenpsx=psx-2:color 0,0:locate psx+6,21:?rv$:color3,1:locate psx,21:?rq$:returnELSEIF(a$="Z" or j=3) and psx<24 then psx=psx+2:color 0,0:locate psx-2,21:?rv$:color3,1:locate psx,21:?rq$:returnelsereturn