Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - totorigolo

Pages: [1]
1
Fenêtrage / Re : Seconde fenêtre freeze lors de sa création
« le: Octobre 26, 2013, 07:42:49 pm »
Ah, je vais aller voir. Merci :)

(réponse ultra rapide  :D )

Edit : J'ai téléchargé SFML à partir du dépot, recompilé, et ça fonctionne  :) Merci.

2
Fenêtrage / [Résolu] Seconde fenêtre freeze lors de sa création
« le: Octobre 26, 2013, 06:29:14 pm »
Bonjour à tous.

Je me suis construit quelques fonctions pour pouvoir créer des boites de dialogues facilement (message d'erreur, d'info, demande de texte ou de nombre,...). Avec la SFML 2.0, il n'y avait pas de soucis, mais maintenant que je suis passé à la 2.1, mon code ne marche plus.

En gros, je crée une fenêtre, dessine une image, du texte, un bouton (un rectangle + du texte), et je fais une petite boucle d'évènements pour gérer le tout. Je crée la fenêtre via une fonction, ce qui fait que la fenêtre actuelle ne répond plus (normal, et ça permet de rendre la pop-up modale) et l'autre est sensée prendre le relais. Or, bien que la pop-up se crée, elle est figée. J'ai trouvé deux solutions pour la faire fonctionner : mettre un point d'arrêt (j'ai marqué la ligne dans le code minimal dessous) et relancer la fenêtre, ou alors déplacer la fenêtre initiale.

J'ai donc créé une sorte de code minimal qui reproduit le problème.

#include <SFML/Graphics.hpp>

int main()
{
   // Charge la fenêtre de rendu
   sf::RenderWindow window(sf::VideoMode(800U, 600U), "test");

   while (window.isOpen())
   {
      sf::Event event;
      while (window.pollEvent(event))
      {
         if (event.type == sf::Event::Closed)
            window.close();

         if (event.type == sf::Event::KeyReleased && event.key.code == sf::Keyboard::O)
         {
            // Création de la fenêtre et des évènements
            sf::RenderWindow *window = new sf::RenderWindow(sf::VideoMode(500, 150, 32), "pop-up");
            sf::View windowView(window->getDefaultView());

            // Création du texte
            sf::Font f;
            f.loadFromFile("C:/Windows/Fonts/calibri.ttf");
            sf::Text text("blablablablablablabla", f);
            text.scale(0.8f, 0.8f);
            text.setColor(sf::Color::Black);
            text.move(140.f, 60.f);

            // Calcul de l'emplacement du bouton
            float x = text.getGlobalBounds().left + 20.f;
            float y = text.getGlobalBounds().top + text.getGlobalBounds().height + 20.f;
            // Création du bouton
            sf::RectangleShape button(sf::Vector2f(140.f, 30.f));
            button.setFillColor(sf::Color::Transparent);
            button.setOutlineColor(sf::Color::Black);
            button.setOutlineThickness(1.f);
            button.setPosition(x, y);
            sf::Text txtButton("Valider", f);
            txtButton.scale(0.6f, 0.6f);
            txtButton.setColor(sf::Color::Black);
            txtButton.setPosition(x + 5.f, y + 2.f);
           
            // Création du fond de survol
            sf::RectangleShape backgroung(sf::Vector2f(140.f, 30.f));
            backgroung.setFillColor(sf::Color(255, 0, 0, 128));

            // Boucle d'affichage
            bool overFlying = false;
            while (window->isOpen())
            {
               sf::Event event2;
               while (window->pollEvent(event2))
               {
                  // Si on appuie sur le bouton rouge ou sur échap : on quitte
                  if (event2.type == sf::Event::Closed ||
                     (event2.type == sf::Event::KeyReleased && (event2.key.code == sf::Keyboard::Return || event2.key.code == sf::Keyboard::Escape)))
                     window->close();
                 
                  // Si la souris survole un bouton : on met le fond
                  else if (event2.type == sf::Event::MouseMoved)
                  {
                     overFlying = true;
                     if (button.getGlobalBounds().contains(event2.mouseMove.x, event2.mouseMove.y))
                        backgroung.setPosition(button.getPosition());
                     else
                        overFlying = false;
                  }

                  // Clic gauche : on vérifie si on est sur un bouton et on quitte la cas échéant
                  else if (event2.type == sf::Event::MouseButtonReleased)
                  {
                     if (button.getGlobalBounds().contains(event2.mouseButton.x, event2.mouseButton.y))
                        window->close();
                  }
               }
               // On efface l'écran
               window->clear(sf::Color(240, 240, 240)); // Beige
               window->setView(windowView);

               // On affiche le texte
               window->draw(text);
               
               // On affiche le fond de survol du bouton
               if (overFlying)
                  window->draw(backgroung);

               // On affiche le bouton
               window->draw(button);
               window->draw(txtButton);

               // On affiche l'écran
               window->display(); /* Point d'arrêt ici par exemple */
            }
         }
      }

      window.clear(sf::Color::Black);
      window.display();
   }

   return 0;
}
 

Merci de votre attention  :)
totorigolo

3
Projets SFML / Re : [Jeu C++] In The Cube
« le: Septembre 23, 2013, 07:57:47 pm »
Salut,

Je viens de finir ton jeu :)

Je l'ai bien apprécié. La difficulté est bien dosée (un peu difficile mais faisable, moins dur aurait été sans challenge). La musique est bien, mais un peu répétitive à la longe.
Les énigmes sont biens et prenantes.

