Mes difficultés d'apprentissage face au C++

Pour tout ce qui est fan arts, homebrew, shooters codés à la main, rip de sprites, doujins et toute autre productions artistiques ou logicielles faites maison.
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Bon... Devant les difficultés que j'ai rencontré sur comment fonctionne le C++, je voulais jeter un oeil sur les prototypes fournis avec LES bibliothèques de BASE du langage.

D'ailleurs, c'est neuf ca... Je lisais partout, STL... Bibliothèque standard...
Pourquoi personne n'a expliqué qu'il y avait aussi de base, iostream et pleins d'autres bibliothèques et que tout n'était pas inclus dans la STL ?

D'ailleurs, prototype, c'est aussi un nouveau mot dans mon vocabulaire de programmation. Ce qui n'a franchement pas aidé à ma recherche d'infos sur internet. ( avant je croyais que ca ne désignait QUE les fonctions que l'on créait en entête )

Et c'est la lecture d'un livre sur le C++ qui m'a permit de comprendre ca.
Du coup, y a beaucoup de choses qui se sont éclaircies.

Est-ce que ca serait parce que j'ai été trop habitué au langage de script de gamemaker et de php ?

Dans un premier temps, je vais me contenter de faire de petites DLL maisons pour gamemaker. ( pour tout ce qui est traitement sonore, gamemaker est à la ramasse par exemple et ce qui est proposé comme DLL ne me convient pas pour ce que j'aimerai faire )

Est-ce qu'il serait aussi utile de mettre en place un topic de vocabulaire générique sur la programmation ?
Parce que ca m'a m'a beaucoup freiné sur mes recherches...

Et serait-il utile aussi de mettre en place un topic pour les livres utiles ? J'ai peiné avant de trouver un livre C++ qui paraisse intéressant et à mon niveau...
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
Radigo
Counter Stop
Messages : 7574
Inscription : 22 mai 2003, 17:31
Localisation : Paris
Contact :

Gunny a écrit :Est-ce qu'il serait aussi utile de mettre en place un topic de vocabulaire générique sur la programmation ?
Parce que ca m'a m'a beaucoup freiné sur mes recherches...
Je ne suis pas contre, mais je serais étonné que ça n'existe pas ailleurs sur internet. Si vraiment tu ne trouves pas je t'invite à le créer (auquel cas on moissonnera certainement une bonne partie des développeurs débutants), sinon il aura sa place dans l'annuaire de dev.
Gunny a écrit :Et serait-il utile aussi de mettre en place un topic pour les livres utiles ? J'ai peiné avant de trouver un livre C++ qui paraisse intéressant et à mon niveau...
Ok un petit topic littérature de développeurs ne ferait pas de mal. Je te laisse présenter ton livre de chevet toi même si tu le souhaites.
"HYPER GAGE : 500%"
Image
chaos
Jeune Pad-awan
Messages : 60
Inscription : 23 mai 2009, 19:54

Coté bouquin je ne saurait te conseiller étant donnée que j'ai suivit des cours, cependant quand tu code il est bon d'avoir de la doc sous la main :

http://www.cplusplus.com/
http://www.cppreference.com/
http://cpp.developpez.com/faq/cpp/ (En Français !)
djvinc
Big Boss Killer
Messages : 767
Inscription : 02 déc. 2005, 00:41
Localisation : Paris

Bon courage en tout cas, et ne sois pas effrayé par la rigueur requise par rapport à PHP, etc., ça devient naturel à force.
Et si tu as des questions théoriques, n'hésite pas à alterner les phases de "je code en essayant que ça marche sans tout comprendre" avec les phases de "j'arrête le bourrinage et je capte pour de vrai les subtilités".

Une autre difficulté avec le C++, c'est qu'en lisant du code compliqué, on a du mal au début à cerner ce qui est vraiment nécessaire de ce qui est du domaine de la fioriture/masturbation de codeur "asocial dans son code".
Avatar de l’utilisateur
-SGN-
Super Grand Nevrosé
Messages : 5990
Inscription : 08 sept. 2006, 13:02
Page Facebook : http://fb.com/leclubdessacs
Localisation : Bruxelles

djvinc
Big Boss Killer
Messages : 767
Inscription : 02 déc. 2005, 00:41
Localisation : Paris

hahaha, superbe !
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Je présenterai le livre une fois que je l'aurai lu jusqu'au stade où je serai capable de programmer qqc.

Je connaissais plus ou moins les sites donnés, mais ca ne m'a pas franchement aidé pour comprendre.

J'en suis à la découverte de la "philosophie" du langage.
J'ai vu qu'on pouvait faire du procédural, mais c'est passer à coté de l'intérêt du C++.
J'ai des notions de ce que c'est l'objet ( au sens large ), mais je suis encore incapable d'élaborer le système d'encapsulation...

Je ne sais pas si ca va finir en lexique de programmation, en tuto, ou autre chose.
Je sais juste que je m'y lance sérieusement, et que cette lecture m'est déjà bénéfique ^^

A terme, je veux faire un jeu en 3D. Donc là, sous le coude, j'ai un livre sur blender ( truc plus ou moins officiel ), un sur le C++ ( écrit par un prof reconnu ), et j'irai prendre le redbook opengl quand j'aurai réussi à apprendre qqc de concret des deux premiers livres ^^ ( et puis le redbook coute un peu cher... Et est en anglais donc je vais attendre un peu )
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Bon... j'ai vu les pointeurs et références...
Super les cas d'école que j'ai vu jusqu'ici... Moi pas comprendre leur machins...

Donc question...
J'ai vu comment utiliser les pointeurs. Un pointeur, pointe vers l'adresse d'une "variable" ( j'ai vu que ca pouvait être pas mal de choses en fait ).

Donc j'ai répondu à la question de "comment utiliser ?". Le problème qui se pose à moi, c'est "Quand ? Pour quelle utilisation ?"

J'ai vu comment instancié des objets ( donc j'ai vu les notions de constructeur/destructeur ). Je sais que je vais pas utiliser les bon termes techniques, mais en dehors des "conteneurs" ( j'entends par la, les tableaux et les objets, si y a d'autres "conteneurs", je les ai pas vu ou alors je les connais sous un autre nom ), j'arrive pas à trouver vraiment d'utilisation à ces pointeurs... Et c'est pas le bouquin que j'ai sous la main qui m'aide vraiment... Les tutos que je lis ici et là sur le net me renvoient toujours sur les notions de C pour finalement me dire : on verra ca dans les chapitres suivant !!! La bonne blague...

