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.


Topics - Sarbast

Pages: [1]
1
Graphics / SFML Game Development, Movement
« on: June 26, 2014, 02:14:04 pm »
Hi
i wrote the code same as the book but the after the key is released the bool variables won't reset to false
and object moves without stopping
also the object moves opposite direction, when i press W set the mPlayer.move(0,-1) but it moves to down

Main.cpp

#ifdef SFML_STATIC
#pragma comment(lib, "glew.lib")
#pragma comment(lib, "freetype.lib")
#pragma comment(lib, "jpeg.lib")
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "winmm.lib")
#pragma comment(lib, "gdi32.lib")  
#endif // SFML_STATIC

#include "game.h"
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <SFML/Window.hpp>
#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>

int main()
{
        Game game;
        game.run();

        return 0;
}

game.h

#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <SFML/Window.hpp>
#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>

#ifndef GAME_H
#define GAME_H

class Game{
private:
        void processEvents();
        void update();
        void render();

private:
        sf::RenderWindow mWindow;
        sf::CircleShape mPlayer;
        bool mIsMovingUp, mIsMovingDown, mIsMovingLeft, mIsMovingRight;

public:
        Game();
        void HandlePlayerInput(sf::Keyboard::Key, bool);
        void run();
};


#endif // GAME_H

game.cpp

#include "game.h"

Game::Game() : mWindow(sf::VideoMode(640, 480), "SFML Application"), mPlayer(){
        mPlayer.setRadius(40.f);
        mPlayer.setPosition(100.f, 100.f);
        mPlayer.setFillColor(sf::Color::Cyan);
}


void Game::run(){
        while (mWindow.isOpen()){
                processEvents();
                update();
                render();
        }
}

void Game::processEvents(){
        sf::Event event;
        while (mWindow.pollEvent(event)){
                switch (event.type){
                        case sf::Event::KeyPressed:
                                HandlePlayerInput(event.key.code, true);
                                break;
                        case sf::Event::KeyReleased:
                                HandlePlayerInput(event.key.code, false);
                                break;
                        case sf::Event::Closed:
                                mWindow.close();
                                break;
                }
        }
}

void Game::HandlePlayerInput(sf::Keyboard::Key key, bool isPressed){
        if (key == sf::Keyboard::W)
                mIsMovingUp = isPressed;
        else if (key == sf::Keyboard::S)
                mIsMovingDown = isPressed;
        else if (key == sf::Keyboard::A)
                mIsMovingLeft = isPressed;
        else if (key == sf::Keyboard::D)
                mIsMovingRight = isPressed;
}

void Game::update(){
        sf::Vector2f movement(0.f, 0.f);

        if (mIsMovingUp)
                movement.y -= 1.f;
        if (mIsMovingDown)
                movement.y += 1.f;
        if (mIsMovingLeft)
                movement.x -= 1.f;
        if (mIsMovingRight)
                movement.x += 1.f;

        mPlayer.move(movement);
}

void Game::render(){
       
        mWindow.clear();
        mWindow.draw(mPlayer);
        mWindow.display();
}

2
Graphics / [SOLVED]Sf::View, putting player in the middle of screen
« on: June 19, 2014, 12:03:06 am »
Hi
i want to put the player in the middle of the screen but i don't know
can someone tell me how to do it?
also when i move it to a side and then press another side its legs stop moving(fixed thanks for Ixrec)

sorry for my english

#ifdef SFML_STATIC
#pragma comment(lib, "glew.lib")
#pragma comment(lib, "freetype.lib")
#pragma comment(lib, "jpeg.lib")
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "winmm.lib")
#pragma comment(lib, "gdi32.lib")  
#endif // SFML_STATIC


#include <SFML\Graphics.hpp>
#include <iostream>
#include <string>
#include <algorithm>
#include <ctime>
#include <cstdlib>

#pragma region Variables
sf::RenderWindow window;
sf::Texture Map;
sf::Sprite sMap;
sf::Clock MyClock;
sf::Event MyEvent;
sf::Vector2f position(800, 600);
sf::Texture Image;
sf::Sprite player;
sf::View MyView;
sf::Vector2i Place(1, 0);
sf::Vector2f MapPosition(position.x/2, position.y/2);
enum Direction{Down, Left, Right, Up};
float FrameSpeed = 500, SwitchFrame = 60, FrameCount = 0;
bool updateFrame = false;
#pragma endregion sf

int main()
{
        //Window
        window.create(sf::VideoMode(position.x, position.y), "My First SFML Game", sf::Style::Close);
        window.setPosition(sf::Vector2i(300, 50));
        window.setFramerateLimit(60);
        window.setKeyRepeatEnabled(false);

        //Texture Map
        if (!Map.loadFromFile("LOF-Map.png"))
                std::cout << "Couldn't Load The Map" << std::endl;

        //Texture player
        if (!Image.loadFromFile("Player.png"))
                std::cout << "Couldn't load the Image" << std::endl;
        Image.setSmooth(true);

        //Sprite Map
        sMap.setTexture(Map);

        //Sprite Player
        player.setTexture(Image);
        player.setPosition(sf::Vector2f(100, 100));

        //Game Loop
        while (window.isOpen())
        {

                //Event loop
                while (window.pollEvent(MyEvent))
                {
                       place.x = 1;
                        switch (MyEvent.type)
                        {
                        case sf::Event::Closed:
                                window.close();
                                break;
                        }

                }
                updateFrame = false;
                if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down)){
                        updateFrame = true;
                        Place.y = Down;
                        player.move(0, 1);
                }
                else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)){
                        updateFrame = true;
                        Place.y = Left;
                        player.move(-1, 0);
                }
                else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)){
                        updateFrame = true;
                        Place.y = Right;
                        player.move(1, 0);
                }
                else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up)){
                        updateFrame = true;
                        Place.y = Up;
                        player.move(0, -1);
                }
       

                FrameCount += FrameSpeed * MyClock.restart().asSeconds();
                if (updateFrame == true){
                        if (FrameCount > SwitchFrame)
                        {
                                FrameCount = 0;
                                Place.x++;
                                if (Place.x * 32 >= Image.getSize().x)
                                        Place.x = 0;
                        }
                }
                if (player.getPosition().x<= 0)
                        player.setPosition(sf::Vector2f(0,player.getPosition().y));
                if (player.getPosition().y < 0)
                        player.setPosition(sf::Vector2f(player.getPosition().x, 0));

                //Display a block of the SpriteSheet
                player.setTextureRect(sf::IntRect(Place.x * 32, Place.y * 32, 32, 32));

                window.clear();
                window.setView(MyView);
                window.draw(sMap);
                window.draw(player);
                window.display();
        }
        return EXIT_SUCCESS;
}

3
General discussions / Setup SFML on VS 2013 professional
« on: May 12, 2014, 03:59:15 pm »
Hi
its been three days i can't still mange to setup SFML 2.1
please help me

Pages: [1]
anything