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

Pages: [1]
1
General / fatal error: Mouse.hpp: No such file or directory
« on: November 06, 2017, 04:37:58 pm »
Hello!
I try to use Mouse Class. But when i add #include <Mouse.hpp> or #include <SFML/Mouse.hpp> instuctions my compiler say me:

[ 50%] Building CXX object CMakeFiles/workshop2.5.dir/main.obj
D:\cpp\Projects\labs\workshop2\workshop2.5\main.cpp:5:10: fatal error: Mouse.hpp: No such file or directory
 #include <Mouse.hpp>
          ^~~~~~~~~~~
compilation terminated.
mingw32-make.exe[2]: *** [CMakeFiles\workshop2.5.dir\build.make:63: CMakeFiles/workshop2.5.dir/main.obj] Error 1
mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:67: CMakeFiles/workshop2.5.dir/all] Error 2
mingw32-make.exe: *** [Makefile:83: all] Error 2
 


This's listing  of my project:

#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
//#include <SFML/Mouse.hpp>
#include <Mouse.hpp>
#include <vector>
#include <cmath>
#include <iostream>

#include <string>
#include <set>
#include <random>
#include <ctime>

using namespace std;
using namespace sf;


constexpr unsigned BALLS_COUNT = 4;
const string WINDOW_TITLE = "Moving balls";
static const sf::Color BACKGROUND_COLOR = sf::Color(0, 0, 0);
constexpr unsigned WINDOW_WIDTH = 800;
constexpr unsigned WINDOW_HEIGHT = 600;

struct Colr
{
    int red;
    int green;
    int blue;

    bool operator<(const Colr& curr) const
    {
        if (red < curr.red)
        {
           return true;
        }
        else if (red == curr.red)
        {
            if (green < curr.green)
            {
                return true;
            }
            else if (green == curr.green)
            {
                return blue < curr.blue;
            }
        }

        return false;
    }
};

struct Ball
{
    CircleShape shape;
    Vector2f offset;
};

struct PRNG
{
    std::mt19937 engine;
};

void initGenerator(PRNG& generator)
{
    // &#1048;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1091;&#1077;&#1084; &#1074;&#1088;&#1077;&#1084;&#1103; &#1089; 1 &#1103;&#1085;&#1074;&#1072;&#1088;&#1103; 1970 &#1075;&#1086;&#1076;&#1072; &#1074; &#1089;&#1077;&#1082;&#1091;&#1085;&#1076;&#1072;&#1093; &#1082;&#1072;&#1082; &#1089;&#1083;&#1091;&#1095;&#1072;&#1081;&#1085;&#1086;&#1077; &#1079;&#1077;&#1088;&#1085;&#1086;
    const unsigned seed = unsigned(std::time(nullptr));
    generator.engine.seed(seed);
}

// &#1043;&#1077;&#1085;&#1077;&#1088;&#1080;&#1088;&#1091;&#1077;&#1090; &#1080;&#1085;&#1076;&#1077;&#1082;&#1089; &#1074; &#1076;&#1080;&#1072;&#1087;&#1072;&#1079;&#1086;&#1085;&#1077; [0, size)
size_t random_index(PRNG& generator, int size)
{
    // &#1057;&#1086;&#1079;&#1076;&#1072;&#1105;&#1084; &#1088;&#1072;&#1089;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1077;&#1085;&#1080;&#1077;
    std::uniform_int_distribution<int> distribution(0, size - 1);
   
    // &#1042;&#1099;&#1095;&#1080;&#1089;&#1083;&#1103;&#1077;&#1084; &#1087;&#1089;&#1077;&#1074;&#1076;&#1086;&#1089;&#1083;&#1091;&#1095;&#1072;&#1081;&#1085;&#1086;&#1077; &#1095;&#1080;&#1089;&#1083;&#1086;: &#1074;&#1099;&#1079;&#1086;&#1074;&#1077;&#1084; &#1088;&#1072;&#1089;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1077;&#1085;&#1080;&#1077; &#1082;&#1072;&#1082; &#1092;&#1091;&#1085;&#1082;&#1094;&#1080;&#1102;,
    //  &#1087;&#1077;&#1088;&#1077;&#1076;&#1072;&#1074; &#1075;&#1077;&#1085;&#1077;&#1088;&#1072;&#1090;&#1086;&#1088; &#1087;&#1088;&#1086;&#1080;&#1079;&#1074;&#1086;&#1083;&#1100;&#1085;&#1099;&#1093; &#1094;&#1077;&#1083;&#1099;&#1093; &#1095;&#1080;&#1089;&#1077;&#1083; &#1082;&#1072;&#1082; &#1072;&#1088;&#1075;&#1091;&#1084;&#1077;&#1085;&#1090;.
    return distribution(generator.engine);
}

bool checkBGColor(Colr& colr)
{
    if((colr.red != BACKGROUND_COLOR.r) && (colr.green != BACKGROUND_COLOR.g) && (colr.blue != BACKGROUND_COLOR.b))
    {
        return 1;
    }    
    else
    {
        return 0;
    }    
     
}

Colr initColor(PRNG generator, set<Colr>& isColrs)
{
    Colr colr;
    colr.red = random_index(generator, 256);
    colr.green = random_index(generator, 256);
    colr.blue = random_index(generator, 256);
    if(isColrs.empty() || (isColrs.find(colr) == isColrs.end()) && checkBGColor(colr))
    {
        isColrs.insert(colr);
        return colr;
    }
    else
    {
        initColor(generator, isColrs);        
    }
}

void pollEvents(RenderWindow& window)
{
    Event event{};
    while (window.pollEvent(event))
    {
        switch (event.type)
        {
        case Event::Closed:
            window.close();
            break;
        case Event::Closed:
            window.close();
            break;    
        default:
            break;  
        }
    }
}

float length(const Vector2f& value)
{
    return std::hypot(value.x, value.y);
}

float distance(const Ball& ball, const Ball& curr)
{
    return length(ball.shape.getPosition() - curr.shape.getPosition());
}

float dot(const Vector2f& left, const Vector2f& right)
{
    return left.x * right.x + left.y * right.y;
}

float sqr(float value)
{
    return value * value;
}

sf::Vector2f getSpeedAfterStrike(const Ball& first, const Ball& second)
{
    const Vector2f deltaSpeed = first.offset - second.offset;
    const Vector2f deltaPos = first.shape.getPosition() - second.shape.getPosition();
    return first.offset - deltaPos * (dot(deltaSpeed, deltaPos) / sqr(length(deltaPos)));
}

void update(vector<Ball>& balls, float deltaTime)
{
    constexpr float MAX_DELTA_TIME = 0.1f;
    deltaTime = std::min(deltaTime, MAX_DELTA_TIME);

    for (auto& ball: balls)
    {
        if ((ball.shape.getPosition().x + ball.shape.getRadius() >= WINDOW_WIDTH) || (ball.shape.getPosition().y + ball.shape.getRadius() >= WINDOW_HEIGHT)
        || (ball.shape.getPosition().x - ball.shape.getRadius() <= 0) || (ball.shape.getPosition().y - ball.shape.getRadius() <= 0))
        {
            ball.offset = -ball.offset;
        }
    }

    for (size_t fi = 0; fi < balls.size(); ++fi)
    {
        for (size_t si = fi + 1; si < balls.size(); ++si)
        {
            Ball& first = balls[fi];
            Ball& second = balls[si];
            if (distance(first, second) <= (first.shape.getRadius() + second.shape.getRadius()))
            {
                const Vector2f newFirstSpeed = getSpeedAfterStrike(first, second);
                const Vector2f newSecondSpeed = getSpeedAfterStrike(second, first);
                first.offset = newFirstSpeed;
                second.offset = newSecondSpeed;
            }
        }
    }

    for (auto& ball: balls)
    {
        ball.shape.move(ball.offset * deltaTime);
    }
}

void redrawFrame(RenderWindow& window, vector<Ball>& balls)
{
    window.clear(BACKGROUND_COLOR);
    for (auto& ball: balls)
    {
        window.draw(ball.shape);        
    }
    window.display();
}

void initBall(PRNG generator, vector<Ball>& balls, Ball& ball, set<Colr>& isColrs)
{
    const vector<float> sizes = {
        40,
        40,
        40,
        40
    };    
   
    const vector<Vector2f> positions = {
        { 5* sizes.at(0), 5 * sizes.at(0) },
        { WINDOW_WIDTH - 3 * sizes.at(1), WINDOW_HEIGHT - 12 * sizes.at(1) },
        { WINDOW_WIDTH / 2, WINDOW_HEIGHT / 2 },
        { WINDOW_WIDTH - 3 * sizes.at(3), WINDOW_HEIGHT - 3 * sizes.at(3) }
    };

    for (int i = 0; i < BALLS_COUNT; ++i)
    {
        balls.at(i).offset.x = random_index(generator, 250);
        balls.at(i).offset.y = random_index(generator, 250);
        balls.at(i).shape.setRadius(sizes.at(i));
        balls.at(i).shape.setPosition(positions.at(i));
        Colr colr = initColor(generator, isColrs);
        balls.at(i).shape.setFillColor(sf::Color(colr.red, colr.green, colr.blue));
        balls.at(i).shape.setOrigin(balls.at(i).shape.getRadius(), balls.at(i).shape.getRadius());
    }
}

void init(PRNG generator, set<Colr>& isColrs, vector<Ball>& balls, Ball& ball)
{
    initBall(generator, balls, ball, isColrs);
}

int main()
{
    Clock clock;
    ContextSettings settings;
    RenderWindow window(VideoMode({WINDOW_WIDTH, WINDOW_HEIGHT}), WINDOW_TITLE, Style::Default, settings);
    vector<Ball> balls(BALLS_COUNT);
    PRNG generator;
    Ball ball;
    set<Colr> isColrs;

    initGenerator(generator);
    init(generator, isColrs, balls, ball);

    while (window.isOpen())
    {
        float deltaTime = clock.restart().asSeconds();
        pollEvents(window);
        update(balls, deltaTime);
        redrawFrame(window, balls);
    }
}
 

Anybody help me please, where's i was wrong?

Pages: [1]