C'est si compliqué que ca de donner l'utilité des pointeurs sur des cas concret ?
Pourquoi aborder le langage C++ avec une approche impérative dans un premier temps pour ensuite basculer totalement vers l'objet ?

Avec gamemaker, j'ai pu entrevoir comment fonctionne l'objet. J'arrive à visualiser le concept de classe et l'utilité de classe dérivée, d'héritage.

C'est moi ou je suis un cas à part dans mon apprentissage ? De l'impératif, j'en ai fait avec GM et php. Si je voulais continuer dans cette voie, j'aurais pris le C... Nan j'ai pris C++ pour faire de l'objet ( et oui, je sais que ce n'est pas un langage purement objet comme Eiffel par exemple ^^ ).

Si je veux taper dans l'objet directe, je me retrouve dans un autre problème... Ca tape trop haut dans les connaissances nécessaires.

Et puis pourquoi choisir une structure plutot qu'une classe ? Dans le bouquin, la seule différence qu'ils font, ca tient en quelques lignes au milieu du chapitre sur les classes... Et puis dans quels cas on va utiliser une structure plutot qu'une classe ?

Ca, ca me fout en rogne... On m'explique pas ce genre de truc... Un mec, la première fois qu'il est confronter au while/for, on lui explique pas pourquoi préféré l'un ou l'autre.

Le switch/if, généralement on en voit pas trop l'utilité...

Et puis pourquoi je bouffe toujours du scolaire ? Mince quoi... Je veux des trucs pour l'autoformation. Marre de l'école... Je l'ai quitté c'est pas pour rien >_< Je suis totalement réfractaire au bourre-crane. J'ai jamais pu retenir les dates en histoire. J'arrive jamais à me souvenir des anniversaires de mes copines.

Coup de gueule :mrgreen:

Mais sinon, y en a qui peuvent m'expliquer les questions que je me pose ? :)
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
Alec
King Fossile
Messages : 15783
Inscription : 12 juil. 2004, 18:04
Localisation : nstc-j

Moi je ne peux que te dire "courage" !
ImageImageImage
Avatar de l’utilisateur
niluge
Radiant Silverpost
Messages : 1247
Inscription : 29 juin 2006, 15:29
Localisation : Above and beyond

Pour les pointeurs, il y a plein d'utilisation

Cas basique : passage par valeur et par adresse

Alors je ne sais pas si tu as essayer, mais en C (et donc en C++) quand tu créé une fonction avec en paramètre d'entré deux variables simple (en gros si c'est pas un pointeur ou un référence) tu transmet en fait une Copie de ces valeurs

