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

SFML Discussion :

tutoriel sur sfml


Sujet :

SFML

  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 356
    Points : 418
    Points
    418
    Billets dans le blog
    15
    Par défaut tutoriel sur sfml
    Bonjour,

    j'ai trouvé un tuto de sfml:
    https://fr.sfml-dev.org/tutorials/2....-events-fr.php

    L'auteur y a mit du code qui ne compile pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    #include <iostream>
    #include <SFML/Window.hpp>
     
    int main(){
      sf::Window window(sf::VideoMode(200,200),"exemple-event",sf::Style::Default);
      sf::Event event;
      while(window.isOpen())
        while(window.pollEvent(event))
          switch(event.type){
          case sf::Event::Closed:
    	window.close();
          case sf::Event::KeyPressed:
    	if (event.key.scancode == sf::Keyboard::Scan::Escape){
    	  std::cout << "the escape key was pressed" << std::endl;
    	  std::cout << "scancode: " << event.key.scancode << std::endl;
    	  std::cout << "code: " << event.key.code << std::endl;
    	  std::cout << "control: " << event.key.control << std::endl;
    	  std::cout << "alt: " << event.key.alt << std::endl;
    	  std::cout << "shift: " << event.key.shift << std::endl;
    	  std::cout << "system: " << event.key.system << std::endl;
    	  std::cout << "description: " << sf::Keyboard::getDescription(event.key.scancode).toAnsiString() << std::endl;
    	  std::cout << "localize: " << sf::Keyboard::localize(event.key.scancode) << std::endl;
    	  std::cout << "delocalize: " << sf::Keyboard::delocalize(event.key.code) << std::endl;
    	  break;
    	}
        }
      return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    $ g++ main.cpp -lsfml-window
    main.cpp: In function ‘int main()’:
    main.cpp:13:23: error: ‘struct sf::Event::KeyEvent’ has no member named ‘scancode’
       13 |         if (event.key.scancode == sf::Keyboard::Scan::Escape){
          |                       ^~~~~~~~
    main.cpp:13:49: error: ‘sf::Keyboard::Scan’ has not been declared
       13 |         if (event.key.scancode == sf::Keyboard::Scan::Escape){
          |                                                 ^~~~
    main.cpp:15:50: error: ‘struct sf::Event::KeyEvent’ has no member named ‘scancode’
       15 |           std::cout << "scancode: " << event.key.scancode << std::endl;
          |                                                  ^~~~~~~~
    main.cpp:21:57: error: ‘getDescription’ is not a member of ‘sf::Keyboard’
       21 |           std::cout << "description: " << sf::Keyboard::getDescription(event.key.scancode).toAnsiString() << std::endl;
          |                                                         ^~~~~~~~~~~~~~
    main.cpp:21:82: error: ‘struct sf::Event::KeyEvent’ has no member named ‘scancode’
       21 |           std::cout << "description: " << sf::Keyboard::getDescription(event.key.scancode).toAnsiString() << std::endl;
          |                                                                                  ^~~~~~~~
    main.cpp:22:54: error: ‘localize’ is not a member of ‘sf::Keyboard’
       22 |           std::cout << "localize: " << sf::Keyboard::localize(event.key.scancode) << std::endl;
          |                                                      ^~~~~~~~
    main.cpp:22:73: error: ‘struct sf::Event::KeyEvent’ has no member named ‘scancode’
       22 |           std::cout << "localize: " << sf::Keyboard::localize(event.key.scancode) << std::endl;
          |                                                                         ^~~~~~~~
    main.cpp:23:56: error: ‘delocalize’ is not a member of ‘sf::Keyboard’
       23 |           std::cout << "delocalize: " << sf::Keyboard::delocalize(event.key.code) << std::endl;
          |                                                        ^~~~~~~~~~
    une idée?

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 195
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 195
    Points : 17 162
    Points
    17 162
    Par défaut
    C'est parce que tu n'as pas la même version que lui.

    Au passage, je t'invite à regarder du coté du "gamedev framework" (le github), qui est un remake de la sfml avec plus de fonctionnalités. L'auteur estimait que les mainteneurs de la sfml sont trop rétrograde (notamment sur le C++ moderne).
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 356
    Points : 418
    Points
    418
    Billets dans le blog
    15
    Par défaut
    Merci pour la réponse

    Je vais voir ça.

  4. #4
    Membre expérimenté
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 94
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 618
    Points : 1 374
    Points
    1 374
    Par défaut
    Salut,

    Citation Envoyé par ternel Voir le message
    C'est parce que tu n'as pas la même version que lui.
    Ou qu'il manque un entête, peut-être #include <SFML/Window/Event.hpp>

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 356
    Points : 418
    Points
    418
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par kaitlyn Voir le message
    Ou qu'il manque un entête, peut-être #include <SFML/Window/Event.hpp>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #include <iostream>
    #include <SFML/Window.hpp>
    #include <SFML/Window/Event.hpp>
     
    int main(){
      sf::Window window(sf::VideoMode(200,200),"exemple-event",sf::Style::Default);
      sf::Event event;
      while(window.isOpen())
        while(window.pollEvent(event))
          switch(event.type){
          case sf::Event::Closed:
    	window.close();
          case sf::Event::KeyPressed:
    	if (event.key.scancode == sf::Keyboard::Scan::Escape){
    	  std::cout << "the escape key was pressed" << std::endl;
    	  std::cout << "scancode: " << event.key.scancode << std::endl;
    	  std::cout << "code: " << event.key.code << std::endl;
    	  std::cout << "control: " << event.key.control << std::endl;
    	  std::cout << "alt: " << event.key.alt << std::endl;
    	  std::cout << "shift: " << event.key.shift << std::endl;
    	  std::cout << "system: " << event.key.system << std::endl;
    	  std::cout << "description: " << sf::Keyboard::getDescription(event.key.scancode).toAnsiString() << std::endl;
    	  std::cout << "localize: " << sf::Keyboard::localize(event.key.scancode) << std::endl;
    	  std::cout << "delocalize: " << sf::Keyboard::delocalize(event.key.code) << std::endl;
    	  break;
    	}
        }
      return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    $ g++ main.cpp -lsfml-window
    main.cpp: In function ‘int main()’:
    main.cpp:14:23: error: ‘struct sf::Event::KeyEvent’ has no member named ‘scancode’
       14 |         if (event.key.scancode == sf::Keyboard::Scan::Escape){
          |                       ^~~~~~~~
    main.cpp:14:49: error: ‘sf::Keyboard::Scan’ has not been declared
       14 |         if (event.key.scancode == sf::Keyboard::Scan::Escape){
          |                                                 ^~~~
    main.cpp:16:50: error: ‘struct sf::Event::KeyEvent’ has no member named ‘scancode’
       16 |           std::cout << "scancode: " << event.key.scancode << std::endl;
          |                                                  ^~~~~~~~
    main.cpp:22:57: error: ‘getDescription’ is not a member of ‘sf::Keyboard’
       22 |           std::cout << "description: " << sf::Keyboard::getDescription(event.key.scancode).toAnsiString() << std::endl;
          |                                                         ^~~~~~~~~~~~~~
    main.cpp:22:82: error: ‘struct sf::Event::KeyEvent’ has no member named ‘scancode’
       22 |           std::cout << "description: " << sf::Keyboard::getDescription(event.key.scancode).toAnsiString() << std::endl;
          |                                                                                  ^~~~~~~~
    main.cpp:23:54: error: ‘localize’ is not a member of ‘sf::Keyboard’
       23 |           std::cout << "localize: " << sf::Keyboard::localize(event.key.scancode) << std::endl;
          |                                                      ^~~~~~~~
    main.cpp:23:73: error: ‘struct sf::Event::KeyEvent’ has no member named ‘scancode’
       23 |           std::cout << "localize: " << sf::Keyboard::localize(event.key.scancode) << std::endl;
          |                                                                         ^~~~~~~~
    main.cpp:24:56: error: ‘delocalize’ is not a member of ‘sf::Keyboard’
       24 |           std::cout << "delocalize: " << sf::Keyboard::delocalize(event.key.code) << std::endl;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    $ g++ main.cpp -lsfml-window -lsfml-event
    main.cpp: In function ‘int main()’:
    main.cpp:14:23: error: ‘struct sf::Event::KeyEvent’ has no member named ‘scancode’
       14 |         if (event.key.scancode == sf::Keyboard::Scan::Escape){
          |                       ^~~~~~~~
    main.cpp:14:49: error: ‘sf::Keyboard::Scan’ has not been declared
       14 |         if (event.key.scancode == sf::Keyboard::Scan::Escape){
          |                                                 ^~~~
    main.cpp:16:50: error: ‘struct sf::Event::KeyEvent’ has no member named ‘scancode’
       16 |           std::cout << "scancode: " << event.key.scancode << std::endl;
          |                                                  ^~~~~~~~
    main.cpp:22:57: error: ‘getDescription’ is not a member of ‘sf::Keyboard’
       22 |           std::cout << "description: " << sf::Keyboard::getDescription(event.key.scancode).toAnsiString() << std::endl;
          |                                                         ^~~~~~~~~~~~~~
    main.cpp:22:82: error: ‘struct sf::Event::KeyEvent’ has no member named ‘scancode’
       22 |           std::cout << "description: " << sf::Keyboard::getDescription(event.key.scancode).toAnsiString() << std::endl;
          |                                                                                  ^~~~~~~~
    main.cpp:23:54: error: ‘localize’ is not a member of ‘sf::Keyboard’
       23 |           std::cout << "localize: " << sf::Keyboard::localize(event.key.scancode) << std::endl;
          |                                                      ^~~~~~~~
    main.cpp:23:73: error: ‘struct sf::Event::KeyEvent’ has no member named ‘scancode’
       23 |           std::cout << "localize: " << sf::Keyboard::localize(event.key.scancode) << std::endl;
          |                                                                         ^~~~~~~~
    main.cpp:24:56: error: ‘delocalize’ is not a member of ‘sf::Keyboard’
       24 |           std::cout << "delocalize: " << sf::Keyboard::delocalize(event.key.code) << std::endl;

  6. #6
    Membre expérimenté
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 94
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 618
    Points : 1 374
    Points
    1 374
    Par défaut
    Ton lien c'est un exemple pour la version 2.6, et la version actuelle est la 2.6.1, donc à part un problème de configuration ou de dépendance il n'y a rien qui explique ton échec de compilation. Sinon, essaye les exemples fournis directement avec la lib.

  7. #7
    Membre averti

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 356
    Points : 418
    Points
    418
    Billets dans le blog
    15
    Par défaut
    que pensez-vous de SDL2?

  8. #8
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 884
    Points : 219 334
    Points
    219 334
    Billets dans le blog
    123
    Par défaut
    Que ce soit SDL 2 ou SFML, normalement, vous devriez réussir à faire ce que vous voulez (le labyrinthe que vous avez mentionné dans l'autre discussion). De même avec ncurses.
    La problématique, il me semble, c'est que c'est la première fois que vous utilisez une telle bibliothèque. Du coup, il y aura quelques obstacles (apprendre à utiliser une bibliothèque -> https://alexandre-laurent.developpez...-bibliotheque/ ), apprendre à faire une application graphique (ça change un peu, mais c'est très amusant). Généralement, une première piste est la suivante : la boucle de jeu (mais peut être pas pour ncurses).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  9. #9
    Membre averti

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 356
    Points : 418
    Points
    418
    Billets dans le blog
    15
    Par défaut
    Merci pour le tuto.
    Si je comprends ce qui est écrit à la fin, SDL c'est pour le C?
    je suis entrain de lire une doc sur SDL2, et ça m'a l'air d'être du C++.
    SDL2, c'est bien pour du C++?

  10. #10
    Membre expérimenté
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 94
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 618
    Points : 1 374
    Points
    1 374
    Par défaut
    Salut,

    Quand tu as une Lib avec des noms de fonctions genre SDL_Init(), SDL_CreateWindow(), etc, c'est rarement du C++, tout au moins dans le style, mais c'est un peu la coutume dans le jeu vidéo.

  11. #11
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 884
    Points : 219 334
    Points
    219 334
    Billets dans le blog
    123
    Par défaut
    C'est une bibliothèque C, en effet, alors que SFML est une bibliothèque C++. Mais, cela n'a pas tant d'impact que ça. Une bibliothèque C peut très bien s'utiliser en C++ et faire du beau code C++ autour. Sinon, vous pourriez chercher un wrapper pour avoir une interface C++, mais cela ne vaut pas vraiment le coût (d'après moi) et encore moins, à votre niveau.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. [HOOK] Problème(s) pour réaliser le tutoriel sur les HOOKS
    Par Rodrigue dans le forum C++Builder
    Réponses: 13
    Dernier message: 27/07/2016, 18h22
  2. Tutoriel sur le BDE ? (et question en même temps!)
    Par Yomane dans le forum C++Builder
    Réponses: 7
    Dernier message: 18/02/2004, 17h39
  3. Réponses: 3
    Dernier message: 24/11/2003, 17h41
  4. F.A.Q, Doc, cours, tutoriels sur JBuilder
    Par Ricky81 dans le forum JBuilder
    Réponses: 0
    Dernier message: 14/03/2002, 15h28

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