je viens d´essayer, de compiler le futil, et ça marche parfaitement.
mais à chaque fois que j´exécute futils ( pour générer une police), à la fin, VS me signale que la pile est corrompu autour de la variable temp.
je ne sais pas d´où ça peut venir, mais ça fait pas très propre.
bien sur en release il ne dit rien, mais c´est parce qu´il ne vérifie pas.
tu veux dire au niveau de la variable buf ?
il est vrai que c´est super crade... hem ! mea culpa ! mais bon.
a la rigueur, meme pas besoin de la mettre en static... Mais c´était pour gagner de la vitesse, en ne désallouant pas : simuli de variables globale en fait.
Bref...
Bon sinon, tant mieux si ça compile !
As tu essayé sous . net ?
Car moi je ne l´ai pas, donc j´ai pas essayé, et du coup, j´arrive pas a trouver la réponse pour le cas de soulhouf et de gollumkawder ![]()
Bon , j´ai enfin réussi à implémenter l´affichage dans " mon propre jeu " ( je met " " parceque , maintenant , y a plus de code à JYY qu´à moi . .. ^^ )
Elles sont vraiment pas mal , tes fonctions JYY, tu les as faites portables , c´est cool , parceque tu aurais pu mettre des valeurs par defaut partout , et ca aurait ete galere à porter . ..
merci
( bon , par contre , pas de screenshot
)
salut,
bizarrement maintenant ça marche ( je n´ai rien changé!!)
merci beaucoup JYY pour ton aide, il faut que je pense a l´architecture de mon projet maintenant.
allez au boulot
![]()
soulhouf > Ah ben tant mieux si ça marche maintenant
bizarre pour tout a l´heure !
jejej > oui, le but des fonctions Futils est qu´elles soient réutilisables facilement.
C´est un peu pareil pour les classes d´ailleurs
Probleme pour le moment dans les classes :
La classe Fmap pose les tiles en HARD : pas de parametres. ( changera)
La classe Fperso n´a pas d´option pour désactiver le scrolling : en effet, je pourrai me permettre d´utiliser cette meme classe pour instantier un perso par l´ordi qui bouge, mais faudra pas qu´il le suive au scrolling ![]()
JYY
j´ai reussi a modifier le perso a deplacer dans le programme de deplacement de personnage que tu a propose.
Mais quand j´ai introduit un autre sprite le perso n´apparait plus
pas la peine d´en dire autant , JYY voit tout . ..
hum , serieux , dis au moins les modifications que tu as faite . ..
tu as ajoute un nouveau perso , c´est a dire tu as fait ca ?
Fperso Fp2("charset.bmp",200,100,&); ?
dans ce cas , il ne faut pas oublier d´ajouter les methodes de render pour Fp2 dans le main .
Fp2.Render();
c´est peut etre pas ca du tout , mais avec ce que tu as dit , je crois pas pouvoir faire plus , dsl .
mais , ca va faire bizarre je pense , puisque le scrolling devra suivre les deux joueurs ? moi , je serais l´ordinateur , je planterai direct ^^
jejej > Oui, en effet ![]()
Si tu veux créer un autre perso, tu fais bien :
Fperso Fp2("charset.bmp",200,100,&);
et
Fp2.Render(); pour le rendre
Par contre, en ce qui concerne le scrolling, ça ne va pas planter, mais faire n´importe quoi ![]()
En effet, si tu rends Fp avant Fp2, alors - dans le cas ou ils bougent tout deux - ça va cacluler la fenetre de scroll pour Fp, mais comme y´a pas le flip,
alors il va ensuite calculer cette fenetre pour Fp2, puis rendre : en définitive, si les 2 bougent, c´est les dernier qui est suivi.
Cependant, comme tu as vu, la gestion du scrolling est dans les Move, c´est a dire que si le sprite ne bouge pas, y´a pas de control de scrolling
( ce qui parait logique : le perso ne bouge pas, pourquoi scroller ? )
Alors si le 2e perso ne bouge pas, alors le scrolling va se caler sur le premier qui bouge, donc sur Fp.
Et sitot que tu bouges Fp2, Pan ! la fenetre se recale sur lui : résultat, saut violent vers le 2e....
Pour palier ça ? Simple !
Surcharge le constructeur :
dis lui :
Fperso Fp("charset.bmp",200,100,&,1);
Fperso Fp2("charset.bmp",200,100,&,0);
Comme tu vois, j´ajoute un 0 ou un 1 a la fin.
je récupere cette donnée dans, on va dire, la variable " scroll" que je rajoute dans les données private de la classe !
N´oublie pas de la remplir dans le constructeur.
Puis ensuite, dans les fonctions move, tu proteges la partie scrolling par :
if ( scroll==1)
{
}
Tout simplement !
PS : petite optimisation qu´on pourrait faire aussi :
Fp et Fp2 ont tous les 2 le charset, qu´ils chargent chacun dans leur coin, donc ils consomment 2 fois la mémoire du meme charset.
ça pourrait bien sur etre optimisé
mais bon !
c pas ça le probleme...
excusez moi je n´ai pas ajouté un nouveau perso mais je voulais plutot utiliser un autre perso a la place du premier ( utiliser d´autres sprites en gros) et vu que mes sprites n´étaient pas régulieres, le programme affiche a l´ecran n´importe quoi.
n´y a-t-il pas un moyen d´organiser les sprites avec Photoshop d´une maniere efficace?
Photoshop ? . . c´est la facon dont tu geres les ressources qui importe, pas vraiment comment tu les stockes. Fais toi une routine generique pour afficher des sprites de tailles variables, et c´est fini.
Apres, comment organiser les images des sprites, ca devient une question de transfert memoire et de bande passante. Des textures de 256 ou 1024 en DXTC contenant chacune un atlas des images pour une entite donnee, c´est une solution comme une autre par ex.
ah tiens, je m´a goure avec le topic plus generique C++; du coup il y a p-e des choses specifiques aux tutos de JYY ici ![]()
Ajout d´un Mini casse brique SDL avec ses sources.
Rubrique 2_A_03
Par soucis d´honneteté, je précise que ce mini jeu n´est pas de moi. C´est d´ailleurs grace a lui que j´ai accroché SDL, il y a presque 2 ans.
Dans la mesure ou le lien pour y accéder est maintenant mort ![]()
http://www.golum.net
Je me suis permis de le mettre sur mon site, en précisant bien cela au début du fichier . cpp en commentaires.
j´ai un petit probleme avec le deplacement des persos.
JeanYvesYves j´ai une question a te poser:
dans ton tutorial quand tu deplaces un perso tu utilise 3 sprites par direction. Moi, je veux utiliser 6 alors je fait comment?
( j´ai essayé de modifier les fonctions MoveX , MoveY et Render mais ça fait un truc bizarre)
merci
Le calcul de l´image d´animation est fait derriere les commentaires suivants dans Fperso::MoveX et Fperso::MoveY
-->
/ * calcul image */
Il te suffit d´adapter pour avoir ce que tu veux ![]()
ça calcule le numéro de l´image.
Dans la méthode Fperdo::Render, il y a également un calcul pour transofmer le numéro de l´image en position x,y sur le charset ![]()
Apres, bien sur, tout dépend comment est fait ton charset.
en faite mon charset se compose de de 6 sprites horizontales sur 4 verticales et j´ai fait les transfos que tu ma indiqué: j´ai transformé tout ce qui est " 3" en " 6"... mais ça marche pas
faut changer dans le render aussi...
oui je l´ai fait mais il m´affiche un truc bizarre: il utilise 3 images de la ligne souhaitee + 3 images de la ligne suivante...
revois ton calcul alors.
maintenant le perso disparait...
j´ai surement fait une erreur de calcul mais j´arrive pas a la trouver.
merci quant meme
regarde dans le MoveX : ( adapte pour les autres)
crim=9+(Timer()/100)%3;
le / 100 définira qu´il y a un changement d´anim par dizieme de secondes ( diminue pour aller plus vite, augmente pour ralentir)
le %3 veut dire que tu vas faire :
0,1,2,0,1,2,0,1,2,....
dans ton cas, fait %6
le 9, c´est le sprite de départ : compte tes sprites sur ton charset de gauche a droite et de haut en bas, en partant de 0...
dans ton cas, au lieu de faire 0,3,6,9 dans les points de départ, tu feras 0,6,12,18
regarde ensuite dans le render :
XTILE*(crim%3),YTILE*(crim/3),XTILE*(crim%3)+24,YT
ILE*(crim/3)+32
Ici, les 3, tu les remplaces par 6 dans ton cas ( tous)
le 24 et le 32 c´est la largeur et la hauteur : met a jour aussi.