exemple :

si tu veux faire une fonction qui inverse la valeur de deux variables :

void switch (int a, int b){
int c = a;
a = b;
b= c;
}

Et bah ça en C(++) ça ne marche pas. Pourquoi ?
Comme je l'ai expliqué en C on passe au fonction une copie des paramètres qui sera local a la fonction.
Dans l'exemple précédent on inverse donc a et b dans la fonction mais ça n'aura pas d'effet la ou a été appelé la fonction (pas sur d'être clair)

A la place on va utiliser des pointeurs pour faire quelque chose du genre :

void switch (int *a, int *b){
int c = *a;
a = *b;
b = c
}

Et la ça marche. Pourquoi ? bah par ce qu'on a transmis une copie de l'adresse de la variable et qu'on va modifier la valeur qui se trouve a cette adresse (si tu as besoins de plus d'explication, n'hesite pas)

Autre cas : L'allocation dynamique de mémoire
Bon alors là c'est plus compliqué, il va peut être falloir que tu regarde plus loin dans ton bouquin
Alors pour faire vite : En C/C++ il n'est pas possible de changer la taille d'un tableau une fois celui définis. La taille doit être constante. Hors, dans le cas ou tu doit recevoir une chaine de caractère dont tu ne connais pas la taille (mais ça marche pour autre chose que les chaine de caractère hein), tu ne vas pas t'amuser a définir un tableau de 10000000000 caractères. Donc ce qu'on fait, c'est qu'on créé un pointeur vers un char

char *myString = null; // toujours initialiser ses variables

ensuite on récupère la taille de la chaine d'une manière ou d'une autre (info passé par le protocole réseau par exemple)

int myStringLength = stringLength;

et ensuite tu alloue dynamiquement un espace mémoire de la bonne taille pour ta chaine de caractères :

myString = malloc (myStringLength * sizeof(char));

et voila, tu a un pointeur sur un espace mémoire suffisant pour ta chaine de caractères. Par contre une fois que l'espace n'est plus nécessaire, il faut absolument libérer cet espace mémoire avec free:

free (myString);

Bon par contre pour cette exemple, je suis partie dans du C pure, en C++ je crois qu'il y a autre chose que malloc et free a utiliser.
Il faut aussi savoir qu'il est possible de re-dimensionner un tableau dynamique.
Quelques conseils :
- toujours tester vers quoi pointe un pointeur avant de l'utiliser (vérifie que diffèrent de null)
- Toujours faire attention a ne pas écrire en dehors de l'espace allouer a un pointeur (sinon ton programme crash mechament)


bon la j'ai fait rapide, il y a certainement d'autre chose a voire (comme les référence qui sont des sorte de pointeurs simplifié, les pointeurs avec les structures etc)

Si tu as des question hésite pas a me mp, on pourra éventuellement passer par msn ou autre
Avatar de l’utilisateur
-SGN-
Super Grand Nevrosé
Messages : 5990
Inscription : 08 sept. 2006, 13:02
Page Facebook : http://fb.com/leclubdessacs
Localisation : Bruxelles

Je pense que vu ton niveau en prog' (je ne dis pas ça de façon désobligeante hein) tu devrais déjà faire tes griffes sur le C ANSI et attendre de maîtriser bien les bases de la programmation structurée (fonctions, headers, listes chaînées etc.) avant de te mettre au C++.
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Bon, j'ai recu mon nouveau livre, et il a l'air bien mieux rien que sur la préface ^^
On verra ce que ca donne et si ca répond à mes questions ^^
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Grâce à mon nouveau livre, je compris la différence entre struct et class :D
struct est hérité du C et ne devrait être utilisé QUE dans le cas où l'on souhaite incorporé du code C nécessitant struct.

