QUELQUES FONCTIONS POUR FACILITER LA PRISE EN MAIN DE LA SDL

le_duche Messages postés 159 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 26 février 2009 - 14 déc. 2005 à 10:57
le_duche Messages postés 159 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 26 février 2009 - 15 déc. 2005 à 15:51
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/35085-quelques-fonctions-pour-faciliter-la-prise-en-main-de-la-sdl

le_duche Messages postés 159 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 26 février 2009
15 déc. 2005 à 15:51
ok je retiens la remarque !
Asher256 Messages postés 13 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 2 mars 2006
15 déc. 2005 à 15:49

ben pourtant ca compile comme ca ???
Tu peux m'expliquer un peu pourquoi je dois faire ca ? pcq la je comprend pas trop...


Je sais que ça marche chez toi mais il serait mieux que ça marche dans d'autres compilateurs ou même d'autres systèmes.

J'utilise gcc 3.3.5 sous Gentoo Linux.

Il est normal que <windows.h> n'existe pas chez moi.

Et puis je pense que gcc est plus strict pour ce qui est de la compilation (d'ou le stdarg.h et string.h qui déclarent respectivement va_start() et strlen()).

Les include que je t'ai proposé vont premettre à ton code source de toucher plus de compilateurs/systèmes.

@+ et bonne continuation.
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
15 déc. 2005 à 15:32
c'est vrai... m'enfin vu que maintenant je te le demande .... tu le renomme en .exe_ et tu met a jour non ?
le_duche Messages postés 159 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 26 février 2009
15 déc. 2005 à 13:11
ben c'est dans les recommandations du site de ne pas mettre d'exe...
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
15 déc. 2005 à 12:25
C'est vrai qu'il y a du bon dans ton code ... comme du moins bon mais sa arrive a tout le monde ;-)
Je viens de debuter dans l'utilisation de la SDL et je dois dire que t'as eu pas mal de bonnes idees pour simplfier la vie et j'en prendrai note car sa vaut vraiment le coup ! Par contre ce qui est reprochable c'est qu'en sachant pertinament qu'on aurait du mal a compiler, tu n'as pas mis d'exe dans le zip, juste histoire de voir a quoi sa ressemble meme si on arrive a imaginer le resultat .... pense y pour la prochaine fois ou lors d'une mise jour !!
@++
le_duche Messages postés 159 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 26 février 2009
14 déc. 2005 à 18:12
ben pourtant ca compile comme ca ???
Tu peux m'expliquer un peu pourquoi je dois faire ca ? pcq la je comprend pas trop...
Asher256 Messages postés 13 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 2 mars 2006
14 déc. 2005 à 17:07
Il faut enlever la déclaration <windows.h> de MySDL.cpp et MySDL.h pour assurer la portabilité du code.

Il faut déclarer <string.h> et <stdarg.h> dans MySDL.cpp.
<string.h> car strlen() a été utilisée.
<stdarg.h> car va_start() a été utilisée.

Avec ces déclarations cela garantira sa compilation dans d'autres OS (c'est l'avantage d'SDL par rapport à DirectX non? :-) )

Ton code est bien commenté. Il sera utile pour toute personne souhaitant débuter avec SDL.
Asher256 Messages postés 13 Date d'inscription mardi 28 juin 2005 Statut Membre Dernière intervention 2 mars 2006
14 déc. 2005 à 17:04
Pour la portabilité du code source il est préférable d'enlever la déclaration <windows.h> dans les fichiers "MySDL.h" et "MySDL.cpp".

Il faudrait inclure <stdarg.h> dans dans "MySDL.cpp" (puisque tu as utilisé la fonction "va_start()").

Il faudrait aussi inclure <string.h> dans MySDL.cpp car la fonction strlen() a été utilisée.

Sinon je trouve ton code bien commenté. Très utile pour tout ceux qui souhaitent débuter avec la SDL.
le_duche Messages postés 159 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 26 février 2009
14 déc. 2005 à 15:16
Ben il me semble qu'un SDL_Rect n'est jamais qu'un 4-uple de int... c'est pas très gros quand meme...
Dans mon autre projet, je peux renvoyer des matrices doubles 100*100 si je veux. Je pense que c'est le constructeur de recopie par défaut qui gère ca...
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 déc. 2005 à 14:14
Si on peut retourner un RECT, bien pour cela que j'aurais aimé voir ce que le compilo met comme code, EDX:EAX plafonne à 64 bits, je me demande donc où il met le reste.
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
14 déc. 2005 à 13:47
Je pensais qu'a part les tableaux, ca ne posait pas de problème de retourner une variables globale... Par exemple, on peut très bien retourner une variable de type RECT, non? En tous cas en C++, c'est courant de retourner des objets de type complexe
le_duche Messages postés 159 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 26 février 2009
14 déc. 2005 à 11:50
Pourrais-tu demander la sortie du listing asm de ton compilo, j'aimerais bien savoir ce que fait cette fonction Rect(), merci d'avance.
> ca c'est du chinoix pour moi.
Mais de toute façon j'ai dit une connerie...
C'est pas un pointeur... c'est une variable de type SDL_Rect et j'ai pas creusé plus loin.
Ce qui m'a induit en erreur, c'est qu'on utilise tout le temps des pointeurs SDL_Rect* dans le code...

Mais pour en revenir à ta remarque, je ne vois pas ou est le problème, puisqu'il renvoie un SDL_Rect par valeur. Je ne comprend pas ce qui pourrait foirer...
(j'utilise cette fonction tout le temps et elle marche très bien...
je devrait peut etre juste la mettre en 'inline'...)
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 déc. 2005 à 11:43
type de pointeur, c'est quoi ???
Pourrais-tu demander la sortie du listing asm de ton compilo, j'aimerais bien savoir ce que fait cette fonction Rect(), merci d'avance.
le_duche Messages postés 159 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 26 février 2009
14 déc. 2005 à 11:30
pour ce qui est de la clareté, je compte l'améliorer, c'est pour ca que je l'ai mis en source...
le_duche Messages postés 159 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 26 février 2009
14 déc. 2005 à 11:29
non aucun problème, car le type SDL_Rect est un type de pointeur...
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
14 déc. 2005 à 11:27
SDL_Rect Rect(int x,int y,int w,int h)
{
SDL_Rect r; //Dclare un rectangle SDL
....
return r; //Renvoie ce rectangle cr
}

On ne retourne jamais ce qu'on met sur la pile, toutes chances d'être écrasé en sortie de fonction.

"pas très propre", "pas terrible", etc... Si tu sais toi même que ce n'est pas bon il ne faut pas le mettre en source. Une source se doit d'être un exemple pour ceux qui la liront, le reste va sur le forum.
le_duche Messages postés 159 Date d'inscription lundi 13 juin 2005 Statut Membre Dernière intervention 26 février 2009
14 déc. 2005 à 10:57
Je sais que cette source n'est pas très propre, je ne sais meme plus si elle est compilable telle quelle, mais c'est surtout pour avoir un premier avis avant de la terminer sérieusement...
Donc svp, pas de note tout de suite, je sais bien que c'est pas terrible...
Rejoignez-nous