Planches de tilesets sous Allegro ?

Signaler
Messages postés
8
Date d'inscription
samedi 4 février 2006
Statut
Membre
Dernière intervention
19 février 2006
-
Messages postés
8
Date d'inscription
samedi 4 février 2006
Statut
Membre
Dernière intervention
19 février 2006
-
bonjour à tous !

Je me demandais q'il était possible, sous Allegro, de diviser une image
chargé dans une variable BITMAP en plusieurs sous-images, afin de
pouvoir utiliser des tilesets plutôt que pleins de petites textures
séparées ?

J'ai essayé de trouver la réponse dans le fichier d'aide de Allegro,
mais celui-ci étant en anglais, je n'ai pas tout compris. Y-a-til un
rapport avec les COMPILED_SPRITE ?

6 réponses

Messages postés
172
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
27 novembre 2009

oui c'est possible , m enfin j vois pas l intert de decouper un gros bitmap en plein de petit.ca pompe plus de memoire pour cree plein de petit bitmap qu un gros et ca prend plus de temps aussi.
si tu veux le faire ba pas dur -> tu cree un tableau bitmap et avec blit tu blit au coordonnée de chaque tile vers un bitmap alloué dans ton tableau de bitmap.


sinon plus simple et plus courant -> utiliser la fonction blit pour blitter un sprite specifique du tileset.



mettons que tu est un tileset composé de sprites 32*32 pixels -> y a 10*1 sprites dedans.


avec la fonction blit et le numero de sprite dans le tile set, tu peut blitter le tile de ton choix dans le tile set:


blit(BITMAP *source,BITMAP *dest,int sourceX,int sourceY,int destX,int destY,int hauteur,int longueur);


exemple :
on va afficher un tile d une map (int map[][] pour simplifier);
les tiles font 32*32 , le tileset est tout en longueur (c moins chiants a gerer)


blit(tileset,buff,32* map[x][y],0,Xecran,Yecran,32,32);


-> on va utiliser l id contenu dans map[x][y] pour positionner le blit sur le tile qui nous interresse et on va l afficher .


voila c tout con mais c'est chiant a expliquer si j ai pas ete assez clair redemande moi j te ferai un ptit code.


@++
Messages postés
8
Date d'inscription
samedi 4 février 2006
Statut
Membre
Dernière intervention
19 février 2006

merci de l'explication ! je pense avoir compris, je vais essayer, je te redemanderais si j'ai un problème.
Messages postés
8
Date d'inscription
samedi 4 février 2006
Statut
Membre
Dernière intervention
19 février 2006

re-salut !

J'ai un petit problème avec la fonction blit : la compilation se passe
bien, mais lorsque le programme est executé et arrive à la ligne de la
fonction blit, il y a un message d'erreur 'l'application a rencontré un
problème et doit fermer", le truc habituel qui demande si l'on veut
envoyer un rapport de l'erreur à Microsoft.

Voici comment j'ai utilisé la fonction :



BITMAP *Logo = load_bitmap("logo.bmp",NULL);

BITMAP *Logo_Set[11];

for(int i=0;i<11;i++){

blit(Logo, Logo_Set[i], i*32, 0, 0, 0, 32, 96); }



Je ne comprend pas ou est l'erreur...
Messages postés
546
Date d'inscription
vendredi 13 février 2004
Statut
Membre
Dernière intervention
9 janvier 2008
1
A mon avis c'est une rreur de lecture dans la memoire...
Quel taille fait le bitmap Logo? 332*96?
Je suppose que si c'est une erreur de lecture dans la memoire, ton bitmap fait 320*96...
Si c'est le cas c'est normal que ca plante, il faut que tu mettes i<10.
Messages postés
172
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
27 novembre 2009

normal que ca plante tu veut ecrire dans des bitmap qui ne sont pas cree, initilaise tes pointeurs avec create_bitmap() pour tout les pointeur de ton tableau . @++
Messages postés
8
Date d'inscription
samedi 4 février 2006
Statut
Membre
Dernière intervention
19 février 2006

ok, merci de vos réponses !!