L'auteur n'a pas encore découper les pointeurs...

Mais alors quel plaisir de comprendre les mécanismes de C++ avec ce livre :)
Il explique bien plus de choses même si je ne comprend pas tout du premier coup.
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
-SGN-
Super Grand Nevrosé
Messages : 5990
Inscription : 08 sept. 2006, 13:02
Page Facebook : http://fb.com/leclubdessacs
Localisation : Bruxelles

Le C++ n'est pas vraiment un langage objet, il s'agit d'une surcouche du C ANSI qui implémente une gestion simplifiée de création / allocation /dé-allocation de structures wrappant des pointeurs de fonctions (les fameuses "méthodes") ; on peut ainsi programmer avec une approche "objet" en manipulant des structures déguisées en classes, la résultante adaptée à des projets ambitieux lisibles, bien construits et maintenables mais pas nécessairement optimisés (sauf pour les cracos qui maîtrisent à fond l'optimisation mémoire et les sucreries genre Boost) ; la bonne nouvelle c'est que de nos jours l'optimisation on s'en bat les couilles tant nos bécanes sont puissantes, la mauvaise c'est que beaucoup de programmeurs qui attaquent direct le C++ sans passer par la case C ne comprennent pas bien à quelle point la facilité du new et du delete sont autant de pièges amenant à bien des choses laborieuses telles que les fuites mémoire, les null pointer etc.
wondersonic
As du Slalom
Messages : 176
Inscription : 24 juil. 2010, 18:11
Localisation : France
Contact :

-SGN- a écrit :la mauvaise c'est que beaucoup de programmeurs qui attaquent direct le C++ sans passer par la case C ne comprennent pas bien à quelle point la facilité du new et du delete sont autant de pièges amenant à bien des choses laborieuses telles que les fuites mémoire, les null pointer etc.
C'est pour ca aussi que j'aime le Java :)
Avatar de l’utilisateur
-SGN-
Super Grand Nevrosé
Messages : 5990
Inscription : 08 sept. 2006, 13:02
Page Facebook : http://fb.com/leclubdessacs
Localisation : Bruxelles

Bah tiens, le java et son garbage collector aléatoire, niveau gestion de la mémoire c'est pire que tout! C'est bien pour faire des applis, mais pour les jeux c'est une catastrophe!
wondersonic
As du Slalom
Messages : 176
Inscription : 24 juil. 2010, 18:11
Localisation : France
Contact :

-SGN- a écrit :Bah tiens, le java et son garbage collector aléatoire, niveau gestion de la mémoire c'est pire que tout! C'est bien pour faire des applis, mais pour les jeux c'est une catastrophe!
Ca c'était avant. C'est ce qu'on appelle les "vieilles rumeurs". Pour info, je viens de passer au G1 sur mon jeu, résultat => aucun lag du au gc.

Auparavant, je devais optimiser l'allocation mémoire en utilisant des pools plutôt que d'instancier tout le temps de nouveaux objets et j'avais quelques lags (catastrophiques pour un framerate de 60 fps).

Honnêtement, même si le G1 n'est pas encore tout à fait sec, je peux dire qu'il vaut le coup (à partir de la version 1.6.0_21).

Pour plus d'infos :

- http://www.drdobbs.com/java/219401061;j ... 4ATMY32JVN
- http://blog.xebia.fr/2008/03/12/gc-gene ... irst-jdk7/

A noter que l'optimisation par pool reste cependant nécessaire (ca fait plus propre de recycler ses objets que d'en réallouer aveuglément) !

WS
Onaryc
Brute du bouton A
Messages : 219
Inscription : 18 juin 2008, 23:32

