Boucle for en C transposer en C++ moderne
Bonjour,
Je voudrais savoir comment on traduit ces 2 boucles for qui sont en C en C++ moderne.
Code C à traduire en C++ :
Code:
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:
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:
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:
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:
for(auto & y : gTetris.pArea){ for(auto & x : gTetris.pArea) {}}
j'avais éventuellement pensé passé par un
Code:
std::array<std::array<u8, TET_DRAW_LG>, TET_DRAW_HT> pArea;
puis faire les 2 boucles for C++ moderne au lieu de
Code:
std::array<u8, TET_AREA_LG * TET_AREA_HT> pArea
Donc si vous avez une idée.