1

Désolé pour le titre je savez pas comment l'exprimer au mieux mais je vais vous donner un exemple de ce que je demande


Voilà je développé déjà un jeux sur SDL Windows pour pouvoir le tester plus facilement. après je le porterai sur GP2X quand je l'aurais reçu pu que quelques jours

Donc ma structure actuelle sont dans mon environnement de dévéloppement

Mes fichier .CPP et mes fichier .H, le truc c'est que mes images PNG sont indépendante du EXE final une fois compilé, donc les fichier images doivent être placé dans le même répertoire, normal jusque la vous me direz.

Moi ce que je voudrait savoir c'est si c'est possible d'intégré ces images dans mon environnement de programmation telle une ressource ou autre et que quand je compile dans le EXE, il m'integre les Images PNG et que je n'ai plus qu'un EXE, et pas les fichier images a trimballé partout ou je bouge mon EXE.

Genre ça

Actuellement ma structure et comme ça :

+-->RPGTest.exe
|->sprites.png
|->tiles.png

Ce que je voudrait c'est que j'ai un fichier EXE comprennant

+-->RPGTest.exe + sprites.png + tiles.png

et qu'une fois compilé je n'ai plus que un EXE avec les fichier PNG intégrés dedans.

Si quelqu'un peut m'aider.

Merci d'avance.

Yeeee Rock 'n Roll

2

Il y a un petit logiciel qui se nomme bin2c et qui permet de faire des fichier .h avec le png dedans, du style:
bin2c -i sprite.png -o sprite.h -l NomDuSprite -c

Je crois que ce petit logiciel est intégré à devkitPro.

3

oui, faut utiliser bin2c pour convertir ton png en header.

ensuite faire un include de ton fichier .h et d'utiliser SDL_RWops

ca te donnera un truc du genre :
SDL_Surface *player = NULL;

unsigned char spr_sprite[630] =
{
0x42,0x4d,0x76,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x76,0x00,0x00,0x00,0x28,0x00,
0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x01,0x00,0x04,0x00,0x00,0x00,
0x00,0x00,0x00,0x02,0x00,0x00,0x13,0x0b,0x00,0x00,0x13,0x0b,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xa8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x63,0xe7,
0xff,0x00,0x00,0xff,0x94,0x00,0x00,0xbd,0x73,0x00,0x31,0xa5,0xef,0x00,0xad,0xff,
0xff,0x00,0x00,0x00,0xff,0x00,0xff,0x00,0x00,0x00,0xa5,0xad,0xff,0x00,0xc6,0xff,
0xce,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x11,0x11,0x11,0x00,0x01,0x11,
0x11,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x12,0x22,0x23,0x33,0x10,0x14,0x44,
0x55,0x55,0x10,0x00,0x00,0x00,0x00,0x00,0x01,0x22,0x23,0x31,0x32,0x11,0x15,0x41,
0x44,0x55,0x51,0x00,0x00,0x00,0x00,0x00,0x00,0x13,0x31,0x12,0x22,0x22,0x55,0x55,
0x11,0x44,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x12,0x22,0x22,0x22,0x22,0x55,
0x55,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x22,0x22,0x22,0x22,0x22,0x25,
0x55,0x51,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x22,0x66,0x22,0x22,0x22,0x25,
0x55,0x51,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x26,0x66,0x62,0x22,0x22,0x25,
0x55,0x51,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x16,0x66,0x62,0x22,0x22,0x25,
0x55,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x33,0x66,0x22,0x22,0x22,0x25,
0x54,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x11,0x13,0x33,0x33,0x22,0x22,0x22,0x54,
0x44,0x44,0x11,0x10,0x00,0x00,0x00,0x01,0x33,0x33,0x33,0x33,0x32,0x21,0x25,0x44,
0x44,0x44,0x44,0x41,0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x33,0x32,0x17,0x15,0x44,
0x41,0x11,0x11,0x10,0x00,0x00,0x80,0x80,0x81,0x33,0x33,0x33,0x31,0x11,0x11,0x44,
0x44,0x44,0x41,0x80,0x80,0x80,0x08,0x08,0x13,0x39,0x93,0x33,0x33,0x11,0x14,0x44,
0x44,0x99,0x44,0x18,0x08,0x08,0x80,0x80,0x13,0x33,0x33,0x33,0x33,0x31,0x34,0x44,
0x44,0x44,0x44,0x10,0x80,0x80,0x08,0x08,0x01,0x33,0x13,0x33,0x33,0x33,0x33,0x44,
0x44,0x14,0x41,0x08,0x08,0x08,0x80,0x81,0x11,0x33,0x1a,0xa3,0x33,0x33,0x33,0x34,
0x44,0x14,0x41,0x11,0x80,0x80,0x08,0x12,0x21,0x33,0xaa,0xaa,0x33,0x33,0x33,0x34,
0x44,0x44,0x41,0x55,0x18,0x08,0x88,0x81,0x22,0x13,0xaa,0xaa,0x33,0x33,0x33,0x34,
0x44,0x44,0x15,0x51,0x88,0x88,0x88,0x81,0x22,0x13,0x3a,0xa3,0x33,0x33,0x33,0x34,
0x44,0x44,0x15,0x51,0x88,0x88,0x88,0x81,0x22,0x21,0x33,0x33,0x33,0x33,0x33,0x34,
0x44,0x41,0x55,0x51,0x88,0x88,0x88,0x12,0x22,0x22,0x11,0x33,0x33,0x33,0x33,0x44,
0x41,0x15,0x55,0x55,0x18,0x88,0x88,0x12,0x22,0x11,0x88,0x11,0x13,0x33,0x34,0x11,
0x18,0x81,0x15,0x55,0x18,0x88,0x81,0x11,0x11,0x88,0x88,0x88,0x11,0x11,0x11,0x18,
0x88,0x88,0x81,0x11,0x11,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x12,0x12,0x12,0x18,
0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x12,0x12,0x12,0x18,
0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x81,0x11,0x11,0x88,
0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,0x88,
0x88,0x88,0x88,0x88,0x88,0x88
};