Après, c'est un peu court :p

A quand la suite pour savoir quoi faire de l'***** ?  ;)

totorigolo

4
Projets SFML / Re : Spiny Engine - Sonic The Hedgehog
« le: Juin 04, 2013, 04:43:10 pm »
Même si je ne suis pas un grand fan de Sonic, j'ai hâte de voir une démo de ton moteur :)

Mais je me demande si tu compte aussi reproduire les glitch du jeu original  :P  J'imagine bien un mode "avec glitch"...  ;D

5
Projets SFML / Re : Un Miniminijeu.
« le: Mai 16, 2013, 07:50:47 pm »
Pour indenter, rien de plus simple : Plugins → Source Code formater (AStyle). Par contre, veille à toujours sauvegarder ton code avant d'indenter, pour éviter les mauvaises surprises si ça bug (ça m'ait arrivé une fois il y a quelques années, donc tu risque pas grand chose, mais au cas où).

Et si tu n'arrive pas à comprendre ton code, c'est super grave. Imagine que tu fais une application et que plus tard tu as envie de la reprendre, ou alors tu fais un truc avec plein de fichiers et de fonctions et que tu as un bug, ben tu n'y arrivera tout simplement pas.
La solution tient en 3 consignes de base : commenter, indenter, nommer intelligemment.

N'ait pas peur de trop commenter, tu trouvera le juste milieu avec le temps. Pour l'indentation, il faut absolument que tu sois régulier et que tu ne te permette aucune fantaisie avec ton code de style (indentation, espaces,...). Pour les variables, il faut les nommer pour que tu comprenne rapidement, mais sans excès : tu peux garder "i" pour itérer, "x", "y" pour les coordonnées, ou encore des noms courts pour les algos par exemple... Mais n'appelle pas par exemple la fenêtre SFML que tu vas utiliser tout le temps "w".

6
Projets SFML / Re : Un Miniminijeu.
« le: Mai 16, 2013, 06:49:51 pm »
Je viens de tester ton "JeuDeMerde.exe".

Franchement faut que tu arrête de te sous estimer comme ça. Personnellement je l'ai trouvé assez fun, même si le gameplay est super-basique. Il n'y a pas de bug, et on a toujours envie de survivre plus longtemps. Pour quelqu'un qui "apprends le C++ depuis 1 ou 2 mois, et plus particulièrement SFML depuis 15 jours", c'est un très bon début.

Pour les réticents à tester, il s'agit d'un jeu inspiré du pong (avec deux énormes boules ou des "des truc bizarres") qui rebondissent sur les murs, et d'un vaisseau contrôlé à la souris qui doit les éviter, et qui gagne des points en tirant des lasers sur ces dernières. Mon avast! n'a pas bronché quand j'ai lancé le jeu, je me suis juste dis l'espace d'une µseconde que c'était un virus, à cause du premier point négatif ci-dessous.

Pour les points négatifs / suggestions :
  • Changer ce menu horrible qui fait flipper tout noir et rouge avec une écriture en IMPACT
  • Mettre un difficulté qui augmente moins vite en Easy.
  • Ajouter de la musique.
  • Pourquoi pas faire se diviser les grosses boules en deux plus petites au bout de x points.
  • Mettre une utilité aux murs.
  • Virer les .dll avec "-d", qui servent au Debug et qui ne sont pas sensées être distribuées.
  • Avoir confiance en ce que tu fais, pour ton niveau, c'est génial  :)

totorigolo

PS: Peut-être que le faux positif vient du fait que le jeu se lance en fullscreen dès le début.

EDIT: Je viens de survoler ton code, et je te suggère de mettre des commentaires, au moins des trucs bateaux qui séparent les parties (voir plus, ça fait des lignes de code supplémentaires pour frimer  :P ), et d'indenter correctement ton code parce que là c'est pas très lisible. Si tu utilise un IDE un tant soit peu évolué (C::B, Visual, Eclipse, Netbeans, sûrement Dev-C++,... ils peuvent indenter automatiquement).

7
Site web SFML / Re : Avancée des tutos 2.0 ?
« le: Janvier 07, 2013, 10:44:15 pm »
Je me permets de ressusciter ce topic  :)

Elle ne sortira pas tant que les tutoriels ne sont pas finis (c'est même tout ce qu'il me reste à faire, la version en elle-même est prête depuis longtemps).

Laurent, serais-tu intéressé si quelqu'un se chargeaient des tutoriels ? Par exemple, pour commencer, on pourrait transformer les tutoriels pour la 1.6 à la 2.0  :)

8
Projets SFML / Re : Thor 2.0
« le: Août 17, 2012, 03:22:37 pm »
Bonjour :)

Je suis en train de créer mes actions Thor, mais je ne vois pas comment faire pour créer une action qui se déclenche quand la molette de la souris tourne vers le haut uniquement (ou vers le bas).

// Action de zoomIn
mActionMap["zoomIn"] = thor::Action(sf::Event::MouseWheelMoved) && ???;

J'utilise actuellement Thor 176bef9 avec la SFML bdfc2dc, mais ça n'a pas d'importance je crois.

PS: Pour ce que j'en ai vu jusqu'ici, Thor est génial !!

EDIT :

Aussi, ce qui pourrait être cool c'est d'avoir thor::Action::None. Exemple :
// Clic gauche mais pas la touche C
mActionMap["fire"] = thor::Action(sf::Mouse::Left, thor::Action::Hold)
                     && thor::Action(sf::Keyboard::C, thor::Action::None);

Pages: [1]