Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Ven 28 Jan 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.
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:
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.
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Ven 28 Jan 2011, 21:45
La balle est-elle de la même taille que les briques ?
Cela peut impliquer pas mal de choses.
(pas grande envie de recopier)
Je me demande pourquoi tu fais des pixel-test alors que tu as une matrice.
====
J'ai testé quelque chose où ça change le coefficient directeur mais la vitesse donne l'impression d'augmenter.
Mais surtout cela apporte de nombreuses complications que je ne souhaîte pas surmonter (bien que j'ai une idée de solution)
Je me limite à la variation de rebond sur la barre.
Montre-moi la partie qui gère le rebond sur la barre et je te montrerai comment je m'y prend.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Autorisation : Membre
Nb de messages : 373
Inscrit le : Jeu 23 Sep 2010, 16:05
Posté le : Lun 31 Jan 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]
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Lun 31 Jan 2011, 23:04
Citer : l.davin
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]
La méthode pas jolie sert à créer des niveaux remplis différemments, avec des motifs ...
tandis que remplir(1,[C] n'est utile que pour un remplissage complet.
===================
Citer : l.davin
:If Q:1->A
:If R:2->A
:If T:3->A
:If U:4->A
Signifie "if Q=1:1->A" n'es pas ?
Çà doit pouvoir donner:
(Q)+2(R)+3(T)+4(U
A(Rep=/=0)+Rep(Rep=0->A
Tu as inversé des tests et puis il y a plus simple.
Tu veux plutôt dire
Code
Q+2R+3T+4U
If Rép:Rép->A
Par contre il faut que les variables ne soient pas à 1 en même temps et elles doivent être absoluement booléennes.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Mar 01 Fév 2011, 21:42
alors...
1) ma présentation est beaucoup mieux que ça, cherche pas.
2) le passage qui fait rebondir la balle sur la barre: et bien justement: il y en a pas.il y a un passage qui t'envoie perdre si tu n'es pas sur la barre par contre, c'est le Goto P.
3) une balle de la même taille que les briques: ah bon? qu'est-ce qui te fait penser ça? ma balle fait 3x3 alors que mes briques font 9x6. ça explique les pixel test.
ensuite vous embêtez pas pour le coup des 4 variables, je n'ai pas l'intention de laisser cette portion de code comme ça, c'est juste temporaire le temps que je le finisse.
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 01 Fév 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)
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Jeu 14 Avr 2011, 20:16
Une erreur de dim vient d'une valeur, pas de la syntaxe. La valeur contenue dans J est fausse. L'erreur peut venir de n'impote où apparaît J.
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)