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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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