一、配置SFML库

首先,去这个网站:(https://www.sfml-dev.org/)

下载2.5.1版本(如果用其他版本的编译器就用其他匹配的版本)

一定不要下成3.x版本!!!!不然会报错!!!!

然后,将其解压到桌面或其他路径,把里面的include文件夹拿出来(注意! 一定要看下级目录,里面有.hpp文件的才对)将其重命名成SFML,放在编程软件官方头文件库,再从首级目录中的lib文件夹中的所有东西全部复制到编程软件官方lib文件夹里。最后,把bin文件夹中的所有东西复制到编程软件官方bin文件夹。

二、编译配置

打开工具栏,在编译选项里在链接参数中写-DSFML_STATIC -lsfml-graphics-s -lsfml-window-s -lsfml-system-s -lsfml-audio-s -lsfml-network-s -lopengl32 -lfreetype -lwinmm -lgdi32 -lopenal32 -lflac -lvorbisenc -lvorbisfile -lvorbis -logg

这样就配置完成了。

三、测试

创建新文件,输入以下代码

#include <SFML/Graphics.hpp>

int main() {
    sf::RenderWindow window(sf::VideoMode(800, 600), "SFML Test");
    
    sf::CircleShape shape(100.f);
    shape.setFillColor(sf::Color::Blue);  // 试试蓝色
    shape.setPosition(350, 250);
    
    while (window.isOpen()) {
        sf::Event event;
        while (window.pollEvent(event)) {
            if (event.type == sf::Event::Closed)
                window.close();
        }
        
        window.clear(sf::Color::White);  // 背景设为白色,更容易看清
        window.draw(shape);
        window.display();
    }
    
    return 0;
}

只要能看到蓝色圆形就说明成功了。

四、贪吃蛇程序

(程序)[file:///Q:/c/pc/C++/SFML/贪吃蛇]

2 条评论

  • 666
    • @ 2026-7-26 11:54:58

      呃呃呃,链接出了点问题,代码:

      #include<SFML/Graphics.hpp>
      #include<time.h>
      #include<stdlib.h>
      using namespace sf;
      int N=30;
      int M=20;
      int size=16;
      int w=size*N;
      int h=size*M;
      int dir,num=4;
      struct Snake{
      	int x,y;
      }s[100];
      struct Food{
      	int x,y;
      }f;
      struct Shit{
      	int x,y;
      }sh;
      void Tick(){
      	for(int i=num;i>0;i--){
      		s[i].x=s[i-1].x;
      		s[i].y=s[i-1].y;
      	}
      	if(dir==0){
      		s[0].y+=1;
      	}
      	if(dir==1){
      		s[0].x-=1;
      	}
      	if(dir==2){
      		s[0].x+=1;
      	}
      	if(dir==3){
      		s[0].y-=1;
      	}
      	if(s[0].x==f.x && s[0].y==f.y){
      		num++;
      		f.x=rand()%N;
      		f.y=rand()%M;
      	}
      	if(s[0].x==sh.x && s[0].y==sh.y){
      		num--;
      		sh.x=rand()%N;
      		sh.y=rand()%M;
      	}
      	if(num<=0){
      		num=4;
      	}
      	if(s[0].x>N){
      		s[0].x=0;
      	}
      	if(s[0].x<0){
      		s[0].x=N;
      	}
      	if(s[0].y>M){
      		s[0].y=0;
      	}
      	if(s[0].y<0){
      		s[0].y=M;
      	}
      	for(int i=1;i<=num;i++){
      		if(s[0].x==s[i].x && s[0].y==s[i].y){
      			num=i;
      		}
      	}
      }
      int main(){
      	srand((unsigned)time(NULL));
      	RenderWindow window(VideoMode(w,h),"Snake Game!");
      	Texture t1,t2,t3,t4;
      	t1.loadFromFile("images/white.png");
      	t2.loadFromFile("images/red.png");
      	t3.loadFromFile("images/food.png");
      	t4.loadFromFile("images/shit.png");
      	Sprite sprite1(t1);
      	Sprite sprite2(t2);
      	Sprite sprite3(t3);
      	Sprite sprite4(t4);
      	Clock clock;
      	float timer=0,delay=0.1;
      	f.x=10;
      	f.y=10;
      	while(window.isOpen()){
      		float time=clock.getElapsedTime().asSeconds();
      		clock.restart();
      		timer+=time;
      		Event e;
      		while(window.pollEvent(e)){
      			if(e.type==Event::Closed){
      				window.close();
      			}
      		}
      		if(Keyboard::isKeyPressed(Keyboard::Down)){
      			dir=0;
      		}
      		if(Keyboard::isKeyPressed(Keyboard::Left)){
      			dir=1;
      		}
      		if(Keyboard::isKeyPressed(Keyboard::Right)){
      			dir=2;
      		}
      		if(Keyboard::isKeyPressed(Keyboard::Up)){
      			dir=3;
      		}
      		if(timer>delay){
      			timer=0;
      			Tick();
      		}
      		window.clear();
      		for(int i=0;i<N;i++){
      			for(int j=0;j<M;j++){
      				sprite1.setPosition(i*size,j*size);
      				window.draw(sprite1);
      			}
      		}
      		for(int i=0;i<num;i++){
      			sprite2.setPosition(s[i].x*size,s[i].y*size);
      			window.draw(sprite2);
      		}
      		sprite3.setPosition(f.x*size,f.y*size);
      		window.draw(sprite3);
      		sprite4.setPosition(sh.x*size,sh.y*size);
      		window.draw(sprite4);
      		window.display();
      	}
      }
      

      图片: 保存在/images目录

      • 1