SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Проблемы с отображением окна игры
В этой теме 0 ответов, 1 участник, последнее обновление Xsenia_Kuznetsova 5 года/лет, 1 месяц назад.
-
АвторСообщения
-
Добрый день!
При запуске программы появляется консольное окно, которое, впрочем, не реагирует на попытки ввода. Рядом с ним появляется просто белое окно, при наведении на которое мышка показывает загрузку.
При запуске в режиме debug выяснилось, что программа зацикливается на куске кода:while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed ||
(event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape))
window.close();
}Не могу понять, почему так происходит. Вроде в цикле все написано как в первом уроке курса.
Основной файл программы:
C++1234567891011121314151617181920212223242526272829303132333435363738394041#include <iostream>#include <SFML/System.hpp>#include <SFML/Window.hpp>#include <SFML/Graphics.hpp>#include <SFML/Main.hpp>#include "fountain.hpp"int main() {sf::RenderWindow window(sf::VideoMode(800, 600), "Color Burst");float drawingtime = 0.0;sf::Clock clock;sf::CircleShape shape(10.f);Fountain aFountain(&window, shape);aFountain.calculateShapesCoordinates();int coordinatesIndex = 0;window.setVerticalSyncEnabled(true);while (window.isOpen()) {sf::Event event;while (window.pollEvent(event)){if (event.type == sf::Event::Closed ||(event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape))window.close();}drawingtime += clock.restart().asSeconds();window.clear(sf::Color::Black); //!!if (drawingtime < 3) {aFountain.aCircle.setPosition(aFountain.shapesCoordinates[coordinatesIndex].x, aFountain.shapesCoordinates[coordinatesIndex].x);aFountain.aCircle.setFillColor(sf::Color(100, 250, 50));window.draw(aFountain.aCircle);}if (drawingtime > 9) {drawingtime = 0;}window.display();}return 0;}Дополнительные заголовочный и cpp.
C++12345678910111213141516171819#ifndef FOUNTAIN_HPP#define FOUNTAIN_HPP#include <SFML/System.hpp>#include <SFML/Window.hpp>#include <SFML/Graphics.hpp>#include <SFML/Main.hpp>class Fountain{public:sf::RenderWindow* window;sf::CircleShape aCircle;sf::Vector2i shapesCoordinates[5];Fountain(sf::RenderWindow *window, sf::CircleShape& shape);~Fountain();void calculateShapesCoordinates();};#endifC++12345678910111213141516171819#include <math.h>#include "fountain.hpp"Fountain::Fountain(sf::RenderWindow *window, sf::CircleShape& shape) {this->window = window;this->aCircle = shape;}Fountain::~Fountain() {}void Fountain::calculateShapesCoordinates() {sf::Vector2i extraForCoordinates = { sf::Mouse::getPosition(*window).x, sf::Mouse::getPosition(*window).y };shapesCoordinates[0] = { static_cast<int>(sqrt(extraForCoordinates.x)), static_cast<int>(sqrt(extraForCoordinates.y)) };for (int i = 1; i != 5; ++i) {int j = --i;shapesCoordinates[i] = { static_cast<int>(sqrt(shapesCoordinates[j].x)), static_cast<int>(-sqrt(shapesCoordinates[j].y)) };}} -
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.