does any one can help me to fix this program, please tell me how do you run the
ID: 3918215 • Letter: D
Question
does any one can help me to fix this program, please tell me how do you run the program and show me the output.
this is an error saying: SFML/Graphics.hpp: No such file or directory compilation terminated.
#include <SFML/Graphics.hpp>
#include <iostream>
using namespace sf;
int main()
{
RenderWindow app(VideoMode(256,256), "15-Puzzle!");
app.setFramerateLimit(60);
Texture t;
t.loadFromFile("images/15.png");
int w = 64;
int grid[6][6] = {0};
Sprite sprite[20];
int n=0;
for (int i=0;i<4;i++)
for (int j=0;j<4;j++)
{
n++;
sprite[n].setTexture(t);
sprite[n].setTextureRect( IntRect(i*w,j*w,w,w) );
grid[i+1][j+1]=n;
}
while (app.isOpen())
{
Event e;
while (app.pollEvent(e))
{
if (e.type == Event::Closed)
app.close();
if (e.type == Event::MouseButtonPressed)
if (e.key.code == Mouse::Left)
{
Vector2i pos = Mouse::getPosition(app);
int x = pos.x/w + 1;
int y = pos.y/w + 1;
int dx=0;
int dy=0;
if (grid[x+1][y]==16) {dx=1; dy=0;};
if (grid[x][y+1]==16) {dx=0; dy=1;};
if (grid[x][y-1]==16) {dx=0; dy=-1;};
if (grid[x-1][y]==16) {dx=-1;dy=0;};
int n = grid[x][y];
grid[x][y] = 16;
grid[x+dx][y+dy] = n;
//animation
sprite[16].move(-dx*w,-dy*w);
float speed=3;
for (int i=0;i<w;i+=speed)
{sprite[n].move(speed*dx,speed*dy);
app.draw(sprite[16]);
app.draw(sprite[n]);
app.display(); }
}
}
app.clear(Color::White);
for (int i=0;i<4;i++)
for (int j=0;j<4;j++)
{
int n = grid[i+1][j+1];
sprite[n].setPosition(i*w,j*w);
app.draw(sprite[n]);
}
app.display();
}
return 0;
}
Explanation / Answer
You are getting this error because during the linking phase, the compiler cannot find the SFML header files. Now installing SFML differs on different IDE like Visual Studio, CodeBlocks, etc.
I would suggest you to go through the tutorial series at https://www.sfml-dev.org/tutorials/2.3/#getting-started to install SFML on your IDE and then run this program.
If you follow the tutorial, then you probably set the path for the .hpp files as just /include, but the .hpp files are really in /include/SFML.
Hence, try modifying the header file to below and run the program again.
#include <include/SFML/Graphics.hpp>
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.