PDA

Voir la version complète : [PSP][Aide] Inclusion de gfx, tableaux et pointeurs [résolu]


Dr.Vince
21/02/2008, 17h05
Bon alors voilà, j'essayes d'externaliser mes fichiers map pour mes niveaux et également de les stocker dans un tableau

Le problème c'est j'arrive à aucun résultat.
J'ai essayé plusieurs méthodes :



// level01.map.c

const unsigned short level01_map[9][15]= {
{0x004d, 0x004e, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f, 0x004f,
0x004f, 0x0050, 0x004f, 0x004f, 0x0051, 0x0052, 0x0052},
....



Méthode 1


// leveldata.c

#include "gfx/levels/level01.map.c"

void* level_maps[2][2] = {
{level01_map,level01_map},
{level01_map,level01_map}
}



// level.c

#include "leveldata.h"

void load_level(){
level_tileset = oslLoadImageFilePNG(mon_tileset,OSL_IN_RAM, OSL_PF_8888);
level_map = oslCreateMap(mon_tileset,level_maps[0][0],32,32,15,9,OSL_MF_U16);
}



Méthode 2


// leveldata.c

#include "gfx/levels/level01.map.c"

void* level_maps[2][2] = {
{&level01_map,&level01_map},
{&level01_map,&level01_map}
}



// level.c

#include "leveldata.h"

void load_level(){
level_tileset = oslLoadImageFilePNG(mon_tileset,OSL_IN_RAM, OSL_PF_8888);
level_map = oslCreateMap(mon_tileset,level_maps[0][0],32,32,15,9,OSL_MF_U16);
}


Méthode 3


// leveldata.c

#include "gfx/levels/level01.map.c"

void* level_maps[2][2] = {
{&level01_map,&level01_map},
{&level01_map,&level01_map}
}



// level.c

#include "leveldata.h"

void load_level(){
level_tileset = oslLoadImageFilePNG(mon_tileset,OSL_IN_RAM, OSL_PF_8888);
level_map = oslCreateMap(mon_tileset,&level_maps[0][0],32,32,15,9,OSL_MF_U16);
}


Méthode 4


// leveldata.c

#include "gfx/levels/level01.map.c"

void* level_maps[2][2] = {
{level01_map,level01_map},
{level01_map,level01_map}
}



// level.c

#include "leveldata.h"

void load_level(){
level_tileset = oslLoadImageFilePNG(mon_tileset,OSL_IN_RAM, OSL_PF_8888);
level_map = oslCreateMap(mon_tileset,&level_maps[0][0],32,32,15,9,OSL_MF_U16);
}



Quelqu'un aurait-il une idée de comment je dois déclarer exactement tout ça et où mettre ces maudits & ??

Merci d'avance

Yodajr
21/02/2008, 17h46
Désolé, j'ai jamais rien pigé aux pointeurs... donc je sais pas si je dis une bétise en disant qu'on ne peut pas pointer comme ça un tableau à 2 dimensions (ou alors j'ai pas compris non plus ce que tu veux faire), car il faut déjà connaitre sa largeur.

const unsigned short map_1_col_map[40][1024]={.....};

const unsigned short (*collisions_map)[1024];

collisions_map = map_1_col_map;

Si j'ai pas compris le problème, please ignore ^^

Sinon smealum a déjà théorisé sur l'utilisation de maps avec fichiers externes ici (http://www.neoflash.com/forum/index.php/topic,2984.0.html) ;)

Dr.Vince
21/02/2008, 17h56
ouais ça me dit quelque chose ça sur les tableaux à deux dimensions, il faut connaitre une des deux dimensions

donc du coup je doit modifier quoi exactement ? (sachant que mes maps font tjrs la meme taille)

sinon le truc de Smea c'est pas ce que je veux faire

Yodajr
21/02/2008, 18h04
Ben je sais pas, essaye de faire comme je dit pour la déclaration du pointeur et met celui ci dans ton oslCreateMap :)
En tout cas je fait comme ça pour mes maps de collisions de mon mario (et peu être aussi dans stroke, me souviens plus) et donc j'utilise le pointeur comme si c'était mon tableau de collision, du genre :

if (collisions_map[24][38] == 23) truc();

Dr.Vince
21/02/2008, 18h23
ouais mais si tu regardes mon code en fait j'ai un tableau pour stocker les maps, c'est légèrement différent

Dr.Vince
21/02/2008, 19h42
bon au temps pour moi, je n'utilisais pas le bon fichier tileset donc je risquais pas d'afficher ma map........

et donc la méthode 1 fonctionne parfaitement

Yodajr
21/02/2008, 20h25
J'ai toujours pas compris ce que tu fais avec ça, mais content que ça marche ^^