Bonjour,

Je voudrais savoir comment on traduit ces 2 boucles for qui sont en C en C++ moderne.

Code C à traduire en C++ :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
#define TET_AREA_LG 16	
#define TET_AREA_HT 25
 
#define TET_DRAW_LG 10	
#define TET_DRAW_HT 18
 
#define TET_GFX_OFFSX	26	// Offset aire de jeu.
#define TET_GFX_OFFSY	12
 
u8    pArea[TET_AREA_LG * TET_AREA_HT];
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 
for (i = 0; i < TET_AREA_HT; i++)
{
  gTetris.pArea[2 + (i * TET_AREA_LG)] = 1;
  gTetris.pArea[3 + TET_DRAW_LG + (i * TET_AREA_LG)] = 1;
}
et

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
 
u32 x, y;
u32 nVal;
 
// Parcours de l'aire de jeu.
for (y = 0; y < TET_DRAW_HT; y++)
{
  for (x = 0; x < TET_DRAW_LG; x++)
  {
    nVal = gTetris.pArea[((y + 4) * TET_AREA_LG) + (x + 3)];
    if (nVal)
    {
	DrawBlockGfx((x * 12) + TET_GFX_OFFSX, (y * 12) + TET_GFX_OFFSY, nVal - 1);
    }
  }
}
Il y a plusieurs choses qui me pose problème, c'est dans pArea le calcule de l'index car si j'utilise en C++ modern
Code : Sélectionner tout - Visualiser dans une fenêtre à part
for(auto & i: gTetris.pArea)
bin je ne peux pas faire le calcule de mon index me semble t-il de plus il y a le parcours de pArea avec la boucle imbriqué donc là c'est pareille je vois pas trop comment faire il me semble que je ne peux pas faire 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
for(auto & y : gTetris.pArea){ for(auto & x : gTetris.pArea) {}}
j'avais éventuellement pensé passé par un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
std::array<std::array<u8, TET_DRAW_LG>, TET_DRAW_HT> pArea;
puis faire les 2 boucles for C++ moderne au lieu de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
std::array<u8, TET_AREA_LG * TET_AREA_HT> pArea
Donc si vous avez une idée.