Allocation de tableaux 2D
Bonsoir,
Je suis entrain de coder un jeu 2048, j'ai presque finis le code mais il y a une erreur dans mon code que je n'arriva pas à cerner au niveau du déplacement à vers le haut.
voici mon code pour un déplacement vers le haut :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| Plateau deplacementHaut(Plateau plateau)
{
Plateau plateau1;
plateau1 = Plateau (4);
for(int i =0; i<4; i++)
{
plateau1[i] = vector<int> (4);
}
for (int i = 0; i<3; i++)
{
for(int j = 0; j<4; j++)
{
plateau1[i][j] = plateau[i][j];
}
}
//Deplacemnt vers le haut
for(int i = 0; i<4; i++)
{
for (int j =0; j<2; j++){
if(plateau1[0][i]==0)
{
plateau1[0][i]=plateau1[1][i];
plateau1[1][i]=plateau1[2][i];
plateau1[2][i]=plateau1[3][i];
plateau1[3][i] =0;
}
if(plateau1[1][i]==0)
{
plateau1[1][i]=plateau1[2][i];
plateau1[2][i]=plateau1[3][i];
plateau1[3][i] =0;
}
if(plateau1[2][i]==0)
{
plateau1[2][i]=plateau1[3][i];
plateau1[3][i] =0;
}
}
}
//fusion des cases
for(int i =3; i>3; i--)
{
for(int j = 0; j<4; j++)
{
if (plateau1[i-1][j]==plateau1[i][j])
{
plateau1[i-1][j]=plateau1[i][j]*2;
plateau1[i-1][j] =0;
}
}
}
for(int i = 0; i<4; i++)
{
for (int j =0; j<2; j++){
if(plateau1[0][i]==0)
{
plateau1[0][i]=plateau1[1][i];
plateau1[1][i]=plateau1[2][i];
plateau1[2][i]=plateau1[3][i];
plateau1[3][i] =0;
}
if(plateau1[1][i]==0)
{
plateau1[1][i]=plateau1[2][i];
plateau1[2][i]=plateau1[3][i];
plateau1[3][i] =0;
}
if(plateau1[2][i]==0)
{
plateau1[2][i]=plateau1[3][i];
plateau1[3][i] =0;
}
}
}
return plateau1;
} |
le code est lancé par une fonction main dont voici le une partie du code
Code:
1 2 3 4 5 6 7 8 9 10 11
| Plateau plateau;
plateau = Plateau (4);
for (int i = 0; i<4; i++)
{
plateau[i] = vector <int> (4);
}
dessine(plateau);
plateau = deplacementHaut(plateau);
dessine(plateau); |
et j'ai une fonction dessine plateau qui dessine le plateau (captain obvious)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| string dessine(Plateau g)
{
string a = "lol";
Plateau dessin;
dessin = Plateau (4);
for (int i = 0; i<4; i++)
{
dessin[i] = vector<int> (4);
}
for(int i = 0; i<4; i++)
{
for(int j =0; j<4; j++)
{
dessin[i][j]=g[i][j];
}
}
cout<<endl;
cout << "*****************"<<endl;
for (int i=0; i<4; i++)
{
for (int j = 0; j<4; j++)
{
if (dessin[i][j]==0)
{
cout<<"* ";
}
else cout <<"* "<<dessin[i][j]<<" ";
}
cout<<"*";
cout<<endl;
cout <<"*****************"<<endl;
}
return a;
} |
Quand j'effectue un déplacement vers le haut depuis des cases qui sont en position [3][i], les valeurs s'effacent toutes.
Merci de bien vouloir m'aider:D