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 - wojo1086

Pages: [1]
1
General / Re: Program not stopping after return EXIT_SUCCESS
« on: January 05, 2014, 06:50:09 pm »
I would like to thank everyone for taking the time to help me with this issue!

I managed to get it to work correctly! I just started a new project and reconfigured everything again! I'm not sure how my configurations got screwed up or what configurations got screwed up. I also learned a lot through this whole ordeal!

Thank you again everybody!

2
General / Re: Program not stopping after return EXIT_SUCCESS
« on: January 04, 2014, 11:37:56 am »
1) Why is checking for event.type needed if checking for a key.code works?

2) I paused it after I hit escape and it doesn't show me where it paused. It appears all the code has ran, but is still running in the background. I took two screenshots of it. The first one is showing there is no little arrow where it shows where the program paused. The second one is showing a second tab that popped up after I paused it. I'm not sure if this is a problem or not.

I was wondering if the window had to be destroyed. Is that a thing? Destroying windows?

3
General / Re: Program not stopping after return EXIT_SUCCESS
« on: January 03, 2014, 11:35:44 pm »
It starts right away, but when I hit escape, I still have to force close the program from the task manager. It's like it's still running in the background. I tried changing it back to console mode, but then the console window doesn't close.

4
General / Re: Program not stopping after return EXIT_SUCCESS
« on: January 03, 2014, 10:59:40 pm »
I use Visual Studio 2013 and all I do is hit the "Local Windows Debugger" option on the top toolbar.

