Azide

文章 分类
11 2

站点介绍

摸鱼!都可以摸

C++小游戏HitPlane开发记录

Azote 2021-04-26 1614 0条评论 文章 C++SFML

首页 / 正文

第一步 在vscode安装SFML

21.4.26 20:37

下载并配置SFML

  1. 进入SFML官网下载页面
  2. 点击 SFML 2.5.1(当前最新版)
  3. 选择 GCC 7.3.0 MinGW (SEH) - 64-bit 下载
  4. 解压到一个好的位置
  5. 修改环境变量Path,添加SFML的bin文件夹路径
  6. 创建两个新变量
    • 变量名:CPLUS_INCLUDE_PATH
      变量值:填写SFML的include文件夹路径
    • 变量名:LIBRARY_PATH
      变量值:填写SFML的lib文件夹路径

配置vscode

  1. 安装code runner与C/C++两个插件
  2. 打开工作文件夹中的.vscode文件夹
  3. 打开c_cpp_properties.json,向includePath中添加SMFL的include文件夹路径
  4. 打开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

  1. 在游戏循环外创建一个飞机的材质并载入纹理:
    sf::Texture GMPlaneTex;
    GMPlaneTex.loadFromFile("resources/image/shoot.png", sf::IntRect(165, 360, 102, 126));
    //使用IntRect函数扣下材质图片的特定部分,其参数依次为左上角x,左上角y,材质长,材质宽
  1. 创建飞机的实体并载入材质:
     sf::Sprite GMPlane;
     GMPlane.setTexture(GMPlaneTex);
  1. 为飞机确定好在窗口中的显示位置:
    GMPlane.setPosition(sf::Vector2f(GMPlaneRealX, GMPlaneRealY));
    //Vector2f是SFML中创建一对浮点坐标的函数
    //实体的定位点默认为其左上角,但有函数可以对其进行修改
  1. 在游戏循环中绘制,即使用在前文提到的window.draw()
    (注意,window只是你创建实例的名字,而非通用名称)

    window.draw(GMPlane);

  2. 现在运行你的代码,一架飞机将会出现在生成的窗口中


第五步 左右横跳

21.06.04

游戏循环每循环一次就代表一帧

-- 到底了 --

日历

2025年04月

  12345
6789101112
13141516171819
20212223242526
27282930   

友情链接

文章目录