Gunny a écrit :Donc question...
J'ai vu comment utiliser les pointeurs. Un pointeur, pointe vers l'adresse d'une "variable" ( j'ai vu que ca pouvait être pas mal de choses en fait ).
Le pointeur est une variable contenant une adresse mémoire. Il peut pointer sur une variable, une fonction, ...
Donc j'ai répondu à la question de "comment utiliser ?". Le problème qui se pose à moi, c'est "Quand ? Pour quelle utilisation ?"
Normalement, en c++, tu as moyen de ne ... jamais les utiliser (ou rarement). Utilise plutôt les références, ... (mais ça demande un peu d'expérience)

Sinon effectivement, débuter direct par le C++, qui est loin d'être un langage simple/bien pensé/... c'est pas forcément, amha, une bonne idée. Je me suis mis à lua y a pas longtemps, et je le trouve plutôt sympa. En plus avec le framework LOVE http://love2d.org/, on peut se faire des ptits jeux sympa. Et y rien de mieux pour apprendre un langage qu'un ptit projet perso pour se faire la main...
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Pourquoi obligatoirement passer par C pour le C++ ?
On retrouve les pointeurs, les références...
On retrouve une retro compatibilité mais ca s'arrête là...
Partout, je lis : Faut pas faire comme en C avec le C++ ! Ce qui ne veut pas dire qu'on interdit le procédural en C++. ( meme mon autre bouquin super mauvais le dit... Y a qu'a voir ! )

C'est ce qui ressort de mes lectures :D
De plus, le bouquin que je lis, il part de base sans aucune notion en C.
Là, je code du procédural en C++. Je compile, je fais des conneries ( gamemaker et ces mauvaises manies :D ), je debug. Fin je m'éclate sans être passé par le C et devoir carrément oublié certains aspect du C qui sont obsolète en C++ ( comme le dit l'auteur de mon livre ! Alors oui, ca fait limite bible pour moi... Mais bon il est franchement bon comme bouquin :D )

Je cherche de la doc sur le net, et donc je vais souvent sur developpez.com. La majorité des liens y font référence ca doit pas être un hazard. Et meme là bas, il le disent... Le chemin C -> C++ , c'est mal quand c'est dit que C++ est une surcouche, évolution du C pour faire de l'objet... Ce que j'ai retenu, à la rigueur, c'est que Pascal -> C++ serait plus indiqué que C -> C++...

J'ai décidé d'attaquer le C++ d'emblée. J'ai expliqué pourquoi. Que je m'y casse les dents c'est normal et je le savais.

Les pointeurs/référence, c'est assez casse-gueule au début... Et j'en suis toujours au début :D
Et me dire que l'on reconnait quand les utiliser avec l'expérience, ca m'aide franchement pas à comprendre quand les utiliser :) Et c'est pas les cas d'école où l'on veut faire passer la valeur A dans la valeur B et inversement qui vont m'y aider.

