【问题标题】:C++ SFML Draw objects outside of while (window.isOpen()) loopC++ SFML 在 while (window.isOpen()) 循环之外绘制对象
【发布时间】:2016-07-03 23:11:25
【问题描述】:
int moveDown = 10;
int moveRight = 10;

    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 10; j++) {
            xEnemies[j].drawEnemy(window);
            xEnemies[j].setPos(sf::Vector2f(moveRight, moveDown));
            moveRight += 50;
        }
        moveDown += 50;
    }

大家好,我在这里尝试用循环和矢量在屏幕上绘制敌人。我希望玩家能够摧毁敌人,但是每当敌人被摧毁时,敌人就会再次重绘,因为它在 while(isOpen()) 循环下。所以我的问题是:有没有办法在这个循环之外绘制对象?

【问题讨论】:

  • 不画破坏的怎么样?

标签: c++ loops drawing draw sfml


【解决方案1】:

停止将绘图操作视为一次性操作。这不像纸那样工作,你在纸上画一次,然后它就在那里,直到你擦掉它。使用计算机,图形每秒会被擦除多次,每次发生这种情况时,您的工作就是重绘它们。这就是图形框架和现代图形卡的工作方式。

您的所有绘图需要在您的游戏循环中。

你需要的是在你的敌人类中设置一个布尔标志,如果敌人被摧毁。如果你不想,那么在你的循环中放一个if,不要画那些被破坏的。或者,您可以完全从 xEnemies 向量中移除被摧毁的敌人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 2018-07-03
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 2016-05-27
    相关资源
    最近更新 更多