Ma propre SDL - C++ - Programmation
Marsh Posté le 15-01-2009 à 23:37:33
Salut zenko,
Je dirais que "sympa, utile, instructif" ne sont pas des motivations suffisantes pour recoder un truc qui marche deja pas mal.
Je passe la majeure partie de mon temps de programmation a lire de la doc (et a tenter de rentrer dans le cerveau tordu qui a pondu le code), pas a coder.
La sdl c est une API construite sur un tas de petites briques que tu ne devrais regarder que le jour ou tu seras effectivement limite par la SDL.
T as pas a lire les fichiers source de SDL. En general tu prends leur tutorial ou les applications d exemple et tu regardes comment les mecs appellent leur librairie dans une appli.
Quand tu veux faire un truc un peu plus specifique, tu vas dans la doc et assez souvent t auras une fonction qui fera presque ce que tu veux.
Ex : tu veux lire les images de "tous les formats".... tu peux utiliser FreeImage par exemple. Les mecs de FreeImage se sont amuses a fournir une interface commune pour lire tout plein de formats. Il ont simplement cache les librairies libpng libjpeg et autres derriere leur interface. Je dirais que libpng a code un truc sur la libc directement.
Donc la tu vois une pile de services a 2 niveaux sur laquelle tu vas pouvoir batir des trucs. A moins de pouvoir faire vraiment mieux ca ne sert a rien de se reposer la question de comment abstraire tous les decodeurs graphiques du monde.
Marsh Posté le 16-01-2009 à 00:28:32
Mon but n'est pas de faire une librairie qui soit mieux que SDL ni même que Qt ou autre...
Je veux juste des informations sur le principe et la démarche à suivre pour m'exercer et comprendre le code de base ainsi qu'améliorer mes connaissance. S'il faut que j'apprenne l'API windows ou encore l'assembleur, je le ferai.
Je ne veut pas remplacer une librairie existante mais je veux comprenne comment cela fonctionne et m'excercer. Et si je peux copier (ou du moins presque) les fonctionnalités d'une librairie qui existe déjà, j'améliorerai mon niveau en programmation.
Le titre "Ma propre SDL" ne signifie pas que je veux faire une SDL évolué version moi, mais juste que j'aimerai être capable de créer une librairie, de savoir comment l'utiliser en tant que telle et non juste en tant que fichiers h inclus.
J'ai choisit SDL car c'est une librairie très bien connu de presque (pour ne pas dire tous) tous les programmeur C/C++...
Voilà mes raisons.
Après, que l'on me dise que je ne suit pas motivé, cela ne veut rien dire, personne ne me voir, personne ne me connais (et vice versa) alors qu'est ce qui dit que je ne suis pas autant motivé que celui qui a eu l'idée de la conception de la SDL???
Voilà, j'espère que ma motivation s'en ressort maintenant et j'espère pouvoir avoir des renseignements voire de l'aide si certain sont autant vraiment motivé.
Merci par avance pour vos conseils
Marsh Posté le 16-01-2009 à 00:40:49
Commence déjà par maitriser SDL/Qt/Gtk/cairo/etc, ensuite voir comment les étendre (nouveau widget, etc) et ensuite il sera temps de voir comment descendre en dessous.
Marsh Posté le 16-01-2009 à 08:55:38
D'accord
Je ne m'attendais pas à autant de complication, je pensais que cela est (en quelque sorte) simple mais vraiment très long...
Je suis débutant en C alors...
J'ai un projet avec un ami de créer une RPG 2D et je me suis dit qu'essayer de faire un éditeur de coloration syntaxique serait bien utile ...
Qu'en pensez-vous contrairement à moi qui n'a (quasi) aucune expérience ?
Marsh Posté le 16-01-2009 à 10:57:23
Bah j en pense que SDL openGL cegui sont de bonnes briques qu il n est pas necessaire de recoder.
Je comprends bien ton probleme.
- T en es au stade ou savoir coder pour toi signifie maitriser la syntaxe du language. Je pense que t as plutot interet a lire du code a ce stade (de gros projets opensource genre irrlicht par ex.)
- Ensuite tu vas etre au stade ou savoir coder va signifier savoir structurer ton code pour diviser un gros pb en plusieurs sous pbs.
- Finalement tu vas realiser que savoir coder ca signifie identifier ce qui existe deja pour s appuyer sur le taff des autres (qui ne sera jamais parfait... mais le tien l est il ? )
Citation : S'il faut que j'apprenne l'API windows ou encore l'assembleur, je le ferai. |
Fais toi plaisir....
Ca montre en tout cas que t as pas compris... on n apprend pas l API windows. Quand on a besoin de la brique on va lire la doc et on s en sert.
On n est pas a l ecole, il n y a pas de par coeur. Je me sers de la libstdc++ tous les jours... mais mon firefox est en permanence ouvert sur la doc online. Je pense que j apprendrai jamais le nom de la fonction a appeler pour tel ou tel truc.
Si je veux trier une liste... bah je sais que ca se dit vraisemblablement sort et que ya des chances qu un mec l ai deja code donc je vais dans la ref et je cherche.
A quoi ca me sert de stocker l info dans mon cerveau ?
Marsh Posté le 16-01-2009 à 12:35:34
Il m'a aussi été conseillé de coder un projet du genre RPG ou encore un éditeur de texte simple...
Je ne sais pas si c'est la meilleure solution mais je pense que des programmeurs plus expérimentés doivent certainement me donner des trucs qui sont réellement instructif..
Qui plus est, mon but n'est pas de coder bien dans un seul langage mais bien dans plusieurs et surtout, de connaitre plein de langage, et j'aimerais bien comprendre l'originel, l'informatique me passionne au plus haut point et donc, si l'humain en était capable, je coderai volontiers en langage binaire mais bon, faut pas trop rêver non, je me fait pas d'illusions ^^
J'aimerais être un codeur compétent en plusieurs langages et donc je passe énormément de temps à apprendre et pas tant à programmer, ce qui est une grosse erreur... C'est pourquoi j'avais penser coder ma propre librairie en C/C++ pour voir comment tout cela fonctionne mais après, si vous avez un meilleur exercice à me proposer pour que je m'améliore, je suivrai vos conseil, je ne suis qu'un débutant et j'ai soif d'apprendre...
En tout cas, merci pour vos critiques es conseils...
chewif -> Désolé si je t'ai offensé mais je m'étais trompé
Marsh Posté le 16-01-2009 à 14:34:01
>> J'aimerais être un codeur compétent en plusieurs langages et donc je passe énormément de temps à apprendre et pas tant à programmer, ce qui est une grosse erreur...
C'est vrai, mais vaut mieux que tu codes un jeu, ou bien un système de fenêtrage basé sur OpenGL, ou alors que tu étudies le code d'une lib existante (mais ça risque d'être difficile pour une lib complexe comme SDL), histoire de savoir de quoi tu es capable (et c'est déjà très formateur).
Si tu t'attaques à un premier projet trop compliqué, tu risques de te décourager avant qu'il voit le jour.
Marsh Posté le 16-01-2009 à 14:52:26
el muchacho a écrit : >> J'aimerais être un codeur compétent en plusieurs langages et donc je passe énormément de temps à apprendre et pas tant à programmer, ce qui est une grosse erreur... |
Bonne idée ça, c'est bon moyen de jouer avec la POO et t'as des résultats dès le début donc pas trop ingrat à coder
(Contrairement à un recodage de la SDL, ou tu va te tapper des vielles libs immondes, des bugs difficiles à débusquer, ce sera frustrant et t'apprendra rien. Pour ouvrir une fenêtre avec xlib/glx ou gdi/wgl plutôt que la SDL il te faudra 40 lignes au lieu d'une, mais ça se recopie tel que c'est dans ladoc, c'est pas plus intelligent ou plus puissant, c'est juste chiant et imbitable.)
Marsh Posté le 16-01-2009 à 15:19:19
zenko a écrit : |
Ah ah t inquiete ... pas le moins du monde.
Fais de petites applis. Une lib c est un truc particulier. Ca sous entend que t as reflechi aux besoins communs de tout un tas d applications.
Le mieux pour l instant c est de t amuser avec de tout petits trucs.
Marsh Posté le 16-01-2009 à 15:48:03
zenko a écrit : je pensais que cela est (en quelque sorte) simple mais vraiment très long... |
Par expérience, les projets les plus funs sont en général les projets qui permettent d'avoir un résultat rapidement. Recoder un truc type SDL, tu signes pour des mois, voire des années d'emmerdes à te palucher des docs imbitables et mamouthesques, à te farcir des exemples moisis et à écrire des tartines de codes avant d'avoir un truc qui bouge à l'écran. Ta motivation va décroitre exponentiellement avec le temps.
Ça aurait nettement plus de chance de succès si tu avais un autre intérêt que l'apprentissage de la programmation. Genre dans le but de porter une application. Ça permettrait d'avoir un but clair et précis et de mesurer les progrès de manière un peu plus visible. Car sans but précis (ce qui est plus ou moins le cas ici), tu vas t'égarer et disperser tes efforts. Au final plutôt que d'avoir une bibliothèque qui répond à un besoin réel, tu vas avoir un truc mal fini, qui ne sert à pratiquement personne.
Je dirais même que le manque de but clair et précis, c'est ce qui en général signe l'arrêt de mort de ce genre de projet. Suffit de voir le nombre de cadavre de projets similaires sur sourceforge ou freshmeat. Des projets qui semblent intéressant sur le papier, se révèlent bien souvent extrêmement chiant à réaliser. Je serais presque tenté de dire que c'est normal, parce que si ce n'était pas chiant, il n'y aurait aucun intérêt de faire une bibliothèque ....
Marsh Posté le 16-01-2009 à 21:31:45
D'accord, merci à tous ^^
Quoi qu'il en soit, j'aimerais savoir ?
LE RPG serait-il un bon entrainement?
Quant à l'éditeur de texte???
Si vous connaissez des projets "tout con" mais qui demande réflexion, cela ne serait pas de refus ^^
Je suppose que je vais trouver pas mal d'exo sur le net mais en générale, on retrouve les codes sources d'un gars qui a tenté de faire un prog...
J'ai trouver quelques exos vite fait mais j'ai un gros problème. Je me dis souvent ceci : "Ouais, mais j'aime pas le finale..." (par exemple, coder une jeu pacman ne m'intéresse pas on va dire...
J'espère que ces 2 projets seraient amplement suffisant pour un débutant comme moi
En tout cas, merci encore
Marsh Posté le 16-01-2009 à 21:44:37
Ouais, ça peut être fun un jeu. Mais attention encore une fois de ne pas avoir la folie des grandeurs. Il faut savoir rester modeste et ne pas essayer de concurencer des programmeurs professionnels qui font ça 8h/jour et 5j/7. Si t'es nul en graphisme ou en son, contente toi du strict minimum et démerde toi pour que le gameplay ne soit pas trop pourri.
À la fac, une équipe s'était amusée à refaire le jeu Transplant (sur Amiga pour les connaisseurs). Ils étaient nuls en graphisme et connaissaient rien en son. Qu'importe, ils l'avaient refait en mode réseau avec de la 2D fil de fer, ça restait fun à jouer avec 4 ou 5 personnes. Le hic, c'est qu'on leur avait imposé CORBA (projet de système distribué), techno moisie qui avait complètement pourri le code source.
Marsh Posté le 17-01-2009 à 02:09:37
Et bah, en réalité, disons que je ne suis pas seul sur le RPG, il sera en 2D et il y a un programmeur expérimenté en plus de moi
Mais je veux aussi créer un programme seul de toute pièce pour améliorer mes propres compétences...
Merci à tous
Marsh Posté le 15-01-2009 à 20:03:59
Bonjour ou plutôt bonsoir à tous
Je suis débutant en C/C++, je suis à la fin du tuto du siteduzero (pour ceux qui verrait à peu près mon niveau)
Je me suis dit que créer une librairie comme la librairie SDL pourrait être sympa, utile et surtout, très instructif...
Alors voilà, je souhaite me lancer mais je coince...
J'ai posté une topic sur le sdz ici où j'ai déjà eu quelques conseils et quelques notions de l'importance que représente ce projet...
Je vous indique ce que j'aimerais faire :
- Afficher une fenêtre
- Afficher une image (pour tous les formats mais je vais commencer par un seul déjà )
- Gérer les chaînes de caractères, les afficher et les saisir
- Gérer les évènements clavier et souris
Et optionnellement, gérer, créer, afficher et connecter des Widgets...
Et tout cela, en POO (C++ donc )
Voici donc ce que j'aimerai faire mais j'ai énormément de mal à concevoir le code d'un tel projet. Je sais que ce sera long, compliqué et que je risque fortement de m'arracher les cheveux voire même me suicider mais c'est quelque chose que j'ai vraiment envie de réaliser même s'il me faut 2 and pour coder cela...
Si par le plus grand des hasard un programmeur (disons assez expérimenter pour m'expliquer) souhaiterait réaliser le même projet et qu'il veut bien de mon aide, je l'en remercie par avance de tout ce que je vais apprendre
J'ai déjà effectuer pas mal de recherche sur le net, j'ai essayer de comprendre les fichiers sources de la librairie SDL (et même Qt mais j'ai pas tenu plus de 5 minutes XD) mais je reste toujours au point 0...
Sur ce, tous les conseils sont les bienvenus et je vous remercie tous par avance