Persalteas le 28/01/2011 à 10:02
alors je vous présente mon casse brique (enfin mon deuxième casse brique), qui n'est malheureusement pas fini, mais qui est déjà classe.
ses avantages: pas trop lent pour un casse briques en basic
beaux graphismes (enfin même si je les poste pas tous ici)
léger en octets.
vu que c'est une matrice qui gère les briques, ça va être très simple de faire un éditeur de niveaux
ses inconvénients: eh bien le rebond sur brique ne fonctionne pas à tout les coups.
voilà la partie principale de mon code:
Code
:FonctNAff
:AxesNAff
:Normal
:Flottant
:1->Xmin
:95->Xmax
:1->Ymin
:63->Ymax
:EffDessin
ici il y a une longue portion de code réservée à la présentation du jeu (persalteas présente cassebrique etc...)que je ne poste pas car 1) c'est long et je suis flemmard, 2) je ne souhaite pas dévoiler mes super graphismes tout de suite.
:Lbl 0
:Menu("--CASSE BRIQUE--","JOUER",1,"QUITTER",Q
:Lbl 1
:Horizontale 1
:Horizontale 63
:Verticale 1
:Verticale 95
:For(K,5,95,3
:Pt-Aff(K,4
:End
:18->L
:0->S
:20->P
:2->E:2->F
:[[1,1,1,1,1,1,1,1,1][1,1,1,1,1,1,1,1,1][1,1,1,1,1,1,1,1,1][1,1,1,1,1,1,1,1,1]]->[C]
:For(X,3,83,10
:For(Y,3,24,6
:[C]((Y-3)/6+1,(X-3).1+1->K
:Ligne(X,63-Y,X+9,63-Y,K
:Ligne(X,63-Y,X,58-Y,K
:Ligne(X,58-Y,X+9,58-Y,K
:Ligne(X+9,63-Y,X+9,58-Y,K
:End
:End
:25->X:9->Y
:For(K,P,P+L,3
:Pt-Aff(K,4,2
:End
:Texte(32,25,"PRESS ENTER...
:Pause
:Texte(32,25," tapez 51 espaces ici(ça fait env 3 lignes) "
:Repeat K=45
:codeTouche->K
:If K=24 et P>5:Then
:Pt-NAff(P+L,4,2
:P-3->P
:Pt-Aff(P,4,2
:End
:If K=26 et P+L<91:Then
:Pt-NAff(P,4,2
:P+3->P
:Pt-Aff(P,4,2
:End
:Pt-NAff(X,Y,2
:X+E->X
:Y+F->Y
:Pt-Aff(X,Y,2
:If Y<6 et non(X>P et X<P+L):Goto P
:0->Q
:0->R
:0->T
:0->U
:If pxl-Test(61-Y-F,X+E-1:1->Q
:If pxl-Test(63-Y-F,X+E+1:1->R
:If pxl-Test(63-Y-F,X+E-3:1->T
:If pxl-Test(65-Y-F,X+E-1:1->U
:If U et Y<10:S+2->S
:If Q ou U:-F->F
:If T ou R:-E->E
:If (Q ou R ou T ou U) et Y>10 et Y<58 et X>5 et X<90:Then
:0->A
:If Q:1->A
:If R:2->A
:If T:3->A
:If U:4->A
:prgmZBRICK
:End
:End
:Lbl P
:EffDessin
:Horizontale 1
:Horizontale 63
:Verticale 1
:Verticale 95
:For(A,1,95
:Pt-Aff(A,40
:Pt-Aff(A,39
:Pt-Aff(95-A,29
:Pt-Aff(95-A,28
:End
:Texte(26,35,"PERDU !
:Texte(39,30,"SCORE : ",S
:Pause
:Lbl Q
:EffDessin
bon et ici il y a toute la tripotée de commandes habituelles pour effacer les variables et remmettre les paramètres de la calto à zéro, j'ai la flemme de les recopier, vous les connaissez.
oupps!! j'ai écrit en language Ti 83+, ce qui n'est pas très approprié sur ce forum... remplacez les Pt-Aff( par Pt-On( et les Pt-NAff( par Pt-Off(.
et maintenant le programme ZBRICK que le programme appelle:
Code
:arrondi((62-Y)/6,0->I
:arrondi(X.1,0->J
:If A=1:Then
:0->R
:For(A,4,1,-1
:If [C](A,J:A->R
:If R:0->A
:End
:R-1->R
:End
:
:If A=2:Then
:I->R
:J+1->J
:End
:
:If A=3:Then
:I->R
:J-1->J
:End
:
:If A=4:I->R
:
:If A=1 ou A=4:R-1->R
:If A=2 ou A=3:R-2->R
:0->[C](R+1,J
:S+10->S
:6R+3->R
:10J-7->J
:Ligne(J,63-R,J+9,63-R,0
:Ligne(J,63-R,J,58-R,0
:Ligne(J,58-R,J+9,58-R,0
:Ligne(J+9,63-R,J+9,58-R,0
je veux bien admettre que mon code est compliqué, si il y a un algorithme que vous ne comprenez pas demandez moi.
Je ne comprends pas vraiment moi même le programme ZBRICK, je l'ai programmé un peu au hasard, au fur et à mesure de modifs quand ça ne marchait pas.
résultat, je ne sais pas pourquoi ma balle ne rebondit pas à tout les coups.
J'accepte donc vos idées sur le rebondissement de la balle sur une brique.
Je veux bien savoir aussi si vous savez comment faire pour que la balle ne rebondisse pas selon la même direction si elle tombe en plein centre de la balle ou sur un bord.
merci!!
ld le 31/01/2011 à 10:34
Ne peut tu pas utiliser la commande "remplir (1,[C])" ?
a la place de :
:[[1,1,1,1,1,1,1,1,1][1,1,1,1,1,1,1,1,1][1,1,1,1,1,1,1,1,1][1,1,1,1,1,1,1,1,1]]->[C]

linkakro le 01/02/2011 à 23:28
A la place de la ligne du If avec goto P
Code
If Y=7
Then
P+L/2-X-1->V
If abs(V)<=L/2+1
-2->F
If abs(V)>=L/6 et V
E-2abs(V)/V->E
min(max(E,-2),2)->E
End
If Y=7 et abs(V)>L/2+1
Goto P
C'est imbitable mais succint. (Il n'y a que moi qui comprend ces sacs-de-noeuds ^^)
Si la balle rebondit sur le tiers du milieu, elle ne réagit pas. Sur les bords on peut amortir ou générer une inclinaison.
ps:-un des tests est un peu incomplet mais l'ensemble doit règler le problème. (du moins c'est ainsi dans mon prototype)
-la ligne du min/max sert à ce que la balle ait un coefficient directeur compris entre -1 et 1 (sinon le déplacement en abscisse devient de 4,6,8 pixels... pour la montée de 2 pixels)