Salut,
Je développe depuis un moment un moteur de jeu pokemon pour la ds. J'utilise la Palib ( Même si je pense tout refaire avec la Libnds). J'utilise des fichiers externes pour stocker les maps et j'utilise une fonction qui les mets dans un tableau:
fichier = fopen(mapfile, "r");
if (fichier != NULL)
{
for (i = 0; i < maxy;i++) //drawing the background
{
for (j = 0; j < maxx;j++)
{
fscanf(fichier, "%d,", &map[i][j]);
}
}
fclose(fichier);
}
Et ensuite je l'affiche avec une autre fonction:
void generationmap(void){
s32 valeur_tile;
for (i = 0; i < maxy;i++) //drawing the background
{
for (j = 0; j < maxx;j++) {
valeur_tile = map[j][i];
if (valeur_tile>0){
PA_SetLargeMapTile(1, 3, i*2, j*2, tiles[valeur_tile][0]);
PA_SetLargeMapTile(1, 3, (i*2)+1, j*2, tiles[valeur_tile][1]);
PA_SetLargeMapTile(1, 3, i*2, (j*2)+1, tiles[valeur_tile][2]);
PA_SetLargeMapTile(1, 3, (i*2)+1, (j*2)+1, tiles[valeur_tile][3]);
}
if (valeur_tile==0){
PA_SetLargeMapTile(1, 3, i*2, j*2, tiles[valeur_tile][0]);
PA_SetLargeMapTile(1, 3, (i*2)+1, j*2, tiles[valeur_tile][1]);
PA_SetLargeMapTile(1, 3, i*2, (j*2)+1, tiles[valeur_tile][2]);
PA_SetLargeMapTile(1, 3, (i*2)+1, (j*2)+1, tiles[valeur_tile][3]);
}
if (valeur_tile<0){
valeur_tile*=(-1);
PA_SetLargeMapTile(1, 3, i*2, j*2, tiles[valeur_tile][1]);
PA_SetLargeMapTile(1, 3, (i*2)+1, j*2, tiles[valeur_tile][0]);
PA_SetLargeMapTile(1, 3, i*2, (j*2)+1, tiles[valeur_tile][3]);
PA_SetLargeMapTile(1, 3, (i*2)+1, (j*2)+1, tiles[valeur_tile][2]);
PA_SetMapTileHflip(1, 3, i*2, j*2,1);
PA_SetMapTileHflip(1, 3, (i*2)+1, j*2, 1);
PA_SetMapTileHflip(1, 3, i*2, (j*2)+1, 1);
PA_SetMapTileHflip(1, 3, (i*2)+1, (j*2)+1,1);
}
}
}
}.
Le tableau "tiles" contient les numéros des tiles 8x8 pour faire des tiles 16x16.
Le problème est que la map que j'essaie d'afficher est grande "36x32" tiles de 16x16, et que seule une portion de la map s'affiche: et cette portion se répète. Il est aussi important de signaler que j'affiche un sprit et que le sprit aussi se répète
Je comprend pas pourquoi cela ne marche pas, j'utilise pourtant PA_SetLargeMapTile.
Ce problème d'affichage m’embête vraiment parce que j'ai fini le système de combat !
Merci de votre aide!