Welcome, Guest. Please login or register. Did you miss your activation email?

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Sheppard

Pages: [1]
1
Window / Re: Window freezes with threads
« on: March 19, 2013, 11:43:25 pm »
Solved, thx

2
Window / Re: Window freezes with threads
« on: March 19, 2013, 11:33:07 pm »
Ok thx, I see that thread's launching cannot be into a constructor. Now I have another problems. I wanted to make simple "Text" on the screen which says what the mouse position is (for example X = 13.45 Y = 36.123). I read tutorial for v.2.0 and did everything like there was said but my Text isn't rendered. Where is the problem?

#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <iostream>

sf::RenderWindow app_window(sf::VideoMode(1280, 720, 32), "Game"); //Okno g&#322;ówne

class Hero
{
        bool thread; //czy w&#261;tek ma chodzi&#263;?
        sf::RectangleShape hero; //figura

        public:

        Hero()
        {              
                this->load();
                this->thread = true;


        }

        /**
        * Rysowanie tego syfu
        */

        void draw()
        {
                app_window.draw(hero);
        }

        /**
        * Przemieszczanie tego syfu
        */

        void move(float x, float y)
        {
                hero.setPosition(x, y);
        }

        /**
        * Stopowanie tego syfu
        */

        void stop_thread()
        {
                this->thread = false;
        }

        /**
        * Funkcja wywo&#322;ywana przy tworzeniu w&#261;tku
        */

        void run()
        {

                while(this->thread)
                {

                        //sf::sleep(sf::milliseconds(100));
                }
        }


        private:
       
        /**
        * Funkcja &#322;aduj&#261;ca podstwowy wygl&#261;d hirosa
        */

        void load()
        {
                hero.setPosition((unsigned int)(app_window.getSize().x / 2), (unsigned int)(app_window.getSize().y / 2));
                hero.setSize(sf::Vector2f(50, 50));
                hero.setFillColor(sf::Color::Blue);            
        }
};



int main()
{
        app_window.setFramerateLimit(60); //Limit klatków

        Hero * hero = new Hero(); //Tworzenie bohatera
        sf::Thread hero_thread(&Hero::run, hero);
        hero_thread.launch(); //Start w&#261;tku

        sf::Text Text;
        Text.setString("asdasd");
        Text.setCharacterSize(30);
        Text.setStyle(sf::Text::Bold);
        Text.setColor(sf::Color::Blue);
        Text.setPosition(100, 100);


        while(app_window.isOpen())
        {
                sf::Event event;

                while (app_window.pollEvent(event))
                {
                        if(event.type == sf::Event::Closed)
                        {
                                hero->stop_thread();
                                app_window.close();
                        }
                        if(event.type == sf::Event::MouseButtonReleased)
                        {
                                sf::Vector2i position = sf::Mouse::getPosition();
                                hero->move(position.x, position.y);

                        }
                }      
                app_window.clear(sf::Color(255, 255, 255));

                hero->draw();
                app_window.draw(Text);

                app_window.display();
        }


        delete hero;

    return 0;
}
 

3
Window / Window freezes with threads
« on: March 19, 2013, 07:29:59 pm »
Hi, I have a simple code. One rectangle which I want to move. I created new thread for this becouse this rectangle will be a "hero" in my game in the future :P

#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>

sf::RenderWindow app_window(sf::VideoMode(1280, 720, 32), "Game"); //Okno g&#322;ówne

class Hero
{
        bool thread; //czy w&#261;tek ma chodzi&#263;?
        sf::RectangleShape hero; //figura

        public:

        Hero()
        {              
                this->load();
                this->thread = true;

                sf::Thread hero_thread(&Hero::run, this);
                hero_thread.launch(); //Start w&#261;tku
        }

        /**
        * Rysowanie tego syfu
        */

        void draw()
        {
                app_window.draw(hero);
        }

        /**
        * Stopowanie tego syfu
        */

        void stop_thread()
        {
                this->thread = false;
        }

        /**
        * Funkcja wywo&#322;ywana przy tworzeniu w&#261;tku
        */

        void run()
        {
                while(this->thread)
                {
                       

                        //sf::sleep(sf::milliseconds(100));
                }
        }


        private:
       
        /**
        * Funkcja &#322;aduj&#261;ca podstwowy wygl&#261;d hirosa
        */

        void load()
        {
                hero.setPosition(app_window.getSize().x / 2, app_window.getSize().y / 2);
                hero.setSize(sf::Vector2f(50, 50));
                hero.setFillColor(sf::Color::Blue);            
        }
};



int main()
{
        app_window.setFramerateLimit(60); //Limit klatków

        Hero * hero = new Hero(); //Tworzenie bohatera

        while(app_window.isOpen())
        {
                sf::Event event;

                while (app_window.pollEvent(event))
                {
                        if(event.type == sf::Event::Closed)
                        {
                                app_window.close();
                        }
                        if(event.key.code == sf::Keyboard::A)
                        {
                                //this->hero.move(-5, 0);
                        }
                }      
                app_window.clear(sf::Color(255, 255, 255));

                hero->draw();

                app_window.display();
        }

        hero->stop_thread();

        delete hero;

    return 0;
}
 

but after compilation and debug window freezes and don't respond. My shape has not been drown. What I did wrong? I know that events have to be in the same thread where window was created. In my code they are.

Sorry for Polish comments.

Pages: [1]