文章目录
- 1. 下载安装SFML库
- 2. 创建C++项目并配置SFML
- 配置include目录和库目录
- 链接SFML库
- 配置动态链接库
- 3. 测试
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图形窗口
通过键盘方向键控制移动绿色方块