5
General / Re: Program not stopping after return EXIT_SUCCESS
« on: January 03, 2014, 08:06:37 pm »
I sincerely apologize for that long bit of code.  :-[

So I went through and was able to replicate the problem with a minimal amount of code.

#include <SFML/Graphics.hpp>
#include <SFML/Window/VideoMode.hpp>
#include <SFML/Window/Keyboard.hpp>


//--------------------------------------------------------------------------M-A-I-N---------------------------------------------------------------------------------------
int main()
{
        sf::RenderWindow window(sf::VideoMode(300, 300, 32), "Test");

        while (window.isOpen())
        {
                sf::Event event;
                while (window.pollEvent(event))
                {
                        if (event.key.code == sf::Keyboard::Escape)
                        {
                                window.close();
                                break;
                        }
                }
                window.clear();
                window.display();      
        }
        return EXIT_SUCCESS;
}
 

6
General / Re: Program not stopping after return EXIT_SUCCESS
« on: January 03, 2014, 07:02:06 pm »
Here is the core of the program. I took out a bunch of code that dealt with things like the opening logo sequence, a little character creation, all events dealing with key presses other than escape. Basically, I use the same window for everything, I'm just updating it with different things. For example, the logo sequence displays a picture, fades it to black, and then I keep that window, but display a "New Game/Load Game" option which takes mouse movement.

I'm not sure if this matters, but I changed the program from console to windows in the properties.

#include <SFML/Graphics.hpp>
#include <SFML/Window/VideoMode.hpp>
#include <sstream>
#include <string>
#include <iostream>
#include <SFML/Window/Keyboard.hpp>

//Tilemap class-----------------------------------------------------------------------------------------------------------------------------------------------
class TileMap : public sf::Drawable, public sf::Transformable
{
public:

        bool load(const std::string& tileset, sf::Vector2u tileSize, const int* tiles, unsigned int width, unsigned int height)
        {
                // load the tileset texture
                if (!m_tileset.loadFromFile("images/Tilemap-2.png"))
                        return false;

                // resize the vertex array to fit the level size
                m_vertices.setPrimitiveType(sf::Quads);
                m_vertices.resize(width * height * 4);

                // populate the vertex array, with one quad per tile
                for (unsigned int i = 0; i < width; ++i)
                for (unsigned int j = 0; j < height; ++j)
                {
                        // get the current tile number
                        int tileNumber = tiles[i + j * width];

                        // find its position in the tileset texture
                        int tu = tileNumber % (m_tileset.getSize().x / tileSize.x);
                        int tv = tileNumber / (m_tileset.getSize().x / tileSize.x);

                        // get a pointer to the current tile's quad
                        sf::Vertex* quad = &m_vertices[(i + j * width) * 4];

                        // define its 4 corners
                        quad[0].position = sf::Vector2f(i * tileSize.x, j * tileSize.y);
                        quad[1].position = sf::Vector2f((i + 1) * tileSize.x, j * tileSize.y);
                        quad[2].position = sf::Vector2f((i + 1) * tileSize.x, (j + 1) * tileSize.y);
                        quad[3].position = sf::Vector2f(i * tileSize.x, (j + 1) * tileSize.y);

                        // define its 4 texture coordinates
                        quad[0].texCoords = sf::Vector2f(tu * tileSize.x, tv * tileSize.y);
                        quad[1].texCoords = sf::Vector2f((tu + 1) * tileSize.x, tv * tileSize.y);
                        quad[2].texCoords = sf::Vector2f((tu + 1) * tileSize.x, (tv + 1) * tileSize.y);
                        quad[3].texCoords = sf::Vector2f(tu * tileSize.x, (tv + 1) * tileSize.y);
                }

                return true;
        }

private:

        virtual void draw(sf::RenderTarget& target, sf::RenderStates states) const
        {
                // apply the transform
                states.transform *= getTransform();

                // apply the tileset texture
                states.texture = &m_tileset;

                // draw the vertex array
                target.draw(m_vertices, states);
        }

        sf::VertexArray m_vertices;
        sf::Texture m_tileset;
};

//Player Class----------------------------------------------------------------P-L-A-Y-E-R---C-L-A-S-S------------------------------------------------------------------------------
class Player
{
public:
        bool gender;
        bool step = false;
        float tileX = 1;
        float tileY = 1;
//Walking function--------------------------------------------------------------W-A-L-K-I-N-G---F-U-N-C-T-I-O-N----------------------------------------------------------
        void walking(float& x, float& y, int dir, sf::RenderWindow& window, sf::Sprite& playerSprite, TileMap lm)
        {
                switch (dir)
                {
                case 0:
                                for (int n = 0; n < 16; ++n)
                                {
                                        y -= .0625;
                                        if (step == false)
                                        {
                                                playerSprite.setTextureRect(sf::IntRect(640, 0, 64, 128));
                                                playerSprite.setPosition(x * 64, y * 64);
                                                window.clear();
                                                window.draw(lm);
                                                window.draw(playerSprite);
                                                window.display();
                                        }
                                        else{
                                                playerSprite.setTextureRect(sf::IntRect(704, 0, 64, 128));
                                                playerSprite.setPosition(x * 64, y * 64);
                                                window.clear();
                                                window.draw(lm);
                                                window.draw(playerSprite);
                                                window.display();
                                        }
                                }
                                playerSprite.setTextureRect(sf::IntRect(576, 0, 64, 128));
                                break;
                case 1:
                        for (int n = 0; n < 16; ++n)
                        {
                                y += .0625;
                                if (step == false)
                                {
                                        playerSprite.setTextureRect(sf::IntRect(64, 0, 64, 128));
                                        playerSprite.setPosition(x * 64, y * 64);
                                        window.clear();
                                        window.draw(lm);
                                        window.draw(playerSprite);
                                        window.display();
                                }
                                else{
                                        playerSprite.setTextureRect(sf::IntRect(128, 0, 64, 128));
                                        playerSprite.setPosition(x * 64, y * 64);
                                        window.clear();
                                        window.draw(lm);
                                        window.draw(playerSprite);
                                        window.display();
                                }
                        }
                        playerSprite.setTextureRect(sf::IntRect(0, 0, 64, 128));
                        break;
                case 2:
                        for (int n = 0; n < 16; ++n)
                        {
                                x -= .0625;
                                if (step == false)
                                {
                                        playerSprite.setTextureRect(sf::IntRect(256, 0, 64, 128));
                                        playerSprite.setPosition(x * 64, y * 64);
                                        window.clear();
                                        window.draw(lm);
                                        window.draw(playerSprite);
                                        window.display();
                                }
                                else{
                                        playerSprite.setTextureRect(sf::IntRect(320, 0, 64, 128));
                                        playerSprite.setPosition(x * 64, y * 64);
                                        window.clear();
                                        window.draw(lm);
                                        window.draw(playerSprite);
                                        window.display();
                                }
                        }
                        playerSprite.setTextureRect(sf::IntRect(192, 0, 64, 128));
                        break;
                case 3:
                        for (int n = 0; n < 16; ++n)
                        {
                                x += .0625;
                                if (step == false)
                                {
                                        playerSprite.setTextureRect(sf::IntRect(448, 0, 64, 128));
                                        playerSprite.setPosition(x * 64, y * 64);
                                        window.clear();
                                        window.draw(lm);
                                        window.draw(playerSprite);
                                        window.display();
                                }
                                else{
                                        playerSprite.setTextureRect(sf::IntRect(512, 0, 64, 128));
                                        playerSprite.setPosition(x * 64, y * 64);
                                        window.clear();
                                        window.draw(lm);
                                        window.draw(playerSprite);
                                        window.display();
                                }
                        }
                        playerSprite.setTextureRect(sf::IntRect(384, 0, 64, 128));
                        break;
                }
                if (step == true)
                {
                        step = false;
                }
                else{
                        step = true;
                }
        }
};

//--------------------------------------------------------------------------M-A-I-N---------------------------------------------------------------------------------------
int main()
{
        // create the window
        sf::VideoMode desktop = sf::VideoMode::getDesktopMode();
        float desktopWidth = desktop.width;
        float desktopHeight = desktop.height;
        sf::RenderWindow window(sf::VideoMode(desktopWidth, desktopHeight, desktop.bitsPerPixel), "Game", sf::Style::Fullscreen);
        window.setFramerateLimit(60);






        //load sprites
        sf::Sprite playerSprite;
        sf::Texture charMapTex;
        if (!charMapTex.loadFromFile("images/character map64.png"))
                return false;
        playerSprite.setTexture(charMapTex);
       
        int colTest;
       
        playerSprite.setTextureRect(sf::IntRect(0, 0, 64, 128));
        playerSprite.setPosition(p.tileX * 64, p.tileY * 64);

        const int level[] =
        {
                2, 0, 0, 0, 0, 0, 0, 0, 0, 3,
                2, 1, 1, 1, 1, 1, 1, 1, 1, 3,
                2, 1, 1, 1, 1, 1, 1, 1, 1, 3,
                2, 1, 1, 1, 1, 1, 1, 1, 1, 3,
                2, 1, 1, 1, 1, 1, 1, 1, 1, 3,
                2, 1, 1, 1, 1, 1, 1, 1, 1, 3,
                2, 1, 1, 1, 1, 1, 1, 1, 1, 3,
                2, 1, 1, 1, 1, 1, 1, 1, 1, 3,
                2, 1, 1, 1, 1, 1, 1, 1, 1, 3,
                7, 4, 4, 6, 1, 5, 4, 4, 4, 8,
        };

        // create the tilemap from the level definition
        TileMap map;
        if (!map.load("images/Tilemap-2.png", sf::Vector2u(64, 64), level, 10, 10))
                return -1;

        // run the main loop
        while (window.isOpen())
        {
                // handle events
                sf::Event event;
                while (window.pollEvent(event))
                {
                        if (event.key.code == sf::Keyboard::Escape)
                        {
                                window.close();
                                break;
                        }
                }

                // draw the map
                window.clear();
                window.draw(map);
                window.draw(playerSprite);
                window.display();      

        }


        return EXIT_SUCCESS;
       
}
 

7
General / Program not stopping after return EXIT_SUCCESS
« on: January 03, 2014, 06:42:13 pm »
I have a while loop testing to see if a window is open. In this while loop, I have a second while loop for events. Now, in this event loop, if escape is pressed, the window closes. Which means the first while loop is no longer applicable because the window isn't open anymore, which means it should hit the return EXIT_SUCCESS of the main loop. (See code below.)

What keeps happening is the window will close, but I keep having to go into task manager and kill the program because it is still running. I don't know what I'm supposed to do. Any help?

while (window.isOpen())
        {
                // handle events
                sf::Event event;
                while (window.pollEvent(event))
                {
                        if (event.key.code == sf::Keyboard::Escape)
                        {
                                window.close();
                                break;
                        }
                        if (sf::Keyboard::isKeyPressed(sf::Keyboard::W))
                        {
                                int newX = p.tileX;
                                int newY = p.tileY;
                                colTest = level[newX + (newY * 10)];
                                if (colTest == 0)
                                {
                                        playerSprite.setTextureRect(sf::IntRect(576, 0, 64, 128));
                                }
                                else{
                                        p.walking(p.tileX, p.tileY, 0, window, playerSprite, map);
                                }
                        }
                        if (sf::Keyboard::isKeyPressed(sf::Keyboard::S))                               
                        {
                                int newX = p.tileX;
                                int newY = p.tileY + 2;
                                colTest = level[newX + (newY * 10)];
                                if (colTest == 0)
                                {
                                        playerSprite.setTextureRect(sf::IntRect(0, 0, 64, 128));
                                }
                                else{
                                        p.walking(p.tileX, p.tileY, 1, window, playerSprite, map);
                                }
                        }
                        if (sf::Keyboard::isKeyPressed(sf::Keyboard::A))
                        {
                                int newX = p.tileX - 1;
                                int newY = p.tileY + 1;
                                int colTest = level[newX + (newY * 10)];
                                if (colTest == 0)
                                {
                                        playerSprite.setTextureRect(sf::IntRect(192, 0, 64, 128));
                                }
                                else{
                                        p.walking(p.tileX, p.tileY, 2, window, playerSprite, map);
                                }
                        }
                        if (sf::Keyboard::isKeyPressed(sf::Keyboard::D))
                        {
                                int newX = p.tileX + 1;
                                int newY = p.tileY + 1;
                                int colTest = level[newX + (newY * 10)];
                                if (colTest == 0)
                                {
                                        playerSprite.setTextureRect(sf::IntRect(384, 0, 64, 128));
                                }
                                else{
                                        p.walking(p.tileX, p.tileY, 3, window, playerSprite, map);
                                }
                        }
                }

                // draw the map
                window.clear();
                window.draw(map);
                window.draw(playerSprite);
                window.display();
               

        }


        return EXIT_SUCCESS;

8
Graphics / Re: Smooth sprite movement/FPS
« on: December 22, 2013, 11:27:24 pm »
Thank you both! I completely forgot about Thor! I'll check it out!

9
Graphics / Smooth sprite movement/FPS
« on: December 22, 2013, 09:48:45 pm »
I currently have a sprite that I can move around the screen and have his little feet cycle through their left and right steps without any issues, except for one; when he walks, his feet move fast. I mean, if I slow the framerate down to about 8 or 9, you can see them move.  What I would like to know is if there is a better way to slow his feet movement down without having to limit the FPS.

This is the code for loading his different sprite movements. I currently only have his front and back cycling, that's why there is only sprites loaded for that. also, his set position is here as well.
// create the window
        sf::RenderWindow window(sf::VideoMode(1280, 768, 32), "Tilemap");
        window.setFramerateLimit(12);

        //load sprites
        sf::Sprite Bob;
        sf::Sprite BobBack;
        sf::Sprite BobBackLeft;
        sf::Sprite BobBackRight;
        sf::Sprite BobFront;
        sf::Sprite BobFrontLeft;
        sf::Sprite BobFrontRight;
        sf::Texture BobB;
        sf::Texture BobBL;
        sf::Texture BobBR;
        sf::Texture BobF;
        sf::Texture BobFL;
        sf::Texture BobFR;
        if (!BobB.loadFromFile("images/char1-back.png"))
                return false;
        BobBack.setTexture(BobB);
        if (!BobBL.loadFromFile("images/char1-back-left.png"))
                return false;
        BobBackLeft.setTexture(BobBL);
        if (!BobBR.loadFromFile("images/char1-back-right.png"))
                return false;
        BobBackRight.setTexture(BobBR);
        if (!BobF.loadFromFile("images/char1-front.png"))
                return false;
        BobFront.setTexture(BobF);
        if (!BobFL.loadFromFile("images/char1-front-left.png"))
                return false;
        BobFrontLeft.setTexture(BobFL);
        if (!BobFR.loadFromFile("images/char1-front-right.png"))
                return false;
        BobFrontRight.setTexture(BobFR);

        //set Bob's position with x and y
        struct Player
        {
                float tileX = 10;
                float tileY = 10;
        };
        Player p;

        Bob.setTexture(BobF);
        Bob.setPosition(p.tileX * 32, p.tileY * 32);

        //set Bob's left or right step boolean
        bool step = false;


And this is the code to move him. Pay attention only to the first two sf::Keyboard presses (W and S) because that's all I've gotten done. Basically, a boolean was set in the first bit of code. The for() loop is the actual cycling of his images. The "p.tileY -= .25" piece of code is so the player is moved a fourth of the 32 pixels in a tile. The stepping sequence is run four times and the boolean determines if his right or left step should happen. I plan on putting all this into  function later so that I can just call it as I need it.
// run the main loop
        while (window.isOpen())
        {
                // handle events
                sf::Event event;
                while (window.pollEvent(event))
                {
                        switch (event.type)
                        {
                        case sf::Event::Closed:
                                window.close();
                                break;

                        case sf::Event::KeyPressed:
                                if (sf::Keyboard::isKeyPressed(sf::Keyboard::W))
                                {
                                        for (int n = 0; n < 3; ++n)
                                        {
                                                p.tileY -= .25;
                                                if (step == false)
                                                {
                                                        BobBackLeft.setPosition(p.tileX * 32, p.tileY * 32);
                                                        window.clear();
                                                        window.draw(map);
                                                        window.draw(BobBackLeft);
                                                        window.display();
                                                        step = true;
                                                }
                                                else{
                                                        BobBackRight.setPosition(p.tileX * 32, p.tileY * 32);
                                                        window.clear();
                                                        window.draw(map);
                                                        window.draw(BobBackRight);
                                                        window.display();
                                                        step = false;
                                                }
                                        }
                                        p.tileY -= .25;
                                                Bob.setTexture(BobB);
                                                Bob.setPosition(p.tileX * 32, p.tileY * 32);
                                }
                                if (sf::Keyboard::isKeyPressed(sf::Keyboard::S))
                                {
                                        for (int n = 0; n < 3; ++n)
                                        {
                                                p.tileY += .25;
                                                if (step == false)
                                                {
                                                        BobFrontLeft.setPosition(p.tileX * 32, p.tileY * 32);
                                                        window.clear();
                                                        window.draw(map);
                                                        window.draw(BobFrontLeft);
                                                        window.display();
                                                        step = true;
                                                }
                                                else{
                                                        BobFrontRight.setPosition(p.tileX * 32, p.tileY * 32);
                                                        window.clear();
                                                        window.draw(map);
                                                        window.draw(BobFrontRight);
                                                        window.display();
                                                        step = false;
                                                }
                                        }
                                        p.tileY += .25;
                                        Bob.setTexture(BobF);
                                        Bob.setPosition(p.tileX * 32, p.tileY * 32);
                                }
                                if (sf::Keyboard::isKeyPressed(sf::Keyboard::A))
                                {
                                        p.tileX -= 1;
                                        Bob.setPosition(p.tileX * 32, p.tileY * 32);
                                        window.clear();
                                        window.draw(map);
                                        window.draw(BobFront);
                                        window.display();
                                }
                                if (sf::Keyboard::isKeyPressed(sf::Keyboard::D))
                                {
                                        p.tileX += 1;
                                        Bob.setPosition(p.tileX * 32, p.tileY * 32);
                                        window.clear();
                                        window.draw(map);
                                        window.draw(BobFront);
                                        window.display();
                                }
                                break;
                        }
                }

                // draw the map
                window.clear();
                window.draw(map);
                window.draw(Bob);
                window.display();
        }

Is there a better way to do accomplish this same task?

10
Graphics / Re: Setting a tilemap into a vertex array
« on: December 20, 2013, 06:26:48 pm »
Hmm...but what, in the tutorial code,  would need to be changed in order to accommodate a bigger tilemap? I tried adding quads[4]-[7], but it didn't quite work out how I imagined it would. Also, if I use quad, when it comes to stating the four corners, would it be the four corners of the tilemap or of the individual tile?

11
Graphics / Setting a tilemap into a vertex array
« on: December 20, 2013, 12:26:41 am »
I am familiar with C++, but a completely new to SFML. I've read through the tutorials for SFML here on this site, but I still can't seem to grasp hold of the tilemap to vertex array section. The example this site uses only uses a 2x2 tilemap and then they use quad to store the 4 coordinates into the vertex array. I can manipulate the tutorial to make it display a 2x2 tilemap that I have. However, how would I load a bigger tilemap into a vertex array? Would I still use quad? Or, is there a way to divide a sprite tilemap into specific pixel sizes and then store them into a multidimensional array?

Pages: [1]
anything