SDL_RWops *mon_sprite;

void LoadSprite()
{
mon_sprite = SDL_RWFromMem(spr_sprite,sizeof(spr_sprite)/sizeof(unsigned char));
player = SDL_LoadBMP_RW(mon_sprite,0);
}


ensuite tu peux utiliser ton sprite comme tu as l'habitude de faire.

dans cet exemple, j'ai directement mis le tableau obtenu avec bin2c , mais tu peux aussi bien l'inclure avec un #include.

c'est facile a utiliser.

fonctionne aussi bien sous windows que sous gp2x grin
avatar
pourquoi la mort ? parce qu'elle nous est si douce, au contraire de la vie :)

4

merci pour l'infos. grin, mais si j'inclus mes fichier PNG dans le fichier .rc Ressource sous DevC++, si plus tard je porte sous GP2X ça fonctionnera comme ça ou je serais obligé de tout repassé en bin2c ou même laissé les fichiers a la racine du répertoire du EXE ou GPE ?
Yeeee Rock 'n Roll

5

les fichiers ressource ne fonctionne pas pour linux, donc ne fonctionne pas pour la GP2X

soit tu utilise cette methode, soit tu laisse les fichiers sur ta SD.
avatar
pourquoi la mort ? parce qu'elle nous est si douce, au contraire de la vie :)

6

Voila je trouve cette technique bien mais es-ce que quelqu'un pouarit détaillé faire un tuto avec une archive parceque je suis vraiment un galérien, j'aimerai bien apprendre smile

7

y'a rien de compliqué la dedans
avatar
pourquoi la mort ? parce qu'elle nous est si douce, au contraire de la vie :)

8

Voila ben déja j'arrive plus a compiler ton ton Project FragEmul qua javait dans ton tuto afin le truc avec Clear Well Done, j'arrive plus a le Compiler pour Windows avec devcpp ton tu voit mon niveau smile, si ta le temps de m'expliquer je serai t ravis smile

Thanks to All Yaronet Member's smile

9

j'ai des erreurs dans ce style mais je sais pas ce que sa veut dire

C:\DOCUME~1\BESTPI~1\LOCALS~1\Temp\ccegcaaa.o(.text+0x5c) In function `DrawSprite':
[Linker error] undefined reference to `SDL_MapRGB'
[Linker error] undefined reference to `SDL_SetColorKey'
[Linker error] undefined reference to `SDL_UpperBlit'

10

[Linker error] undefined reference to `SDL_MapRGB'
[Linker error] undefined reference to `SDL_SetColorKey'
[Linker error] undefined reference to `SDL_UpperBlit'

tout simplement qu'il n'y a aucune lib pour la compilation. Donc pour lui, tu ne link pas les lib SDL
avatar
pourquoi la mort ? parce qu'elle nous est si douce, au contraire de la vie :)

11

Merci j'avait oublié de mettre -lSDL dans les options de compilation