Forum de la communauté SFML

Général => Discussions générales => Discussion démarrée par: dfleury2 le Mars 20, 2015, 11:35:14 pm

Titre: Début de "livre" sur SFML pour débutant
Posté par: dfleury2 le Mars 20, 2015, 11:35:14 pm
Bonjour,

j'avais commencé à traduire un livre sur la programmation de jeu en Python pour débutant, et cela m'a donné envie de le porter en C++ et SFML.

Pour un premier essai, voici ce pour le moment ce que ça donne : http://simplecpp.free.fr/

Il y a un jeu de Mémoire, un puzzle coulissant, et un Worm.

J'ai porté d'autres jeux (StarPusher, et GemGem), mais j'ai peu de temps pour écrire les chapitres associés.

Pour les débutants qui voudraient voir un ou deux petits jeux en C++ et SFML.

PS : Je n'ai pas écris la partie concernant l'installation de SFML sous VS 2013. Le site propose déjà quelque chose de très bien.
Titre: Re : Début de "livre" sur SFML pour débutant
Posté par: Lo-X le Mars 21, 2015, 12:39:15 pm
Je ne suis pas convaincu que, lorsqu'on s'adresse à des débutants et qu'on fait quelque chose en C++, tout mettre dans le main.cpp sans faire aucune classe et en utilisant à toc les variables globales soit une bonne idée.

Même si c'est plus compliqué à l'explication (ça ne l'est pas forcément coté 'élève'), mieux vaut prendre des bonnes habitudes et faire un code propre dès le départ.

Honnêtement, me taper 15 fonctions avant le main() et un main() de 15km de long c'est pas facile à lire. Alors que d'avoir quelques classes avec les .h permet de comprendre où ton code veut en venir sans même forcément lire ce qu'il fait exactement.

Après avoir dit ça, je pense quand même que c'est un exercice courageux, je te souhaite de parvenir à améliorer ce que tu as déjà fait et une bonne continuation
Titre: Re : Début de "livre" sur SFML pour débutant
Posté par: dfleury2 le Mars 21, 2015, 01:07:24 pm
Oui, ce n'est pas facile d'adresser du code pour un débutant.
Après les sources sont relativement courts et permettent le refactoring, et ne nécessitent pas forcément des pratiques plus lourdes à mettre en place dans le cadre de petit programme.

Par la suite, j'introduis d'autres pratiques, tout en essayant de ne pas m'éloigner de l'esprit du code Python original.

Voici le main de Wormy par exemple...

int main()
{
    sf::VideoMode videoMode(Wormy::WINDOW_WIDTH, Wormy::WINDOW_HEIGHT);
    sf::RenderWindow window(videoMode, "Wormy");
    window.setFramerateLimit(Wormy::FPS);

    sf::Image icon;
    icon.loadFromFile("assets/wormy.png");
    window.setIcon(icon.getSize().x, icon.getSize().y, icon.getPixelsPtr());

    Wormy::showStartScreen(window);
    while (window.isOpen())
    {
        Wormy::runGame(window);
        Wormy::showGameOverScreen(window);
    }
}