#include"SFML\Graphics.hpp"
using namespace std;
#include<iostream>;
#include<SFML\Audio.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(800, 600), "Hello from SFML");
// setting the framerate limit to 60 FPS
window.setFramerateLimit(60);
window.setKeyRepeatEnabled(false);
bool play = true;
// Event object holding all events
sf::Event event;
sf::Font font;
// States
bool rButton = false; // R button/key
bool leftButton = false, rightButton = false;
bool upButton = false, downButton = false;
// Variables
int rectRotation = 0; // Rotation of the shape
int xVelocity = 0, yVelocity = 0;
// Shapes
sf::RectangleShape shape1;
shape1.setSize(sf::Vector2f(100, 100));
shape1.setPosition(100, 300);
// Shapes
sf::RectangleShape shape2;
shape2.setSize(sf::Vector2f(100, 200));
shape2.setPosition(200, 200);
shape2.setFillColor(sf::Color::Blue);
// game loop
while (play == true)
{
// EVENTS
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed) {
play = false;
}
if (event.type == sf::Event::KeyPressed&&event.key.code == sf::Keyboard::R)
{
rButton = true;
}
if (event.type == sf::Event::KeyReleased&&event.key.code == sf::Keyboard::R)
{
rButton = false;
}
if (event.type == sf::Event::KeyPressed) {
if (event.key.code == sf::Keyboard::Left)
leftButton = true;
if (event.key.code == sf::Keyboard::Right)
rightButton = true;
if (event.key.code == sf::Keyboard::Up)
upButton = true;
if (event.key.code == sf::Keyboard::Down)
downButton = true;
}
// Realeased keyboard
if (event.type == sf::Event::KeyReleased) {
if (event.key.code == sf::Keyboard::Left)
leftButton = false;
if (event.key.code == sf::Keyboard::Right)
rightButton = false;
if (event.key.code == sf::Keyboard::Up)
upButton = false;
if (event.key.code == sf::Keyboard::Down)
downButton = false;
}
}
// LOGIC
if (rButton == true) {
rectRotation++;
shape1.setRotation(rectRotation);
}
// Movement
// x axis
if (rightButton == true) {
xVelocity = 5;
}
if (leftButton == true) {
xVelocity = -5;
}
if (leftButton == true && rightButton == true) {
xVelocity = 0;
}
if (leftButton == false && rightButton == false)
{
xVelocity = 0;
}
// Y axis
if (downButton == true) {
yVelocity = 5;
}
if (upButton == true) {
yVelocity = -5;
}
if (upButton == true && downButton == true) {
yVelocity = 0;
}
if (upButton == false && downButton == false)
{
yVelocity = 0;
}
// Move the shape by adding the velocity
/*shape1.move(xVelocity, yVelocity);
if (shape1.getGlobalBounds().intersects(shape2.getGlobalBounds()) == true)
{
shape1.move(-xVelocity, -yVelocity);
}*/
shape1.move(xVelocity, 0);
if (shape1.getGlobalBounds().intersects(shape2.getGlobalBounds()) == true) {
shape1.move(-xVelocity, 0);
}
shape1.move(0, yVelocity);
if (shape1.getGlobalBounds().intersects(shape2.getGlobalBounds()) == true) {
shape1.move(0, -yVelocity);
}
// RENDERING
window.clear();
window.draw(shape1);
window.draw(shape2);
window.display();
} // This is the end of the "While" loop
// Clean up and close the window
window.close();
return 0;
}
效果图,继续~~