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 :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
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; }
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 Plateau plateau; plateau = Plateau (4); for (int i = 0; i<4; i++) { plateau[i] = vector <int> (4); } dessine(plateau); plateau = deplacementHaut(plateau); dessine(plateau);
Quand j'effectue un déplacement vers le haut depuis des cases qui sont en position [3][i], les valeurs s'effacent toutes.
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; }
Merci de bien vouloir m'aider
Partager