1

G une map de collision mulitdimentionnelle et je veux pointer dessus.
Voila la code :

extern SPRITE_16 Tiles[]; // Sprites de la map
extern unsigned char Matrix[]; //map de la pièce
extern unsigned char coll[][22]; //map de collision

void _main(void)
{
HANDLE hd;
short buffer,i;
unsigned char *MAP,*COLL;
SPRITE_16 *TILES;

MAP=Matrix;
COLL=coll;
TILES=Tiles;
ClrScr();
//-------------------------
short j,key;
for (j=0; j<14; j++){
for (i=0; i<22; i++){
printf("%u",COLL[j][i]);
key=ngetchx();
if (key=='a') exit(0);
ClrScr();
}
}
}

Si on fait COLL[j][i] ça peut pas marcher, il prend COLL pour un pointeur de pointeur sinon( **COLL) tsss ... y a une methode mais j'arrive pas à mettre le main desssus smile
Sinon on se casse pas la tête et on fais en monodimentionnel mais c moins pratique...
Merci...

2

je crois que g trouvé un truc !!! :

Si un tbl multidimentionnel c un tbl de tbl alors :

tbl [0] -----> [0][1][2]....[n]
tbl [1] -----> [0][1][2]....[n]
tbl [2] -----> [0][1][2]....[n]
tbl [n] -----> [0][1][2]....[n]

on pointe à chaque fois sur le tableau de tableau et on choisit l'élément... smile

extern SPRITE_16 perso[]; // != faces du personnage

extern SPRITE_16 Tiles[]; // Sprites de la map
extern unsigned char Matrix[]; //map de la pièce
extern unsigned char coll[14][22]; //map de collision

void _main(void)
{
short i;
unsigned char *MAP,*COLL;
SPRITE_16 *TILES;

MAP=Matrix;
TILES=Tiles;
ClrScr();

short j,key;
for (j=0; j<14; j++){
COLL=coll[j];
for (i=0; i<22; i++){
printf("%u",COLL[i]);
}
key=ngetchx();
if (key=='a') exit(0);
ClrScr();
}
}

Apparemment ça marche grin
mais si c pas ça qui faut faire ben ... merci de me dire smile

3

Ce qu'il faut, c'est:
unsigned char (*COLL)[22];

Et c'est écrit dans la FAQ de TIGCC.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

4

multidimentionnel kevin ... winkwink il sait pas si x_size c'est 22. Donc il va pas déclarer son pointeur comme ça. wink
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

5

Lis la source du post n°1! COLL est un pointeur vers coll qui est déclaré comme ça:
extern unsigned char coll[][22]; //map de collision
donc le type de COLL est:
unsigned char (*COLL)[22];
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

6

ouai comme ça ça marche mais imagine/
unsigned char coll[][22]
unsigned char coll2[][37]

unsigned char (*COLL)[???]

pour pointer sur un et après sur l'autre??? confus
il faut aller chercher des allocation de mémoire ?

7

Comment veux-tu que GCC calcule l'adresse de l'élément [x,y] s'il ne sait pas par combien multiplier x? Il faut bien qu'il sache calculer x*num_y+y. Donc il faut qu'il connaisse num_y.

Une manière, c'est d'avoir enregistré la deuxième dimension quelque part et de faire:

dim2=...; //il faut avoir un moyen de déterminer la 2ème dimension, par exemple l'avoir enregistrée quelque part
unsigned char (*COLL)[dim2]; //extension GNU: tableau de taille déterminée en temps d'exécution
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité