TutorielsVous débutez ? C'est ici qu'on commence !
Mon compte
Recherche
Livre d'or
PublicitéVous devez être inscrit pour pouvoir poster des messages
| Page : 1 2 Suivante | |||||||
| Auteur | Message | ||||||
|---|---|---|---|---|---|---|---|
| 1 visiteur sur ce sujet (1 anonyme) | |||||||
| Page : 1 2 Suivante | |||||||
aska990
|
# Posté le 25/07/2008 à 02:30:28 | ||||||
Je vais manger moult frites !![]() Groupe : Membres |
Bonjour bonjour
Je viens de coder un lecteur audio en C, et j'aimerais savoir ce que vous en pensez. Ce n'est rien d'extraordinaire, je l'ai fait juste pour m'entraîner, mais si voyez des moyens de l'améliorer, n'hésitez pas. EDIT : Petites améliorations : on peut maintenant ouvrir une musique soit en la glissant sur l'éxécutable, soit en faisant clic droit dessus>ouvrir avec et en sélectionnant le programme, soit, pour les utilisateurs de windows uniquement, l'ouvrir en cliquant sur le bouton ouvrir en haut à droite dans le programme. Autre amélioration : le programme ne se ferme plus de suite si aucune musique n'est chargée. Re-screenshot : ![]() Et le lien de téléchargement : télécharger le .zip ici
Édité
le 10/08/2008 à 10:09:05
par aska990
|
||||||
Emoragie
|
# Posté le 25/07/2008 à 02:42:46 | ||||||
Bad is Good.![]() Groupe : Membres |
Pas pratique, pas super beau. Mais il marche plutôt bien
Suggestions : - Le rendre plus pratique, là c'est dur d'écouter sa musique x) -Graphiquement c'est pas le top, il faudrait revoir ça. (On peu en parler par MP si tu veux =X) Avatar Noelisé par jolo2. En essayant continuellement, on finit par réussir. Donc plus ça rate, plus on a de chances que ça marche. (\__/) (o' -'o) - Pikachu ! Pika pika ! ('')o('') |
||||||
aska990
|
# Posté le 25/07/2008 à 02:56:14 | ||||||
Je vais manger moult frites !![]() Groupe : Membres |
Le problème c'est que je n'ai pas trouvé d'autre moyen pour sélectionner la musique à ouvrir. J'avais essayé avec les arguments de main et ça n'avait pas fonctionné pour une raison mystérieuse.
Pour le graphisme, j'essaierai d'améliorer pour la prochaine version ![]() Et sinon, au niveau du code, c'est pas trop écoeurant ?
Édité
le 25/07/2008 à 03:10:06
par aska990
|
||||||
aska990
|
# Posté le 26/07/2008 à 03:10:06 | ||||||
Je vais manger moult frites !![]() Groupe : Membres |
UP...
|
||||||
GuilOooo
|
# Posté le 26/07/2008 à 14:34:38 | ||||||
PriPrOTtTt§!!!§![]() Groupe : Membres |
Je teste et j'édite au fur et à mesure de ce que je trouve. Je ne prétends pas être exhaustif, hein.
Pour le packaging, je ne vois pas bien l'intérêt de mettre les headers dans un sous-dossier à part. À la limite, si c'était une bibliothèque ou quoi, tu aurais pu mettre les interfaces publiques dans le dossier sources et la partie privée dans un sous-dossier. Mais ici ? Ensuite, tu utilises FMod. FMod est certainement une excellente bibliothèque et tout ce qu'on voudra, mais elle se destine à des projets commerciaux (y'a qu'à voir son prix : de l'ordre 100$ pour une licence « hobbyist programmer »). Pour ton lecteur, les problèmes de licence peuvent se montrer restrictifs (si tu comptes distribuer ton programme vraiment après) main.c Premier constat : la fonction main est assez conséquente (genre 160 à 170 lignes). Il n'y a pas moyen de la subdiviser un peu ? On y verrait plus clair. Les fonctions statiques sont tes amies. De plus, sur 170 lignes de code, je n'ai vu qu'une seule ligne de commentaire ! Je t'accorde que les noms sont bien choisis, ce qui rend le tout relativement aisé à lire, mais un commentaire de temps en temps ne ferait pas de mal. Enfin, j'ai vu un printf à un moment. Le printf, c'est moyennement bien dans un programme censé être entièrement graphique : y'a peu de chances que l'utilisateur le voie... affichage.c/.h Tous ces #define dans le header, je suis sûr qu'on peut en faire quelque chose. Pourquoi ne pas tenter un item-list, voire même lire ces valeurs dans un fichier dynamiquement ? Ce serait vraiment bien, et ça faciliterait énormément la création de thèmes graphiques pour ton lecteur. La fonction afficher prend une dizaine d'arguments. Je suis sûr qu'il est possible de les regrouper dans deux grandes structures : etatFenetre (surfaces + compteurs de temps pour les FPS + position du curseur + surface écran, et ainsi de suite) et etatLecteur (tout ce qui concerne le lecteur, comme le volume et tout). Ça pourrait servir à réorganiser tout le programme en deux modules bien séparés étanchement. Sinon, vu que tu as une énorme collection de surfaces, pourquoi ne pas faire une structure genre ElementGraphique qui contient une surface et un SDL_Rect (ou deux entiers x,y) ? Ce serait bien pratique. Ensuite, tu pourrais faire un système avec un tableau d'ElementGraphique's et une énumération : Code : C
Puis, fenetre[TITRE] designe l'ElementGraphique du titre, et ainsi de suite. L'avantage ? Tu peux tout blitter d'un seul coup avec un simple for, et ça doit factoriser un peu de code. gestionsurfaces.h/.c Là, puisque tu as fait une fonction pour charger les surfaces, saches qu'il y a un petit truc qui permet d'accélérer le blitt des surfaces, au prix de passer la surface écran en paramètre à la fonction qui charge les images (en plus des autres). Voici : Code : C
Autres fichiers Peu de code, ou code trivial. Donc pas grand chose à dire, je n'ai pas regardé en détails. globalement C'est bien joué, tu as des identificateurs clairs, des pratiques propres. Je pense que tu pourrais exporter plus de données du code vers un fichier externe (par exemple). Aussi, tu devrais pouvoir subdiviser ton code en modules étanches et fonctionnels, en repensant l'organisation des structures par exemple. Ça ne veut pas dire que ton code n'est pas organisé ! Mais ça rendrait l'extension de ton code plus facile par la suite. Enfin, bien que le code se comprenne avec les identificateurs clairs, les commentaires c'est cool aussi. J'en ai pas vu beaucoup. Je précise que ce n'est qu'une analyse rapide, j'ai rien regardé en profondeur (j'ai même pas pris la peine de faire un makefile pour compiler, c'est vous dire). Mais, de loin, ça à l'air tout à fait correct.
Édité
le 26/07/2008 à 14:56:55
par GuilOooo
Ma série d'articles « Paradigmes » : Intro - Impératif OpenCola, la seule boisson open-source au monde ! |
||||||
aska990
|
# Posté le 27/07/2008 à 00:54:50 | ||||||
Je vais manger moult frites !![]() Groupe : Membres |
Merci GuilOooo, ça va m'aider tout ça.
Citation : GuilOooo je ne vois pas bien l'intérêt de mettre les headers dans un sous-dossier à part Bah je voulais pas tout mettre dans le même dossier.... Citation : GuilOooo Pour ton lecteur, les problèmes de licence peuvent se montrer restrictifs (si tu comptes distribuer ton programme vraiment après) Oh non, je ne compte pas le distribuer, je l'ai fait uniquement pour m'entraîner. De toutes façon, personne en voudrait, VLC ou iTunes sont gratuits et 100 fois mieux. Citation : Pas de titre Pourquoi ne pas tenter un item-list, voire même lire ces valeurs dans un fichier dynamiquement ? Qu'est-ce qu'un item-list et un fichier lu dynamiquement ? Bon, ça va me donner pas mal de choses à améliorer pour la version suivante. Merci beaucoup ! |
||||||
GuilOooo
|
# Posté le 27/07/2008 à 11:32:34 | ||||||
PriPrOTtTt§!!!§![]() Groupe : Membres |
Citation : aska990
Qu'est-ce qu'un item-list et un fichier lu dynamiquement ? Le plus simple, c'est le fichier lu dynamiquement. C'est tout bêtement un fichier, par exemple un fichier texte, que ton programme ouvre et lit pour y piocher des informations (dynamiquement signifie : « au moment de l'exécution ». Donc c'est un fichier lu par le programme au moment de l'éxécution). Pour les item-list, c'est une technique un poil plus compliquée à expliquer là, maintenant, qui permet de stocker certaines informations dans un fichier à part. La différence avec l'autre, c'est que les données sont mises dans ton éxécutable au moment de la compilation, et il faut donc recompiler quand tu veux changer tes données. Je te laisse faire des recherches (me semble que le site d'-ed- en parle). Ma série d'articles « Paradigmes » : Intro - Impératif OpenCola, la seule boisson open-source au monde ! |
||||||
aska990
|
# Posté le 30/07/2008 à 08:19:32 | ||||||
Je vais manger moult frites !![]() Groupe : Membres |
|||||||
Lewis123
|
# Posté le 30/07/2008 à 08:43:22 | ||||||
![]() Groupe : Membres |
Dommage que je n'ai aucun mp3 sur mon pc
Conseil: Met une ou quelques musiques dans un repertoire
Keyboard not found, press any key to continue... |
||||||
moustick1991
|
# Posté le 30/07/2008 à 20:56:57 | ||||||
![]() Groupe : Membres |
Bonjour , je t'ais laissé un MP pour te conseiller un mode d'ouverture de fichier , en utilisant l'API windows (si tu estsous windows bien sur ...
)bonne chance .
|
||||||
Vhann
|
# Posté le 30/07/2008 à 21:35:52 | ||||||
|
VIM Has Anything u Need, Nerd Groupe : Membres |
Quelques critiques:
1- Les accents dans les noms de dossier c'est pas très gentil, j'ai dû passer par mon explorateur graphique pour pouvoir y accéder/renommer le dossier éxécutable (j'imagine que c'est comme ça que ça s'appelait). Pourquoi c'est mal? Parce que l'encodage de ces caractères diffère d'un système à l'autre (Windows/Linux) 2- Pour passer des fichiers par la ligne de commande (paramètres du main()), il suffit d'échapper le chemin du fichier ( "chemin/vers/musique" ). Sinon, tu peux te renseigner sur dirent.h (POSIX): opendir(), readdir(), closedir(), etc. pour permettre aux utilisateurs de choisir leur fichiers audio. 3- Je ne possède pas la FMOD (d'où certaines erreurs), mais quand même: Code : Console
Cordialement, Vhann "root@darkstar:~# fortune Saisir du texte avec SDL facilement? C'est ici (SDL_Input)There once was an old man from Esser, Who's knowledge grew lesser and lesser. It at last grew so small, [He knew nothing at all, And now he's a College Professor" ![]() Vous voulez rire? -Nous jurons sur l'honneur qu'Internet Explorer n'est PAS basé sur Mozilla Firefox Quelques URLs amusantes pour Firefox users: -<lien url="chrome://browser/content/browser.xul">chrome://browser/content/browser.xul</lien> -<lien url="about:robots">about:robots</lien> Amusez-vous |
||||||
aska990
|
# Posté le 31/07/2008 à 12:13:19 | ||||||
Je vais manger moult frites !![]() Groupe : Membres |
Ce sont des warnings que tout le monde s'accorde à trouver excessifs. (Cf ce topic)
Désolé pour les accents, je n'y avais pas pensé. Citation : Vhann 2- Pour passer des fichiers par la ligne de commande (paramètres du main()), il suffit d'échapper le chemin du fichier ( "chemin/vers/musique" ). Que veux-tu dire par "échapper" ? |
||||||
Vhann
|
# Posté le 31/07/2008 à 17:49:51 | ||||||
|
VIM Has Anything u Need, Nerd Groupe : Membres |
Citation : aska990
Ce sont des warnings que tout le monde s'accorde à trouver excessifs. (Cf ce topic) Désolé pour les accents, je n'y avais pas pensé. Excessifs peut-être, mais personnellement, je préfère voir le moins d'avertissements possibles, quitte à devoir rajouter { 0, 0, 0, 0 } lorsque je déclare une structure. "Que veux-tu dire par "échapper" ?" Les entourer par des guillemets. C'est-à-dire que plutôt que de faire: Code : Console
Ce qui te donnerait argc == 5, tu fais ceci: Code : Console
Ce qui est la façon universelle de faire: "programme ceci\ est\ un\ parametre" sous Linux ou quelque chose comme "programme ceci%20est%20un%20parametre" sous Windows Cordialement, Vhann "root@darkstar:~# fortune Saisir du texte avec SDL facilement? C'est ici (SDL_Input)There once was an old man from Esser, Who's knowledge grew lesser and lesser. It at last grew so small, [He knew nothing at all, And now he's a College Professor" ![]() Vous voulez rire? -Nous jurons sur l'honneur qu'Internet Explorer n'est PAS basé sur Mozilla Firefox Quelques URLs amusantes pour Firefox users: -<lien url="chrome://browser/content/browser.xul">chrome://browser/content/browser.xul</lien> -<lien url="about:robots">about:robots</lien> Amusez-vous |
||||||
aska990
|
# Posté le 01/08/2008 à 08:17:01 | ||||||
Je vais manger moult frites !![]() Groupe : Membres |
Merci moustick1991, ta solution fonctionne très bien. Dommage qu'elle ne fonctionne que sous windows !
Bon, alors quels sont les defines permettant de savoir si on est sous windows, linux ou Macintosh ? Comme ça je pourrai dire à mon programme si il doit chercher ou pas l'adresse dans le fichier. Bon maintenant il faut que je trouve comment faire sur les OS autres que Windows... EDIT : ça y est, je sais utiliser les arguments de main ! Et pour les defines, c'est bon j'ai trouvé. Avec tout ça, il ne dvrait plus y avoir de problème pour ouvrir une musique.
Édité
le 01/08/2008 à 13:06:01
par aska990
|
||||||
Vhann
|
# Posté le 01/08/2008 à 15:34:23 | ||||||
|
VIM Has Anything u Need, Nerd Groupe : Membres |
@aska990: Pour les define c'est ici (je ne sais pas si tu avais déjà trouvé, mais bon, ça peut être utile à d'autres): http://predef.sourceforge.net/preos.html
Cordialement, Vhann "root@darkstar:~# fortune Saisir du texte avec SDL facilement? C'est ici (SDL_Input)There once was an old man from Esser, Who's knowledge grew lesser and lesser. It at last grew so small, [He knew nothing at all, And now he's a College Professor" ![]() Vous voulez rire? -Nous jurons sur l'honneur qu'Internet Explorer n'est PAS basé sur Mozilla Firefox Quelques URLs amusantes pour Firefox users: -<lien url="chrome://browser/content/browser.xul">chrome://browser/content/browser.xul</lien> -<lien url="about:robots">about:robots</lien> Amusez-vous |
||||||
moustick1991
|
# Posté le 01/08/2008 à 15:54:46 | ||||||
![]() Groupe : Membres |
Sinon , encore pour windows , je t'ais envoyé un autre MP pour te dire comment inclure le drag & drop(glisser/déplacer) dans une fenêtre SDL.
|
||||||
moi281184
|
# Posté le 01/08/2008 à 15:59:00 | ||||||
|
Groupe : Membres |
|||||||
moustick1991
|
# Posté le 01/08/2008 à 17:02:16 | ||||||
![]() Groupe : Membres |
Désolé , c'est vrais , moi281184 tu as raison ...
Je prend une douche je vais au tabac et je vous explique tout ca .....EDIT : Voiiiilllàààà : Alors : 1 : Il faut permettre à la fenêtre de recevoir le message WM_DROPFILES (cf : API WINDOWS et MSDN) et activer les messages système de la SDL (il vous faudra inclure windows.h et SDL_syswm.h ). Pour cela , je propose une fonction que j'ai fait : Code : C
note : cette fonction est à mettre avant la boucle principale du programme . 2 : Il faut interpréter le message WM_DROPFILES comme ceci : Code : C
note : ch_son contient le chemin du fichier glissé . Dans le cas où il y auraient plusieurs fichiers glissés\déposés en même temps,le tableau de chaines pl_list contient tous les chemins des fichiers en question . (cf : tuto sur l'API WINDOWS de Mg++ ). 3 : enfin , je vous donne la fonction GlisserDeposer réalisée par Mg++ : Code : C
Voilàààààà , si vous avec des questions ou des remarques n'hésitez pas (par MP ou non ) . Si il y a des erreurs , merci de me le faire remarquer gentillement(l'erreur est humaine). Bonne chance à tous .
Édité
le 01/08/2008 à 18:08:22
par moustick1991
|
||||||
aska990
|
# Posté le 02/08/2008 à 10:03:07 | ||||||
Je vais manger moult frites !![]() Groupe : Membres |
Bon, j'aurais une petite question :
Ces defines permettent de savoir sur quel OS on est, mais à la compilation ou alors lors de l'éxécution du programme ? Autre chose : que veux tu dire par "glisser-déplacer" ? Et enfin, je reviens un peu dessus : Citation : GuilOooo Tous ces #define dans le header, je suis sûr qu'on peut en faire quelque chose. Pourquoi ne pas tenter un item-list, voire même lire ces valeurs dans un fichier dynamiquement ? J'avoue ne pas trop comprendre l'intérêt...les defines sont faites pour ça, non ? C'est un mal d'en avoir autant ? De plus, je peux calculer grâce à ça la place d'un élément par rapport à un autre, genre Code : C
Ainsi, les deux boutons seront toujours alignés horizontalement et espacés de 5 pixels. |
||||||
gouttegd
|
# Posté le 02/08/2008 à 12:31:54 | ||||||
![]() Groupe : Membres |
Citation : aska990
Ces defines permettent de savoir sur quel OS on est, mais à la compilation ou alors lors de l'éxécution du programme ? Ben à la compilation, forcément. Lors de l'exécution, la question ne se pose plus. Dès lors que le programme s'exécute, c'est qu'il est sur le système pour lequel il a été compilé. Rappelons à toutes fins utiles que si le code source d'un programme en C est portable (ou du moins peut l'être si le programmeur a fait attention), l'exécutable généré lui ne l'est pas. « Je vous aiderai si vous me promettez d'aider quelqu'un d'autre en retour. » --- Anonyme « Soyez vigilant lorsque vous vous exprimez dans un forum électronique. Vos fautes de frappes et de syntaxe vous poursuivront pour l'éternité. » --- Linus B. Torvalds http://fr.hypo-theses.com/ |
||||||
moustick1991
|
# Posté le 02/08/2008 à 14:43:05 | ||||||
![]() Groupe : Membres |
![]() Le drag & drop c'est le fait de selectionner des fichiers (içi des films) et de les déplacer sur la fenêtre d'une application (içi windows media player)...
Édité
le 02/08/2008 à 14:44:12
par moustick1991
|
||||||
aska990
|
# Posté le 09/08/2008 à 12:02:30 | ||||||
Je vais manger moult frites !![]() Groupe : Membres |
Ok, je l'adapterai à mon code quand j'aurai le temps.
|
||||||
diaruga
|
# Posté le 09/08/2008 à 13:07:21 | ||||||
L'univers et dans le main !![]() Groupe : Membres |
1er idée d'amélioration qui non rien avoir avec le code source (j'irai le voire plus tard
).Tu pourrai pas faire que l'on puisse mettre plus sieur musiques car une par une en passent par les paramètres c'est vraiment lourd ^^, par exemple l'utilisateur mais tous les chemins de c'est musiques dans le fichier paramètre il te m'encrer qu'à rajouter des boutons pour passer à la musique suivante et inverse .Et aussi quand on clic sur le bouton pour faire passer la musique en boucle il faudrait mettre un symbole à coté du temps pour dire que c'est en mode boucle sinon on le voit pas trop bien .Et je pense te faire un meilleur skin enfin si tu veux ! ![]() ps: Tu pourrai pas faire un installateur pour Windows ça fait plus pro .Et aussi ton code source pourrai être un peut plus commenter c'est une bonne habitude à prendre .
Édité
le 09/08/2008 à 13:12:31
par diaruga
|
||||||
aska990
|
# Posté le 10/08/2008 à 09:47:21 | ||||||
Je vais manger moult frites !![]() Groupe : Membres |
Bon attendez, avant de corriger tout ça, je vais poster la version améliorée avec l'ouverture par l'association de fichiers et, pour les utilisateurs de windows, une fenêtre d'ouverture.
EDIT : Ok, ça y est, le lecteur est un peu amélioré. Il me reste encore à adapter le glisser-déposé, à améliorer également le code et le graphisme, plus quelques autres idées piochées dans ce topic à adapter...bref du pain sur la planche. (de toutes façon, il y aura toujours quelque chose à améliorer, rien que dans le code : par exemple, il y a à peine cinq minutes, je me suis aperçu que j'essayais se libérer un FSOUND_Stream avec un SDL_FreeSurface ! )
Édité
le 10/08/2008 à 10:16:17
par aska990
|
||||||
GuilOooo
|
# Posté le 10/08/2008 à 14:40:55 | ||||||
PriPrOTtTt§!!!§![]() Groupe : Membres |
Citation : aska990
J'avoue ne pas trop comprendre l'intérêt...les defines sont faites pour ça, non ? C'est un mal d'en avoir autant ? De plus, je peux calculer grâce à ça la place d'un élément par rapport à un autre, L'idée était de stocker tout ça dans un fichier à part, lu soit à la compilation soit à l'exécution, de façon à pouvoir créer une nouvelle interface (un nouveau thème, quoi) bien plus facilement. Tu gagnes en extensibilité. C'est pas mal de faire comme ça, c'est juste que tu as des données dans le code source. Ma série d'articles « Paradigmes » : Intro - Impératif OpenCola, la seule boisson open-source au monde ! |
||||||
toxicopathe
|
# Posté le 10/08/2008 à 15:45:15 | ||||||
|
Groupe : Membres |
Salut à tous,
je post en réaction au post de moustick1991 je viens de tester et ca fonctionne très bien le glisser déposer, j'ai quand meme eu un pépin avec cette partie du code : Code : C
en faisant comme ci dessus ca ne fonctionne pas. Je récupère bien des evenements de type SDL_SYSWMEVENT mais aucun WM_DROPFILES ... j'ai reessayé en remplacant les les lignes ci dessus par : Code : C
et là je reçois bien mon WM_DROPFILES. Seulement je trouve ma methode pas très propre dans la mesure ou la fonction que j'utilise pourrait ne pas récupérer le bon handle ... bref j'aimerai éclaicir le problème |
||||||
Muguiwara
|
# Posté le 12/08/2008 à 15:53:52 | ||||||
Duff Man !! Oh Yeah !![]() Groupe : Membres |
Si il est au point met un lien DDL car Le seul lecteur qui est bien c'est VLC Media player
Le monde ne sera pas détruit par ceux qui font le mal, mais par ceux qui les regardent sans rien faire. Albert Enstein . Site Open source Projet C++ : Site C++ |
||||||
royalbru
|
# Posté le 12/08/2008 à 17:44:09 | ||||||
![]() Groupe : Membres |
Salut,
Au lieu de récupérer le handle de ta fenêtre par GetForegroundWindow, récupère le par FindWindow. Tu fournis juste à la fonction le nom de classe de ta fenêtre et c'est fini . Si tu ne connais pas le nom de classe de ta fenêtre, couple ta fonction avec GetClassName.A+ |
||||||
aska990
|
# Posté le 16/08/2008 à 07:02:33 | ||||||
Je vais manger moult frites !![]() Groupe : Membres |
|||||||
aska990
|
# Posté le 24/08/2008 à 11:42:15 | ||||||
Je vais manger moult frites !![]() Groupe : Membres |
Bon, moustick1991, le glissé/déposé ne fonctionne pas. Lorsque je glisse/dépose une musique sur ma fenêtre, j'ai un petit icône d'interdiction à la place de la souris.
|
||||||
Retour au forum "Langage C" ou à la liste des forums
Vous devez être inscrit pour pouvoir poster des messages
Changer de design |
En savoir plus |
Plan du site |
Politique d'accessibilité |
Règles |
RSS tutoriels |
RSS news
Édité par Simple IT SARL :
Nous contacter
| Notre blog | Revue de presse | Publicité
Y'a plus rien à lire, faut remonter maintenant !
Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.
268 Zéros connectés |
9 requêtes |
0.2817s (0.2631s)
