exampleProgram
unknown
c_cpp
2 years ago
2.2 kB
13
Indexable
#include <SFML/Graphics.hpp>
#include <iostream>
#pragma region Player Class
class Player
{
public:
sf::Vector2f position;
sf::CircleShape shape;
sf::RectangleShape bounds;
//constructor
Player(sf::Vector2f pos)
{
this->position = pos;
this->shape.setRadius(50.f);
this->shape.setFillColor(sf::Color(217, 37, 73));
this->shape.setPosition(position);
this->bounds.setOutlineThickness(1);
}
void update()
{
this->shape.setPosition(position);
this->bounds.setPosition(position);
}
void move(sf::Vector2f movementVector)
{
this->position += movementVector;
}
void draw(sf::RenderWindow& window)
{
window.draw(this->shape);
}
float GetDistanceBetween(sf::Vector2f pos1, sf::Vector2f pos2)
{
return sqrt(pow(pos1.x - pos2.x, 2) + pow(pos1.y - pos2.y, 2));
}
void CheckCollision(Player player)
{
if (GetDistanceBetween(player.position,this->position) < this->shape.getRadius() + player.shape.getRadius())
{
std::cout << "collision" << std::endl;
}
}
};
#pragma endregion Player Class
int main()
{
sf::RenderWindow window(sf::VideoMode(950, 650), "SFML works!");
sf:: Event event;
std::vector<Player> players;
players.push_back(Player(sf::Vector2f(200,200)));
players.push_back(Player(sf::Vector2f(400,200)));
#pragma region Game Loop
while (window.isOpen())
{
while(window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
//if w is pressed, move the first player up
if (event.type == sf::Event::KeyPressed)
{
if (event.key.code == sf::Keyboard::W)
players[0].move(sf::Vector2f(0, -5));
if (event.key.code == sf::Keyboard::A)
players[0].move(sf::Vector2f(-5, 0));
if (event.key.code == sf::Keyboard::S)
players[0].move(sf::Vector2f(0, 5));
if (event.key.code == sf::Keyboard::D)
players[0].move(sf::Vector2f(5, 0));
}
}
#pragma region Drawing
window.clear();
for (int i = 0; i < players.size(); i++)
{
players[i].update();
players[i].draw(window);
players[0].CheckCollision(players[1]);
}
window.setFramerateLimit(60);
window.display();
#pragma endregion Drawing
}
#pragma endregion Game Loop
return 0;
}
Editor is loading...