par exemple :
&var = var1 ; est une référence à un machin. ( ca peut etre tout un tas de trucs )
var1 = &var ; est un renvoie d'adresse
*pt1 = var1; pointeur qui contient une adresse
var1= *pt1 ; déréférencement de pt1. ( je crois que ca renvoie la valeur contenue dans l'adresse )
La définition de &/* suivant le contexte, c'est super casse gueule. C'est une difficulté du C++ à laquelle je dois faire face. ( Et pas du C, je n'apprend pas ce langage... laissez le à sa place zut )

Enfin bon... Laisser moi tranquille dans ma manière d'apprendre, si j'ai des questions, je viendrais les poser. Niluge m'a très bien expliquer quelques points sur la philosophie objet que j'avais du mal à appréhender.
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Onaryc
Brute du bouton A
Messages : 219
Inscription : 18 juin 2008, 23:32

Gunny a écrit : Pourquoi obligatoirement passer par C pour le C++ ?
Pour pas se prendre frontalement ET les pointeurs ET l'approche objet (ET l'algo quand on est vraiment débutant, mais amha, il vaut mieux ne pas commencer par le C)...
Gunny a écrit : J'ai décidé d'attaquer le C++ d'emblée. J'ai expliqué pourquoi.
Tout le monde n'est pas sensé suivre tous tes posts (en tout cas c'est mon cas)
Gunny a écrit : Et me dire que l'on reconnait quand les utiliser avec l'expérience, ca m'aide franchement pas à comprendre quand les utiliser :)
J'imagine que c'est pour moi, hélas, toi qui dis toi même que tu ne veux pas d'un apprentissage scolaire, l'utilisation (correct) d'un langage, pour la plupart des gens, est souvent synonyme d'expérience (langages, conception, ...) C'est surement pourquoi tu as du mal à trouver des exemples (ou que tu as du mal à les reconnaître),...

Concernant les pointeurs, évite, tout simplement, et utilise les références pour le passage de paramètre dans les fonctions/méthodes/procédures...
Gunny a écrit : Enfin bon... Laisser moi tranquille dans ma manière d'apprendre, si j'ai des questions, je viendrais les poser. Niluge m'a très bien expliquer quelques points sur la philosophie objet que j'avais du mal à appréhender.
Ben je te laisse tranquille, t'as l'air d'avoir toute l'aide nécessaire, tcho
Avatar de l’utilisateur
-SGN-
Super Grand Nevrosé
Messages : 5990
Inscription : 08 sept. 2006, 13:02
Page Facebook : http://fb.com/leclubdessacs
Localisation : Bruxelles

Mon premier langage (j'avais 14 ans) c'était le QBasic, puis le TI-Basic (16 ans), tout pour mal débuter dans sa vie de programmeur! Ensuite j'ai vraiment découvert la programmation structurée avec le Turbo Pascal 7 (18 ans), puis la programmation orientée calcul avec le Fortran 77, puis la programmation sans filet avec le C, l'objet avec le C++, l'assembleur en programmant des microcontrôleurs 8 bits mais aussi avec de l'assembleur VAX (le seul assembleur gérant nativement des strings!) et même en programmant des DSP (digital signal processing) pour faire des filtres et codecs, je me suis initié aux joies du langage de script avec les différents shell UNIX (SH, BASH et KSH), les langages micromou à la noix (C#, VB (eurk!)), pour le fun j'ai aussi fait du script tout-objet en Ruby pour faire du sniffing de paquets IP sur les réseaux LAN, du script orienté parsing avec Python, du web avec PHP, puis la vie professionnelle m'a plongé dans le monde impitoyable de JAVA J2EE et ses frameworks, puis j'ai sauvé ma peau pour revenir à des choses plus en adéquations avec mes goûts puisque actuellement j'ai le choix des armes pour faire mon travail et utilise essentiellement SQL, Perl et KSH.

Donc bon j'estime avoir un minimum de recul par rapport aux langages, leurs atouts et leurs désavantages, mais si ça t'ennuie que je donne mon avis et participe à tes topics, pas de soucis je vais gagner de temps! Tcho!
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Je ne remet en cause ni vos compétences, ni vos savoir ^^
( et déballer les connaissances pour impressionner, ca marche pas sur moi. Je sais que je suis débutant et qu'il y en a beaucoup qui sont meme plus jeune que moi et qui sont bien plus compétent que moi )

Mais me dire des choses que j'ai déjà dit :
Gunny a écrit:
Donc question...
J'ai vu comment utiliser les pointeurs. Un pointeur, pointe vers l'adresse d'une "variable" ( j'ai vu que ca pouvait être pas mal de choses en fait ).


Le pointeur est une variable contenant une adresse mémoire. Il peut pointer sur une variable, une fonction, ...
C'est plus précis, mais c'est ce que je dis avec mes mots de débutant ;)

Me dire aussi d'apprendre C pour mieux appréhender C++, ca m'aide pas dans le cadre de ma démarche où j'attaque le C++ de front :)

Et je suis un vilain têtu :p ( faut vraiment insister et argumenter pour que je veuille bien remettre en question quelque chose )
Je ne suis pas diplomate pour un sou, je dis les choses tel qu'elles sont.

Et puis avouez, que quand même, ca m'aide pas ces pseudos débat sur la gestion mémoire Java VS C++. Si encore ca rentrait dans le cadre d'un choix de langage... Mais je l'ai déjà choisi. J'ai déjà entrepris mon apprentissage.
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
-SGN-
Super Grand Nevrosé
Messages : 5990
Inscription : 08 sept. 2006, 13:02
Page Facebook : http://fb.com/leclubdessacs
Localisation : Bruxelles

Commencer par le C++ c'est possible, mais sans griller les étapes. Commence déjà par faire des petits bouts de code avec des structures itératives et des listes chaînées, une fois que tu maîtriseras ça attaque la phase objet. Mais le plus important, ce n'est pas de lire lire lire mais de coder coder coder!!!!
Onaryc
Brute du bouton A
Messages : 219
Inscription : 18 juin 2008, 23:32

Gunny a écrit :Je ne remet en cause ni vos compétences, ni vos savoir ^^
( et déballer les connaissances pour impressionner, ca marche pas sur moi. Je sais que je suis débutant et qu'il y en a beaucoup qui sont meme plus jeune que moi et qui sont bien plus compétent que moi )
Je ne pense pas que c'était pour impressionner mais pour donner plus de légitimité à ses propos...
Gunny a écrit :
Mais me dire des choses que j'ai déjà dit :
...
C'est plus précis, mais c'est ce que je dis avec mes mots de débutant ;)
C'est pas plus précis, ta définition n'est pas la bonne (ce qui ne veut pas dire que la mienne soit complète)...
Gunny a écrit : Je ne suis pas diplomate pour un sou, je dis les choses tel qu'elles sont.
Ben quand on demande on écoute... non? Après t'en fais ce que tu veux, personne n'a la science infuse... Pis les "je dis les choses tel qu'elles sont", c'est le genre de formule toute faite qui m'énerve (c'est un peu plus complexe que ça)... Sur ce, tcho²

PS : je réponds juste pask au taf je suis sur un bug à la con qui me fait chier et que ta réponse ne m'apporte pas la paix intérieur espérée :'(, je ne veux pas partir dans un débat stérile, pas la peine de me répondre...
Avatar de l’utilisateur
Henes
Ampoule aux Pouces
Messages : 474
Inscription : 10 juil. 2004, 14:25
Localisation : Paris (94)
Contact :

Gunny a écrit : Et me dire que l'on reconnait quand les utiliser avec l'expérience, ca m'aide franchement pas à comprendre quand les utiliser :)
C'est peut-être parce que tu as sauté certaines étapes essentielles...

Quand tu passes un argument à une fonction, celui ci est chargé dans un registre ou copié sur la pile. Dans le cas d'une structure ou d'un objet c'est la plupart du temps un gaspillage de resource et consomme inutilement de la pile (qui n'est pas infinie).
C'est lent et, dans certaines conditions (plus de pile), ça plante.
Donc on passe simplement son adresse (via un pointeur ou une référence).
Gunny a écrit : La définition de &/* suivant le contexte, c'est super casse gueule. C'est une difficulté du C++ à laquelle je dois faire face. ( Et pas du C, je n'apprend pas ce langage... laissez le à sa place zut )
Les références sont des pointeurs que le langage te fait manipuler comme si cela n'en était pas. Utiliser l'un ou l'autre est uniquement une affaire de préférence.
Certains trouvent que les références rendent le code plus lisible (plus de "*" et "->", que des "."). D'autres que la compréhension du source en est dégradée car on ne connait plus la portée des variables (locales ? partagées avec l'appelant ?).
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Ca fait un peu loin, mais je progresse.

A force de lectures ( code source, livres, tuto ), réflexions, pratique avec gamemaker et le C++...

J'arrive ENFIN, à visualiser l'architecture d'un moteur de jeu :D
Il m'aura fallu du temps... Mais ca reste encore assez flou, va falloir pratiquer. Mais maintenant que j'ai une direction plus ou moins claire dans ma tête, ca devrait aller plus vite :)

J'arrive à manipuler timidement une bibliothèque ( SFML ), configurer le compilo et le linker pour un projet.

Coté paradigme, j'en suis resté à l'objet "basique". Je ne comprend pas encore l'intérêt et la mise ne place des fonction/classes virtuelles et pour ce qui est de l'héritage, j'en suis au niveau basique ( j'ai compris les relations "est-un" et "a-un" expliqués dans mon livre ).

J'ai relativement peu codé pendant cette année de réflexion, j'arrivais pas à intégrer les notions. Ce qui est pointeur et référence, ca passe assez bien même si j'ai des difficultés à les manipuler correctement.

Mon problème c'était que je codais mais sans réellement comprendre les concepts derrières. Un an pour assimiler les bases... Soit je m'y suis mal pris, et je vous donne le droit de me taper sur la tête :)) , soit c'est normal que ca prenne autant de temps.

Je savais que ca allait être long et difficile, mais à ce point...
Donc prochain objectif, faire un petit programme qui ébauche un petit moteur de jeu. ( afficher une fenêtre, une interface, récupérer les inputs, jouer du son ca sera déjà pas mal )

Hop, direction papier et crayon :))
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Avatar de l’utilisateur
Akaimakai
Modérateur
Messages : 3003
Inscription : 20 août 2005, 18:26
Localisation : Paris
Contact :

Super progression tout de même. Commencer à pouvoir programmer un moteur de jeu, c'est du très gros travail. Félicitations, et j'ai hâte d'en voir plus prochainement.
Sinon tu développes un moteur 3D ou 2D. Si c'est un moteur 3D, tu comptes utiliser du BSP ou des models, type maya, 3dsmax etc... ?

Bon courage à toi en tout cas !

De mon côté, je continue à bosser le level design (ma grande obsession ! ^_^) sur source (via hammer), et je viens tranquillement de me mettre à l'unreal engine 3 qui d'emblée m'a bien pété à la gueule côté sur sa capacité à calculer la lumière en temps réel. Et d'un point de vue purement théorique, plus j'avance et plus j'ai de questions sur la composition du rythme, de l'espace, de la circulation mais aussi l'utilisation de la lumière, du son...
"Easy to learn and difficult to master"

Nolan Bushnell
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Je vais déjà voir pour la 2D...
Si jamais je passe à la 3D, je vais me contenter d'objets non animés ( le .obj exporté via Blender est très bien pour ca ^^ ).

Mais pour le moment, ca sera un petit moteur 2D.
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Après avoir maté quelques moteurs de jeux, j'ai commencé à regardé ce dont j'avais besoin et comment organiser le tout, j'ai tenté de faire des diagrammes, je suis toujours dans le flou...

Alors j'ai identifié ceci :

-contexte logiciel ( la fenêtre principale qui va instancié le jeu )
-moteur de jeu ( le truc qui qui contient la boucle principale et qui gère une partie )
-moteur physique ( le truc qui gère les collisions )
-moteur sonore ( le truc qui gère le son )
-moteur graphique ( qui gère l'affichage )
-moteur IA ( qui gère l'IA )
-moteur d'évènement ( un truc qui va plus ou moins coordonner tout le monde )

D'après ma conception ca donne qqc comme ca :

1) Contexte logiciel lancé, instanciation du jeu. Affichage de l'interface ( donc initialisation et instanciation du moteur graphique ) pour la config et lancer une partie.

2) Lancement d'une partie, instanciation d'une partie. Initialisation et instanciation des moteurs et de leurs sous-parties ( le moteur graphique qui gère tout l'affichage gère le GUI, chargement de ressource graphiques, dessin et affichage de la zone de jeu par exemple ).

Et là, ca se gate... Car j'ai du mal à définir le fonctionnement et la coordination de tout le monde...

Etant habitué au fonctionnement de gamemaker, je pensais reprendre son principe ^^
Ce qui veut dire, d'après ma compréhension, que le moteur d'évènement est le maître d'oeuvre, qu'il gère les inputs du joueur et que tous les moteurs devront lui envoyer en "callback" les résultats pour le calcul de la frame. Qu'ensuite il dise au moteur graphique : "J'ai fini la mise à jour des données, fait ton boulot; met à jour l'affichage".

Est-ce que je me suis planté quelque part ? J'en suis encore qu'à dessiner l'architecture du moteur de jeu et de ces composants ^^
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Gunny
Empereur Bydo
Messages : 3404
Inscription : 15 mai 2006, 15:26
Localisation : Rayon chaussettes du Kiabi du coin
Contact :

Désolé pour le monologue :P

Donc petite avancée, j'ai fouillé dans ma tête à savoir :"Qu'est-ce que je connais qui pourrait m'aider pour construire mon jeu ?"

Et je me suis souvenu que j'avais fait de la conception et programmation d'automates programmable...
La voilà la solution !

Plutot que d'apprendre un langage de modélisation que je ne connais pas pour faire sur le papier mon moteur de jeu... Jvais utiliser le grafcet que je connais :D

Bon, j'ai commencé, et je commence à avoir des grafcet plutot gros comparé à ce que j'avais fait au lycée... Le seul problème, c'est que c'est une modélisation séquentielle... Ce qui ne colle pas trop avec l'orienté objet, mais ca me permet d'avoir un point de départ :D

Le grafcet pour ceux qui ne savent pas, ca ressemble à ca :

http://louispayen.apinc.org/cours/grafc ... mplexe.gif
Si t'as un truc électronique cassé, ça se passe par là https://www.atelier-electrodd.fr/

-Je comprend rien à ce que tu dis...
-Pas grave... C'est pas en vivant plus longtemps qu'on deviens moins con.
Répondre