Форум программистов, компьютерный форум, киберфорум
SFML
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
1 / 1 / 0
Регистрация: 14.05.2020
Сообщений: 143

Почему не отрисовывается фигура в SFML

26.07.2021, 20:38. Показов 3363. Ответов 7
Метки c++, sfml (Все метки)

Студворк — интернет-сервис помощи студентам
Почему не отрисовывается фигура?

Param_game.h

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#pragma once
#include <SFML/Graphics.hpp>
using namespace sf;
 
class Param_Game
{
public:
    Param_Game();
    
    void event_duration(); // наше события(закрыть окно, двигать и прочее
    void render(); // отрисовка окна
 
    RenderWindow window;
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
board.h
#pragma once
#include <SFML/Graphics.hpp>
#include "Param_Game.h"
using namespace sf;
 
class board
{
public:
    board(); // отрисовка нашей доски
 
    RectangleShape _board;
    Param_Game win;
    int coordinate_x = 240;
    int coordinate_y = 585;
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "board.h"
#include "Param_Game.h"
#include <SFML/Graphics.hpp>
using namespace sf;
 
 
board::board():_board(Vector2f(120.f,15.f)) {
    _board.move(coordinate_x, coordinate_y);
    _board.setFillColor(Color::Black);
    win.window.draw(_board);
    win.window.display();
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.07.2021, 20:38
Ответы с готовыми решениями:

Не отрисовывается фигура в Webgl
Здравствуйте. Начинаю осваивать webgl. Начал с изучения этих уроков. Прочитал и вроде бы понял все уроки. Начал писать собственную...

Как формируется фигура и как она отрисовывается?
Как формируется фигура и как она отрисовывается? Кто чем сможет помогите, очень надо... Заранее спасибо.

Почему не отрисовывается картинка?
Написал класс, наследующий ViewSurface MainView. Написал метод onDraw, в котором поле заливается белым цветом, и вызывается метод draw...

7
249 / 79 / 31
Регистрация: 29.03.2020
Сообщений: 497
27.07.2021, 07:36
Цитата Сообщение от Kilo Посмотреть сообщение
Почему не отрисовывается фигура?
Выложи весь код
0
1 / 1 / 0
Регистрация: 14.05.2020
Сообщений: 143
27.07.2021, 11:40  [ТС]
Param_game.h

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#pragma once
#include <SFML/Graphics.hpp>
using namespace sf;
 
class Param_Game
{
public:
    Param_Game();
    
    void event_duration(); // наше события(закрыть окно, двигать и прочее
    void render(); // отрисовка окна
 
    RenderWindow window;
};


board.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#pragma once
#include <SFML/Graphics.hpp>
#include "Param_Game.h"
using namespace sf;
 
class board
{
public:
    board(); // отрисовка нашей доски
 
    RectangleShape _board;
    Param_Game win;
    int coordinate_x = 240;
    int coordinate_y = 585;
};


board.c
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "board.h"
#include "Param_Game.h"
#include <SFML/Graphics.hpp>
using namespace sf;
 
 
board::board():_board(Vector2f(120.f,15.f)) {
    _board.move(coordinate_x, coordinate_y);
    _board.setFillColor(Color::Black);
    win.window.draw(_board);
    win.window.display();
}

Param_game.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "Param_Game.h"
#include <SFML/Graphics.hpp>
using namespace sf;
 
Param_Game::Param_Game() : window(VideoMode(600, 600), "SFML Works", Style::Default) {
    window.clear(Color(127, 181, 181, 0));
    window.display();
}
 
void Param_Game::render() {
    event_duration();
    window.clear();
}
 
void Param_Game::event_duration() {
    Event event;
    while (window.isOpen()) {
        while (window.pollEvent(event)) {
            if (event.type == Event::Closed)
                window.close();
        }
    }
}


main.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
int main() {
    Param_Game game;
    game.render();
    board board;
 
    return 0;
}
0
Just Do It!
 Аватар для XLAT
4211 / 2668 / 655
Регистрация: 23.09.2014
Сообщений: 9,082
Записей в блоге: 3
27.07.2021, 13:06
Лучший ответ Сообщение было отмечено Kilo как решение

Решение

Цитата Сообщение от Kilo Посмотреть сообщение
Почему не отрисовывается фигура?
потому что главный цикл пустой...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
///----------------------------------------------------------------------------|
/// ...
///----------------------------------------------------------------------------:
#include <SFML/Graphics.hpp>
 
using namespace sf;
 
//#include "board.h"
class board
{
public:
    board(); // отрисовка нашей доски
 
    RectangleShape _board;
    int coordinate_x = 75;
    int coordinate_y = 30;
 
    auto& get(){return _board;}
};
 
board::board():_board(Vector2f(120.f,15.f))
{   _board.move(coordinate_x, coordinate_y);
    _board.setFillColor(Color::Red);
}
 
//#include "Param_Game.h"
class Param_Game
{
public:
    Param_Game();
 
    void event_duration(); // наше события(закрыть окно, двигать и прочее
    void render(); // отрисовка окна
 
    RenderWindow window;
 
    board Board;
};
 
Param_Game::Param_Game() : window(VideoMode(600, 600), "SFML Works", Style::Default)
{
}
 
void Param_Game::render()
{   event_duration();
}
 
void Param_Game::event_duration()
{   Event event;
    while (window.isOpen())
    {   while (window.pollEvent(event))
        {   if (event.type == Event::Closed)
                window.close();
        }
        window.clear(Color(127, 181, 181, 0));
        window.draw(Board.get());
        window.display();
    }
}
 
int main()
{   Param_Game game;
               game.render();
 
    return 0;
}


Kilo, то что вы нарезали на два класса это хорошо,
но в вашем случае классы должны знать друг о друге или хотя бы один класс должен знать о другом,
иначе нужен третий класс посредник, который будет как цемент скреплять два других, которые ничего не знают друг о друге.
Изображения
 
0
1 / 1 / 0
Регистрация: 14.05.2020
Сообщений: 143
27.07.2021, 21:15  [ТС]
А почему пишет ошибку: Board - неизвестный спецификатор переопределения
0
Just Do It!
 Аватар для XLAT
4211 / 2668 / 655
Регистрация: 23.09.2014
Сообщений: 9,082
Записей в блоге: 3
27.07.2021, 21:21
Цитата Сообщение от Kilo Посмотреть сообщение
А почему пишет ошибку: Board - неизвестный спецификатор переопределения
куда то не туда воткнули, мне отсюда не видно.

Добавлено через 1 минуту
или если по порядку:
у вас код из поста номер 4 запускается?
0
1 / 1 / 0
Регистрация: 14.05.2020
Сообщений: 143
27.07.2021, 21:22  [ТС]
Да, если запускать все одним файлом - работает. Но как начинаешь разбивать, то видимо компилятор не видит переменную
0
Just Do It!
 Аватар для XLAT
4211 / 2668 / 655
Регистрация: 23.09.2014
Сообщений: 9,082
Записей в блоге: 3
27.07.2021, 22:04
Лучший ответ Сообщение было отмечено Kilo как решение

Решение

Kilo,
вот разрежьте по меткам:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
///----------------------------------------------------------------------------|
/// ...
///----------------------------------------------------------------------------:
//#include "board.h"
#include <SFML/Graphics.hpp>
using namespace sf;
 
class board
{
public:
    board(); // отрисовка нашей доски
 
    RectangleShape _board;
    int coordinate_x = 75;
    int coordinate_y = 30;
 
    auto& get(){return _board;}
};
 
///----------------------------------------------------------------------------:
//#include "board.cpp"
#include "board.h"
board::board():_board(Vector2f(120.f,15.f))
{   _board.move(coordinate_x, coordinate_y);
    _board.setFillColor(Color::Red);
}
 
--------------------------------------------------------------------------------
//#include "Param_Game.h"
#include "board.h"
class Param_Game
{
public:
    Param_Game();
 
    void event_duration(); // наше события(закрыть окно, двигать и прочее
    void render(); // отрисовка окна
 
    RenderWindow window;
 
    board Board;
};
 
--------------------------------------------------------------------------------
//#include "Param_Game.cpp"
#include "Param_Game.h"
Param_Game::Param_Game() : window(VideoMode(600, 600), "SFML Works", Style::Default)
{
}
 
void Param_Game::render()
{   event_duration();
}
 
void Param_Game::event_duration()
{   Event event;
    while (window.isOpen())
    {   while (window.pollEvent(event))
        {   if (event.type == Event::Closed)
                window.close();
        }
        window.clear(Color(127, 181, 181, 0));
        window.draw(Board.get());
        window.display();
    }
}
 
--------------------------------------------------------------------------------
/// "main.cpp"
#include "Param_Game.h"
int main()
{   Param_Game game;
               game.render();
 
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.07.2021, 22:04
Помогаю со студенческими работами здесь

Почему первый раз на канву формы рисунок не отрисовывается?
////////// Форму (Для предпросмотра всё на Canvas) // ВОТ ПОЧЕМУ НА КАНВАС ФОРМЫ ИЗ ЭТОГО ОБРАБОТЧИКА // НИЧЕГО НЕ РИСУЕТЬСЯ...

Почему фигура не вращается
делал по формулам xnew:=x*cos(fi)+y*sin(fi) ynew:=(-x)*sin(fi)+y*cos(fi) помогите

Не понимаю, почему не рисуется фигура
Делаю тетрис, реализовал функция построения сетки(Grid), я так понял, что всё вызывается в paintEvent 1 раз, без вызова, ну покидал туда...

Почему фигура двигается рывками
Доброе утро, форумчане. У меня имеется макрос - плавного перемещения фигуры. Чтобы она переместилась - надо нажать на кнопку пуск и...

Почему фигура, к которой применена команда lookat, трансформируется?
Помогите пожалуйста! При выводе на экран та фигура, к которой применена команда lookat почему то трансформируется ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru