mickbad
Messages postés71Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention20 avril 2008
-
28 févr. 2006 à 14:38
cs_jean84
Messages postés449Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention 5 mars 2009
-
5 mars 2006 à 17:28
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_jean84
Messages postés449Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention 5 mars 2009 5 mars 2006 à 17:28
Tu as raison pour "le plus propre", c'ets ce que je sous-entendais...
@+
mickbad
Messages postés71Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention20 avril 2008 4 mars 2006 à 17:24
oula .. tu as raison sur la fonction SDL_Delay(int) !!
je l'avais oublié !
A ma décharge quand je fais du SDL, j'utilise un moteur que j'avais réalisé un jour incluant le SDL_Delay ;)
Ceci dit, je ne suis pas d'accord dans le terme "plus propre".
Héhé, ce n'est pas "plus propre" mais plus "intelligent" car SDL_Delay s'affranchit de la plateforme utilisée.
Cependant en interne, pour win32 par exemple la SDL utilise Sleep(..):
void SDL_Delay(Uint32 ms) { Sleep(ms); }
Pour Linux, les développeurs n'utilisent pas usleep() !
étrange mais il doit y avoir une raison (surtout que usleep fait parti des libs standards distribués, je me trompe ?) .. et puis je n'ai pas envie de chercher, toc :))
.Mick.
cs_jean84
Messages postés449Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention 5 mars 2009 4 mars 2006 à 15:33
C'est vrai qu'uitliser une boucle pour faire attendre n'est pas tres precis parce que suivant la puissance du processeur, la boucle sera plus ou moins longue... il vaut mieux utiliser comme l'a suggerer mickbad la fonction Sleep() mais tant qu'a faire, autant utiliser SDL_Delay(int) qui fait fait la meme chose mais plus propre a mon avis (appartient directement a la lib sdl) et qui fait une pose de x milisecondes....
@++ et bon code !!
Rouliann
Messages postés115Date d'inscriptionsamedi 20 décembre 2003StatutMembreDernière intervention23 août 20081 1 mars 2006 à 20:05
Ca existe pas déja des fonctions pour tracer des lignes dans la SDL ? O_ô
cs_PLA
Messages postés3Date d'inscriptionsamedi 10 mai 2003StatutMembreDernière intervention 1 mars 2006 1 mars 2006 à 08:53
L'horloge a été faite avant la librairie et j'ai décidé de mettre les deux codes en même temps mais c'est pour cette raison que je n'utilise pas la librairie.
De plus je n'aime pas trop les structures avec les noms à rallonge et c'est vrai qu'un de ces jours il faudrait que je fasses de l'orienté objet.
mickbad
Messages postés71Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention20 avril 2008 28 févr. 2006 à 14:46
mais en tout cas tu n'as pas de fonction quitter(), tu as dû t'apercevoir qu'elle ne servait à rien en l'état, non ?
Et pour revenir à la façon d'encapusler SDL en mode objet, pense que tu peux toujours faire de l'objet en C (avec des strutures par exemple) : du moins lorsque j'ai appris le C, on faisait du C plutôt orienté objet :) pour certainement préparer les cours de C++ ;)
en tout cas, c'était efficace comme méthode :)))
.Mick.
mickbad
Messages postés71Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention20 avril 2008 28 févr. 2006 à 14:38
salut,
j'ai peut-être quelques remarques sur la librairie.
Déjà, pourrais-tu mettre un exemple d'utilisation ? non pas que cela soit très difficile de mettre en oeuvre un programme test, mais pour les néophytes que nous sommes ... un ch'tite pensée :)
Ensuite, personnellement ça m'ennuie de voir à ta fonction initSDL un exit si l'initialisation SDL ne se fait pas : en fait, tu ne laisses pas le soin au programmeur de gérer justement les erreurs ! Oui, on peut nous même changer le code mais on peut imaginer que cela ne soit pas possible (dll, lib ...)
Dans la fonction :
void pause(void)
{
long i=0;
while (i<PAUSE) i++;
}
oulala, tu n'as pas peur pour ton CPU!
le mien (les miens car il est bi le cochon ;) commence à activer son ventilateur dès que le CPU dépasse les (admettons) 35%. Alors si dans un jeu (surtout un p'tit), je fais une pause d'affichage, j'entends mon ventilo s'affoler .. je ne vois plus l'intérêt de la pause.
Nan .. pour résumer ... ta boucle ne propose pas trop au système de passer à un autre processus (programme) donc il va demander la main au processeur tout le temps alors que c'est inutile:
solution, un ch'tite pause :
while (++i < PAUSE) Sleep(10); /* par exemple */
sachant que Sleep est défini dans windows.h et un équivalent sur linux usleep dans unistd.h (aux unités d'argument près)
Que dire d'autre : visiblement tu dois faire un initSDL() puis un initCouleurs dans ton programme .. moui, autant faire un appel d'initCouleurs dans initSDL à ce moment là (vive l'automatisme);
Mais de manière globale, et ça n'engage que moi naturellement, quitte à encapusler les appels SDL, pourquoi ne pas faire de l'objet ?
effectivement ça permettait bcp de choses et d'éviter à se poser des questions quant au nommage des fonctions de la librairie car on peut facilement avec une fonction pause() ailleurs ;)
m'enfin, le C c'est bien aussi, je te rassure .. jamais obligé d'employer du C++
Dernière chose : MAIS OU SONT LES COMMENTAIRES ??
héhé! ben oui je suis toujours étonné d'en voir rarement sur ce genre de code (censé être réutilisé ailleurs). Ne me dis pas qu'ils sont dans le .h
Oui j'ai vu mais le code par lui-même n'a que très peu de commentaire !
Je pense que tu comprends ce que je veux dire. Sinon, un jour tu le comprendra surtout si tu dois par exemple reprendre un code d'une autre personne pour le débugger et/ou le faire évoluer !
une dernière chose, comment tu utilises ta fonction quitter() par exemple ? en gros, pour moi, ta fonction n'est pas bonne car elle me raconte que si je l'emploi le programme devrait s'arrêter et là ... pas vraiment !
5 mars 2006 à 17:28
@+
4 mars 2006 à 17:24
je l'avais oublié !
A ma décharge quand je fais du SDL, j'utilise un moteur que j'avais réalisé un jour incluant le SDL_Delay ;)
Ceci dit, je ne suis pas d'accord dans le terme "plus propre".
Héhé, ce n'est pas "plus propre" mais plus "intelligent" car SDL_Delay s'affranchit de la plateforme utilisée.
Cependant en interne, pour win32 par exemple la SDL utilise Sleep(..):
void SDL_Delay(Uint32 ms) { Sleep(ms); }
Pour Linux, les développeurs n'utilisent pas usleep() !
étrange mais il doit y avoir une raison (surtout que usleep fait parti des libs standards distribués, je me trompe ?) .. et puis je n'ai pas envie de chercher, toc :))
.Mick.
4 mars 2006 à 15:33
@++ et bon code !!
1 mars 2006 à 20:05
1 mars 2006 à 08:53
De plus je n'aime pas trop les structures avec les noms à rallonge et c'est vrai qu'un de ces jours il faudrait que je fasses de l'orienté objet.
28 févr. 2006 à 14:46
mais en tout cas tu n'as pas de fonction quitter(), tu as dû t'apercevoir qu'elle ne servait à rien en l'état, non ?
Et pour revenir à la façon d'encapusler SDL en mode objet, pense que tu peux toujours faire de l'objet en C (avec des strutures par exemple) : du moins lorsque j'ai appris le C, on faisait du C plutôt orienté objet :) pour certainement préparer les cours de C++ ;)
en tout cas, c'était efficace comme méthode :)))
.Mick.
28 févr. 2006 à 14:38
j'ai peut-être quelques remarques sur la librairie.
Déjà, pourrais-tu mettre un exemple d'utilisation ? non pas que cela soit très difficile de mettre en oeuvre un programme test, mais pour les néophytes que nous sommes ... un ch'tite pensée :)
Ensuite, personnellement ça m'ennuie de voir à ta fonction initSDL un exit si l'initialisation SDL ne se fait pas : en fait, tu ne laisses pas le soin au programmeur de gérer justement les erreurs ! Oui, on peut nous même changer le code mais on peut imaginer que cela ne soit pas possible (dll, lib ...)
Dans la fonction :
void pause(void)
{
long i=0;
while (i<PAUSE) i++;
}
oulala, tu n'as pas peur pour ton CPU!
le mien (les miens car il est bi le cochon ;) commence à activer son ventilateur dès que le CPU dépasse les (admettons) 35%. Alors si dans un jeu (surtout un p'tit), je fais une pause d'affichage, j'entends mon ventilo s'affoler .. je ne vois plus l'intérêt de la pause.
Nan .. pour résumer ... ta boucle ne propose pas trop au système de passer à un autre processus (programme) donc il va demander la main au processeur tout le temps alors que c'est inutile:
solution, un ch'tite pause :
while (++i < PAUSE) Sleep(10); /* par exemple */
sachant que Sleep est défini dans windows.h et un équivalent sur linux usleep dans unistd.h (aux unités d'argument près)
Que dire d'autre : visiblement tu dois faire un initSDL() puis un initCouleurs dans ton programme .. moui, autant faire un appel d'initCouleurs dans initSDL à ce moment là (vive l'automatisme);
Mais de manière globale, et ça n'engage que moi naturellement, quitte à encapusler les appels SDL, pourquoi ne pas faire de l'objet ?
effectivement ça permettait bcp de choses et d'éviter à se poser des questions quant au nommage des fonctions de la librairie car on peut facilement avec une fonction pause() ailleurs ;)
m'enfin, le C c'est bien aussi, je te rassure .. jamais obligé d'employer du C++
Dernière chose : MAIS OU SONT LES COMMENTAIRES ??
héhé! ben oui je suis toujours étonné d'en voir rarement sur ce genre de code (censé être réutilisé ailleurs). Ne me dis pas qu'ils sont dans le .h
Oui j'ai vu mais le code par lui-même n'a que très peu de commentaire !
Je pense que tu comprends ce que je veux dire. Sinon, un jour tu le comprendra surtout si tu dois par exemple reprendre un code d'une autre personne pour le débugger et/ou le faire évoluer !
une dernière chose, comment tu utilises ta fonction quitter() par exemple ? en gros, pour moi, ta fonction n'est pas bonne car elle me raconte que si je l'emploi le programme devrait s'arrêter et là ... pas vraiment !
bonne continuation
.Mick.