Pim89 Le 07/04/2002 à 15:33 Oui, étant donné que les jeux utilisent plusieures map ou level, j'en ai conclu que le moteur devait fonctionner avec des pointeurs, qui pointaient vers les map et les definition de tiles ...
j'ai donc fait comme ça, mais ça ne marche pas, TIGCC me sort des erreurs.
j'ai une matrice definie en unsigned short donc mon pointeur est :
unsigned short *mapcour;
puis ensuite, pour pointer sur ma map, je fais :
mapcour = &matrice;
mais ça bloque là.
Aussi, si ce truc réussit à marcher, est ce que je pourrais utiliser des truc comme :
XBWSprite16x(x ,y ,sprt[ mapcour[1][1] ] ,16);
sachant que mapcour est un pointeur ???? comment faire si je ne peux pas faire comme ça (pour dire, "affiche tel sprite, contenu dans cette matrice" en utilisant uniquement un pointeur qui pointe vers cette map) ???
merci.
[edit]Edité par Pim89 le 07-04-2002 à 15:34:49[/edit]
Non-Webmaster et
non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les
Webmasters .«- Pas Moo ! ^^
Mets:
unsigned short (*mapcour)[];
mapcour=matrice;
Les tableaux sont l'équivalent C des matrices BASIC.
Un truc spécial du C, c'est qu'un tableau est quasiment la même chose qu'un pointeur.
Par exemple, si tu déclares un tableau et un pointeur :
short a[10];
short * b;
les déclarations suivantes sont alors équivalentes :
a[10] == (a + 10)
(b + 10) == b[10]
les types pointeurs sont l'aspect le plus rude du C... je te conseille de prendre un bon manuel de prog C...
Maintenant, pour les maps :
Une fonction comme XBWSprite16x ne permet d'afficher qu'une seule tile à la fois. Il te faut utiliser cette fonction plusieurs fois pour afficher ta map...
en simplifié :
unsigned short * sprites[16]; /* tableau des sprites 16x16, 16 mots pour un sprite */
unsigned short map[15][8]; /* map de 15(x16) de large et de 8(x16) de haut pour donner 240x128 pixels */
for (x = 0; x != 15; x++) { /* pour chaque colonne */
for (y = 0; y != 8; y++) { /* pour chaque ligne */
XBWSprite16x(x * 16, y * 16, sprites[map[x][y]], 16); /* affiche le sprite à cet endroit */
}
}
Tu déclares ta matrice avec
unsigned short *matrice[100][100] par exemple...
ensuite, tu peux utiliser le pointeur comme ceci *(matrice[x][y])
Pim89 Le 08/04/2002 à 17:40 heu, je comprend pas trop là ...
tu peux me donner ce qu'il faudrait faire ds mon exemple stp ??
cad j'utilise XBWSprite16x(x ,y ,sprt[ mapcour[1][1] ] ,16);
et mapcour est un pointeur pointant vers une matrice unsigned short..
Comment le déclarer précisemment pour que la ligne d'affichage de sprite marche ??
merci.
Non-Webmaster et
non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les
Webmasters .«- Pas Moo ! ^^
>Pim89: "Arithmetic on pointer to an incomplete type" ...
Si tu me donnais la taille de la matrice, je pourrais te donner le type complet pour mapcour.
Pim89 Le 09/04/2002 à 13:32 unsigned short mat[25][30]; (mais c'est provisoire, ça peut être plus ou moins gros. aussi, y'a que des chiffres/nombres ds cette matrice).
comment déclarer le pointeur "mapcour" et faire la "pointaison" pour ensuite utiliser :
XGSprite16x(k*16 +x, l*16 +y, sprt[mapcour[l][k]], 16);
Non-Webmaster et
non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les
Webmasters .«- Pas Moo ! ^^
unsigned short (*mapcour)[30];
mapcour=mat;
[edit]Edité par Kevin Kofler le 09-04-2002 à 23:17:52[/edit]