#include <SFML/Graphics.hpp>
#include <iostream>
using namespace std;
class PlayerCollision
{
public:
PlayerCollision(sf::Sprite playerSprite)
{
if (playerSprite.getPosition().x <= 0)
{
cout << "collision";
playerSprite.setPosition(0, playerSprite.getPosition().y);
}
if (playerSprite.getPosition().x >= 1536)
{
playerSprite.setPosition(1536, playerSprite.getPosition().y);
}
if (playerSprite.getPosition().y <= 32 && playerSprite.getPosition().x >= 833)
{
playerSprite.setPosition(playerSprite.getPosition().x, 32);
}
}
};
int main()
{
enum Direction { Down, Left, Right, Up };
sf::Vector2i source(1, Down);
sf::Vector2i screenDimensions(800, 600);
float frameCounter = 0, switchFrame = 100, frameSpeed = 500;
sf::RenderWindow window;
window.create(sf::VideoMode(screenDimensions.x, screenDimensions.y), "SFML", sf::Style::Close);
window.setFramerateLimit(60);
sf::Texture pTexture;
sf::Sprite playerSprite;
sf::Texture bTexture;
sf::Sprite bImage;
sf::Clock clock;
bool updateFrame = true;
bool InMovement = false;
if(!pTexture.loadFromFile("Content/player.png"))
cout << "Error loading player image" << endl;
if(!bTexture.loadFromFile("Content/bg.png"))
cout << "Error loading background image" << endl;
playerSprite.setTexture(pTexture);
playerSprite.setPosition(70, 230);
bImage.setTexture(bTexture);
sf::View view;
view.reset(sf::FloatRect(0, 0, screenDimensions.x, screenDimensions.y));
view.setViewport(sf::FloatRect(0, 0, 1.0f, 1.0f));
sf::Vector2f position(screenDimensions.x / 2, screenDimensions.y / 2);
while(window.isOpen())
{
sf::Event Event;
while (window.pollEvent(Event))
{
switch(Event.type)
{
case sf::Event::Closed:
window.close();
break;
}
}
if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
{
source.y = Up;
playerSprite.move(0, -3);
InMovement = true;
}
else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
{
source.y = Down;
playerSprite.move(0, 3);
InMovement = true;
}
else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
{
source.y = Right;
playerSprite.move(3, 0);
InMovement = true;
}
else if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
source.y = Left;
playerSprite.move(-3, 0);
InMovement = true;
}
else
{
InMovement = false;
}
if(sf::Mouse::isButtonPressed(sf::Mouse::Left))
updateFrame = true;
else if(sf::Mouse::isButtonPressed(sf::Mouse::Right))
updateFrame = false;
if(updateFrame)
frameCounter += frameSpeed * clock.restart().asSeconds();
else
frameCounter = 0;
frameCounter = (updateFrame) ? frameCounter + frameSpeed * clock.restart().asSeconds() : 0;
if(InMovement)
{
if(frameCounter >= switchFrame)
{
frameCounter = 0;
source.x++;
if(source.x * 32 >= pTexture.getSize().x)
source.x = 0;
}
}
if(playerSprite.getPosition().x + 16 > screenDimensions.x / 2)
position.x = playerSprite.getPosition().x + 16;
else
position.x = screenDimensions.x / 2;
if(playerSprite.getPosition().y + 16 > screenDimensions.y / 2)
position.y = playerSprite.getPosition().y + 16;
else
position.y = screenDimensions.y / 2;
if(playerSprite.getPosition().x - 16 > screenDimensions.x / 2)
position.x = playerSprite.getPosition().x - 16;
else
position.x = screenDimensions.x / 2;
if(playerSprite.getPosition().y - 16 > screenDimensions.y / 2)
position.y = playerSprite.getPosition().y - 16;
else
position.y = screenDimensions.y / 2;
view.setCenter(position);
window.setView(view);
PlayerCollision pCol(playerSprite);
playerSprite.setTextureRect(sf::IntRect(source.x * 32, source.y * 32, 32, 32));
window.draw(bImage);
window.draw(playerSprite);
window.display();
}
return 0;
if (playerSprite.getPosition().x <= 0)
{
cout << "collision";
playerSprite.setPosition(0, playerSprite.getPosition().y);
}
if(playerSprite.getPosition().x + 16 > screenDimensions.x / 2)
position.x = playerSprite.getPosition().x + 16;
else
position.x = screenDimensions.x / 2;
class PlayerCollision
{
public:
PlayerCollision(sf::Sprite playerSprite)
{
if (playerSprite.getPosition().x <= 0)
{
cout << "collision";
playerSprite.setPosition(0, playerSprite.getPosition().y);
}
if (playerSprite.getPosition().x >= 1536)
{
playerSprite.setPosition(1536, playerSprite.getPosition().y);
}
if (playerSprite.getPosition().y <= 32 && playerSprite.getPosition().x >= 833)
{
playerSprite.setPosition(playerSprite.getPosition().x, 32);
}
}
};
PlayerCollision pCol(playerSprite);in the main loop.