Bonjour,
Voilà j'ai une matrice de cette forme :
mat_cuve = new Array();
for (l = 280; l < 680; l = l+20){
mat_cuve[l]=new Array();
for (c = 140; c < 380; c = c+20){
mat_cuve[l][c] = 0;
}
}
En fait je fais un tetris, ainsi ma fonction doit retirer une ligne pleine soit une ligne remplie de "1".
Ce code :
for (l = 280; l < 680; l = l+20){
b=0;
if ((mat_cuve[l][140] == 1)&& (mat_cuve[l][160] == 1)&&(mat_cuve[l][180] == 1)&&(mat_cuve[l][200] == 1)&&(mat_cuve[l][220] == 1)&&(mat_cuve[l][240] == 1)&&(mat_cuve[l][260] == 1)&&(mat_cuve[l][280] == 1)&&(mat_cuve[l][300] == 1)&&(mat_cuve[l][320] == 1)&&(mat_cuve[l][340] == 1)&&(mat_cuve[l][360] == 1)){
trace ("ligne : " + l);
}
}
maj_cuve_case_grise();
M'indique correctement où se place la ligne pleine.
Maintenant je voudrais la supprimer et biensur décaler toutes les lignes de dessus.
Ainsi, je fais :
for (l = 280; l < 680; l = l+20){
b=0;
if ((mat_cuve[l][140] == 1)&& (mat_cuve[l][160] == 1)&&(mat_cuve[l][180] == 1)&&(mat_cuve[l][200] == 1)&&(mat_cuve[l][220] == 1)&&(mat_cuve[l][240] == 1)&&(mat_cuve[l][260] == 1)&&(mat_cuve[l][280] == 1)&&(mat_cuve[l][300] == 1)&&(mat_cuve[l][320] == 1)&&(mat_cuve[l][340] == 1)&&(mat_cuve[l][360] == 1)){
do{
for (j=140; j<380; j=j+20){
mat_cuve[l-b][j]=mat_cuve[l-b-20][j];
}
b=b+20;
}while (l-b==280);
}
}
maj_cuve_case_grise();
Mais cela ne fonctionne pas, donc si vous avez une idée (pour info maj_cuve_case_grise(); mets à jour seulement seulement l'aspect visuel donc n'y faites pas attention.
Merci