第一步 在vscode安装SFML
21.4.26 20:37
下载并配置SFML
- 进入SFML官网下载页面
- 点击 SFML 2.5.1(当前最新版)
- 选择 GCC 7.3.0 MinGW (SEH) - 64-bit 下载
- 解压到一个好的位置
- 修改环境变量Path,添加SFML的bin文件夹路径
- 创建两个新变量
- 变量名:CPLUS_INCLUDE_PATH
变量值:填写SFML的include文件夹路径 - 变量名:LIBRARY_PATH
变量值:填写SFML的lib文件夹路径
- 变量名:CPLUS_INCLUDE_PATH
配置vscode
- 安装code runner与C/C++两个插件
- 打开工作文件夹中的.vscode文件夹
- 打开c_cpp_properties.json,向includePath中添加SMFL的include文件夹路径
- 打开settings.json,向code-runner.executorMap中的cpp一栏中添加
-lsfml-graphics -lsfml-window -lsfml-system
上述vscode配置过程仅适用于已经vscode已经安装与配置好MinGW后进行
vscode的MinGw配置可参考:知乎答主-冷却、知乎答主-谭九鼎
以上步骤进行完成之后,SFML应该已经可以正常运行了,可以运行一下SMFL示例代码进行检验:
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window(sf::VideoMode(200, 200), "SFML works!");
sf::CircleShape shape(100.f);
shape.setFillColor(sf::Color::Green);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(shape);
window.display();
}
return 0;
}
第二步 制作一个游戏开始界面!(还是先看SFML的文档吧)
21.05.13 阅读文档中
好力!新手教程读了大半
我已经掌握了一切.jpg
———— 21.05.17
第e步 简略介绍一些SFML的功能
21.05.17
sf::RenderWindow//一个关于窗口的类
sf::Texture//一个储存材质的类
sf::Sprite//可以认为是一个实体?(一个可以穿上材质的对象)
第三步 创建一个窗口
21.05.17
- 打开已经配置好的的vscode工作文件夹,创建一个项目文件夹——我称之为HitPlane
- 创建第一个文件main.cpp(或者什么你喜欢的名字)
- 将SFML头文件包含其中:
include <SFML/Graphics.hpp>//现在我们可以调用其中的东西啦!
- 想要生成出一个游戏窗口,首先我们要实例化一个对象
sf::RenderWindow window(sf::VideoMode(windowX, windowY), "Hit Plane!");//windowX,windowY为窗口的大小 - 为了方便对游戏进行控制,将窗口帧率限制为60帧
window.setFramerateLimit(60);//需要在实例化窗口之后进行 - 创建游戏循环
·while (window.isOpen())
{
while(window.pollEvent(event)){
if(event.type==sf::Event::Closed)
window.close();
}
//do something...
window.clear(sf::Color::Red);
window.draw();
window.display();
}
-
如果一切正常,你将会看到一个红色的窗口
第四步 让飞机出现在窗口里
21.05.18
- 在游戏循环外创建一个飞机的材质并载入纹理:
sf::Texture GMPlaneTex;
GMPlaneTex.loadFromFile("resources/image/shoot.png", sf::IntRect(165, 360, 102, 126));
//使用IntRect函数扣下材质图片的特定部分,其参数依次为左上角x,左上角y,材质长,材质宽
- 创建飞机的实体并载入材质:
sf::Sprite GMPlane;
GMPlane.setTexture(GMPlaneTex);
- 为飞机确定好在窗口中的显示位置:
GMPlane.setPosition(sf::Vector2f(GMPlaneRealX, GMPlaneRealY));
//Vector2f是SFML中创建一对浮点坐标的函数
//实体的定位点默认为其左上角,但有函数可以对其进行修改
-
在游戏循环中绘制,即使用在前文提到的window.draw()
(注意,window只是你创建实例的名字,而非通用名称)window.draw(GMPlane);
-
现在运行你的代码,一架飞机将会出现在生成的窗口中
第五步 左右横跳
21.06.04
游戏循环每循环一次就代表一帧