IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Je lance une petite chaîne youtube sur le C++ et la SFML.


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Cimentage
    Inscrit en
    Septembre 2014
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Cimentage
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2014
    Messages : 44
    Points : 30
    Points
    30
    Par défaut Je lance une petite chaîne youtube sur le C++ et la SFML.
    Salut à tous !

    Je lance une petite chaîne Youtube afin de faire parvenir mes petites connaissances au fil de mon apprentissage à d'autres personnes débutantes comme moi qui n'auraient pas la patience et/ou le courage de s'initier en suivant des tutoriaux anglophones, je compte faire très régulièrement des vidéos, au moins 3-4 par semaine sur des petits concepts simples à assimiler.

    La majeure partie de mes vidéos, seront dédiées à la programmation avec la librairie SFML mais pas uniquement, néanmoins !

    Si vous avez la moindre suggestion, n'hésitez pas ! :-)

    https://www.youtube.com/channel/UC8W...6Zb9aMecakbBWg

    @bientôt !

  2. #2
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    Aujourd'hui je me demande s'il ne faudrait pas prendre des habitudes plus "modernes", j'ai parfois l'impression d'être dans les années '80 quand je vois des tutos

    ++x au lieu de x++;
    wstring au lieu de string (et wchar_t au lieu de char);
    Concernant std::vector, tout en minuscules, y compris dans le titre du tuto. STD::Vector c'est moyen

    Et puis, quand on fait des boucles sur des containers, on peut déjà intoduire la syntaxe au gout du jour for(int i : vecTab[y]) (et, sois-dit en passant, je me demande si tu n'as pas fait une erreur dans les deux boucles imbriquées, essaye y de 0 à 20 et x de 0 à 5 pour voir...)

    Voilà voilà

  3. #3
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 379
    Points
    11 379
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par camboui Voir le message
    wstring au lieu de string (et wchar_t au lieu de char);
    Euh... Je ne suis pas du tout d'accord avec toi.
    Si on veut gérer des caractères dans un autre encodage qu'ASCII, on prend le type adapté (char16_t ou char32_t) mais pas wchar_t, à défaut char et std::string seront mieux...
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  4. #4
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2012
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2012
    Messages : 163
    Points : 624
    Points
    624
    Par défaut
    Salut FrostfallDelphi

    Comme tu peux le constater, sur le forum C++, on n'est pas trop bisounours et pétales de rose mais plutôt sodomie à sec avec une poignée de graviers.

    Personnellement, je trouve que l'idée d'illustrer la programmation c++ avec la sfml est tout à fait intéressante, tant sur le plan pédagogique que technique.
    Si tu veux des suggestions, je te conseillerais juste de prendre un peu plus ton temps dans tes explications (ça t'évitera de confondre "distance euclidienne", "périmètre" et "carré autour du point", par exemple...).
    Sinon concernant le ++x au lieu du x++, c'est vraiment du détail (qui en plus n'apporte rien pour des int); et pour la double boucle non il n'y a pas d'erreur : avec une matrice ligne-colonne c'est bien [y][x] pour correspondre au repère de l'écran.

    Bonne continuation dans tes vidéos.

  5. #5
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    Je vois qu'on ne me crois pas. Donc on code

    Voici le code original, qui, par chance, ne plante pas.
    (et, entre parenthèses, les vidéos c'est sympa, mais pour récupérer du code en copié-collé, c'est moins marrant... )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    		std::vector<std::vector<int>> vecTab;
    		for (int y = 0; y < 10; ++y)
    		{
    			std::vector<int> temp;
    			for (int x = 0; x < 10; ++x)
    				temp.push_back(x);
    			vecTab.push_back(temp);
    		}
    		for (int y = 0; y < vecTab[y].size(); ++y)
    		{
    			for (int x = 0; x < vecTab.size(); ++x)
    				std::cout << vecTab[y][x];
    			std::cout << std::endl;
    		}
    Essayez maintenant celui-ci, avec un résultat qui n'est pas celui attendu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    		std::vector<std::vector<int>> vecTab;
    		for (int y = 0; y < 5; ++y)//<- ici changement
    		{
    			std::vector<int> temp;
    			for (int x = 0; x < 20; ++x)//<- ici changement
    				temp.push_back(x);
    			vecTab.push_back(temp);
    		}
    		for (int y = 0; y < vecTab[y].size(); ++y)
    		{
    			for (int x = 0; x < vecTab.size(); ++x)
    				std::cout << vecTab[y][x];
    			std::cout << std::endl;
    		}
    Et voici le code correct en plaçant les bon gardiens des boucles à leur place:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    		std::vector<std::vector<int>> vecTab;
    		for (int y = 0; y < 5; ++y)
    		{
    			std::vector<int> temp;
    			for (int x = 0; x < 20; ++x)
    				temp.push_back(x);
    			vecTab.push_back(temp);
    		}
    		for (int y = 0; y < vecTab.size(); ++y)//<- ici correction
    		{
    			for (int x = 0; x < vecTab[y].size(); ++x)//<- ici correction
    				std::cout << vecTab[y][x];
    			std::cout << std::endl;
    		}
    Je vous laisse juge

    (requête aux admins, dommage qu'on ne puisse pas mettre en évidence une partie du code en mettant en gras ou en colorisant ou autre)

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 965
    Points
    32 965
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par camboui Voir le message
    (requête aux admins, dommage qu'on ne puisse pas mettre en évidence une partie du code en mettant en gras ou en colorisant ou autre)
    Il te suffit d'utiliser les boutons ou BBCode à cet effet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    		std::vector<std::vector<int>> vecTab;
    		for (int y = 0; y < 5; ++y)//<- ici changement
    		{
    			std::vector<int> temp;
    			for (int x = 0; x < 20; ++x)//<- ici changement
    				temp.push_back(x);
    			vecTab.push_back(temp);
    		}
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2012
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2012
    Messages : 163
    Points : 624
    Points
    624
    Par défaut
    Ah oui, tu as raison. J'avais compris que tu parlais de l'ordre des parcours, pas de l'utilisation des tailles...

  8. #8
    Membre à l'essai
    Inscrit en
    Août 2010
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    Bonjour FrostfallDelphi,

    Je m'abonne direct ! Je me suis mis depuis quelques jours sur SFML en C++.

    Hâte pour les prochaines vidéos!

    Merci bien

  9. #9
    Membre confirmé Avatar de athlon64
    Profil pro
    Inscrit en
    Février 2009
    Messages
    243
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 243
    Points : 547
    Points
    547
    Par défaut
    Bonjour, tu devrais pas commencer graduellement ?

    C'est à dire par l'install et la config de SFML puis tu montes en niveau et tu complexifies...

    Tu peux aussi faire des chapitres et les organiser par playlist, sinon c'est un beau sujet, moi je m'étais emmerdé avec GDI+ pour des projets, ce dernier avait des perfs de merde et j’étais pas fan de la SDL...

    je trouve SFML d'une facilité déconcertante.

  10. #10
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    La vidéo peut être un excellent médium mais je doute beaucoup de sa pertinence en programmation. Cette activité demande trop d'inertie intellectuelle et d'itérations pour être assimilée de cette manière.

    J'ai donc visionné tes vidéos dans l'ordre chronologique, en pensant m'ennuyer. Au final pas du tout, c'est assez dynamique (je ne sais pas si tu fais un peu de montage) et le propos est clair dans l'ensemble. Si des vidéos comme les tiennes peuvent mettre le pied à l'étrier à certains simplement en suscitant la curiosité c'est incontestablement un plus. Et c'est déjà une raison valable si ça entretient ta motivation personnelle, puisque tu dis que toi-même tu débutes.


    Première remarque : où sont les sources ? La présence d'un lien - GitLab / Github par exemple - menant vers le code commenté est impérative et permettrait de combiner l'activité de « découverte » avec une phase plus réfléchie de compréhension de code, sans se faire mal aux yeux.

    Oui, car c'est le second point : la résolution est un poil trop basse. Certes c'est du 720 mais la programmation c'est de la rédaction de texte, et la lecture de texte déjà rasterisé puis compressé et upscalé est malaisée.

    Dernière remarque d'ordre général : il ne semble pas y avoir actuellement de fil conducteur de tes vidéos. On pourrait imaginer que chacune décrive une étape de la réalisation d'un petit projet concret au sein d'une playlist dédiée. Un jeu de memory, par exemple, utiliserait notamment une matrice 2D (je pense à ta première vidéo) et du picking à la souris. Un Pong utiliserait des objets dynamiques impliquant des comparaisons de distances et un système simple de collisions. Etc..


    Pour terminer j'ai relevé quelques points d'ordre plus technique sur tes programmes, outre ceux déjà mentionnés par les intervenants précédents :

    • il est préférable d'allouer d'un bloc un vecteur dynamique dont on connaît la taille à l'avance, via std::vector::reserve (et potentiellement de le remplir via std::vector::emplace_back) ;
    • pour représenter une matrice 2D, il vaut souvent mieux n'utiliser qu'un seul vecteur et l'adresser en convertissant les numéros de ligne et de colonne en index à une dimension ;
    • « encrypter » alors que tu utilises le terme adéquat dans le titre de la vidéo : chiffrement ;
    • en C++ l'opérateur ^ ne précède jamais un exposant ;
    • tu envoies une chaîne de caractères sans contrôle sur la sortie standard alors qu'elle contient potentiellement des valeurs de caractère non-imprimables ;
    • on compare leurs carrés plutôt que les distances elle-mêmes si on peut l'éviter, ce qui économise un appel à sqrt.

    J'ai suivi la dernière vidéo à propos des collisions avec moins d'attention car elle est un peu plus longue et je manquais de temps, je ne ferai donc aucun commentaire maintenant.

Discussions similaires

  1. YouTube : Google lance une application pour enfants sur iOS et Android
    Par Michael Guilloux dans le forum Actualités
    Réponses: 10
    Dernier message: 26/02/2015, 13h47
  2. [PHP 5.0] Erreur dans une petite chaîne (mais elle me fait rager :P )
    Par amerex dans le forum Langage
    Réponses: 3
    Dernier message: 30/05/2009, 17h20
  3. Besoin d'une petite aide:onclick sur une cellule
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 29/11/2005, 08h47
  4. copier une petite texture sur une grosse texture
    Par gaut dans le forum DirectX
    Réponses: 5
    Dernier message: 15/10/2004, 22h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo