VisualStudio2022配置2D图形库SFML

1. 下载安装SFML库

SFML(Simple and Fast Multimedia Library)C++库,适合2D游戏和图形界面,提供了以下模块:

  • Graphics 渲染 2D 形状等
  • Windows 管理窗口和处理用户输入事件
  • Audio 播放音频文件,wav ogg等格式
  • System 管理实践、线程等系统操作
  • Network 支持TCP/UDP网络通信
    适合初学小型开发
    在这里插入图片描述

SFML官网 下载适用于Visual Studio的SFML库
官方网址:https://www.sfml-dev.org/download/sfml/2.6.0/

下载下来,22MB左右在这里插入图片描述
将SFML文件夹解压,记住解压的位置
(如 D:\ProgramFiles\SFML-2.6.0)
在这里插入图片描述

2. 创建C++项目并配置SFML

配置include目录和库目录

打开Visual Studio,创建一个新的“控制台应用”项目(C++)
右键点击项目 -> 属性。
在“VC++目录”下,找到“包含目录”,添加SFML的include文件夹路径(例如 D:\ProgramFiles\SFML-2.6.0\include)。
找到“库目录”,添加SFML的lib文件夹路径(例如 D:\ProgramFiles\SFML-2.6.0\lib)
在这里插入图片描述
在这里插入图片描述

链接SFML库

在项目属性中,配置Debug和Release

Debug
手动添加以下文件,分号隔开,或者该行尾向下三角下拉“编辑”打开对话框输入
sfml-audio-d.lib
sfml-graphics-d.lib
sfml-window-d.lib
sfml-system-d.lib
sfml-network-d.lib
在这里插入图片描述
Release,同样方式添加
手动添加以下库文件,分号隔开,或者该行尾向下三角下拉“编辑”打开对话框输入
sfml-audio.lib
sfml-graphics.lib
sfml-window.lib
sfml-system.lib
sfml-network.lib
在这里插入图片描述

配置动态链接库

将bin文件夹中的 .dll 文件复制到项目的输出目录(如 Debug 文件夹),这样,运行时能找到这些文件
在这里插入图片描述
在这里插入图片描述
这里需要说明一下
D:\code\CPPCode\ProTest02\x64
是项目的主输出目录,存放编译生成的最终可执行文件(.exe)和其他构建相关文件(如 .ilk 和 .pdb 文件),这是程序的运行文件位置。这里的 Debug 或 Release 子目录包含最终输出文件

D:\code\CPPCode\ProTest02\ProTest02\x64
是项目的构建过程中的中间文件存放目录,包含 .obj、.log 等文件,存储每个源文件的编译结果和构建日志。用于编译和调试信息。

在配置SFML动态链接库时,.dll文件需要放在可执行文件所在的 Debug 或 Release 文件夹下,这样可以运行时找到相关依赖

3. 测试

#include <SFML/Graphics.hpp> 

// 定义一个 Player 类
class Player {
public:
    sf::RectangleShape shape; // 使用SFML的RectangleShape类形状
    float speed = 5.0f;       // 定义移动速度

    // 构造函数,初始化形状和位置
    Player() {
        shape.setSize(sf::Vector2f(50, 50));       // 设置为50x50像素的正方形
        shape.setFillColor(sf::Color::Green);      // 设置颜色为绿色
        shape.setPosition(200, 200);               // 设置初始位置为(200, 200)
    }

    // 移动方法,根据键盘方向键更新位置
    void move(sf::Keyboard::Key key) {
        if (key == sf::Keyboard::Left)  shape.move(-speed, 0);   // 向左移动
        if (key == sf::Keyboard::Right) shape.move(speed, 0);    // 向右移动
        if (key == sf::Keyboard::Up)    shape.move(0, -speed);   // 向上移动
        if (key == sf::Keyboard::Down)  shape.move(0, speed);    // 向下移动
    }
};

int main() {
    // 创建一个窗口,大小为400x400,标题为"Simple Game"
    sf::RenderWindow window(sf::VideoMode(400, 400), "Simple Game");

    Player player; // 实例化Player对象

    // 主游戏循环
    while (window.isOpen()) 
    {
        sf::Event event;    // 创建一个事件对象,用于捕捉用户输入

        // 事件处理循环,捕捉所有窗口事件
        while (window.pollEvent(event)) 
        {
            if (event.type == sf::Event::Closed)   // 检查是否有关闭窗口的事件
                window.close();                    // 关闭窗口

            // 检查按键事件,调用Player的move方法来移动形状
            if (event.type == sf::Event::KeyPressed)
                player.move(event.key.code);
        }

        window.clear();            // 清除上一帧的内容
        window.draw(player.shape); // 绘制形状
        window.display();          // 显示绘制的内容
    }

    return 0; 
}

程序使用SFML库创建了一个简单的2D图形窗口
通过键盘方向键控制移动绿色方块
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dotdotyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值