ООП, реализация вывода картинок в классе.

SFML и C++ Уроки \ Разработка игр Форумы SFML Graphics ООП, реализация вывода картинок в классе.

В этой теме 4 ответа, 2 участника, последнее обновление PavloBandera PavloBandera 7 года/лет, 11 мес. назад.

Просмотр 5 сообщений - с 1 по 5 (из 5 всего)
  • Автор
    Сообщения
  • #3670
    PavloBandera
    PavloBandera
    Участник
    Сообщений:4

    Зарегистрирован:
    30.04.2016

    Репутация:0

    Вот такие дела.

    Есть класс, в котором должен выводится спрайт на екран, а вместо этого к напроч слетает винда(ну по виду похоже на то, что проводник просто перестает работать).

    Вот класс.

    class Fon
    {
    public:
    Image fon;
    Texture fonTex;
    Sprite fonSp;

    Fon(String F, int x, int y,RenderWindow &RM,float R)
    {

    fon.loadFromFile(F);
    fonTex.loadFromImage(fon);
    fonSp.setTexture(fonTex);
    fonSp.setPosition(x, y);
    fonSp.setRotation(R);

    while (RM.isOpen())
    {
    RM.draw(fonSp);
    }
    }
    };

    Вот вся программа.

    #include <SFML/Graphics.hpp>
    #include<iostream>
    #include <string>
    using namespace sf;
    using namespace std;

    class Fon
    {
    public:
    Image fon;
    Texture fonTex;
    Sprite fonSp;

    Fon(String F, int x, int y,RenderWindow &RM,float R)
    {

    fon.loadFromFile(F);
    fonTex.loadFromImage(fon);
    fonSp.setTexture(fonTex);
    fonSp.setPosition(x, y);
    fonSp.setRotation(R);

    while (RM.isOpen())
    {
    RM.draw(fonSp);
    }
    }
    };

    int main()
    {
    RenderWindow window(VideoMode(1000, 720), “Kusa4″);
    setlocale(LC_ALL, “Rus”);
    bool Kl1 = false, Kl2 = false, Kl3 = false;

    Fon fon1(“fom.png”, 0, 0, window,0);
    Fon r2(“k1.gif”, 366, 100, window,1);
    Fon r3(“k2.gif”, 366, 250, window,1);
    Fon r4(“k3.gif”, 366, 400, window,1);

    while (window.isOpen())
    {

    Event event;
    while (window.pollEvent(event))
    {
    switch (event.type)
    {
    case Event::Closed:
    window.close();
    break;

    case Event::MouseMoved:

    if (event.mouseMove.y >= 100 && event.mouseMove.y <= 183 && event.mouseMove.x >= 360 && event.mouseMove.x <= 663) //обычное считывание координатов
    {
    Kl1 = true;
    }
    else
    Kl1 = false;

    if (event.mouseMove.y >= 250 && event.mouseMove.y <= 333 && event.mouseMove.x >= 360 && event.mouseMove.x <= 663) ////обычное считывание координатов
    Kl2 = true;
    else
    Kl2 = false;
    if (event.mouseMove.y >= 400 && event.mouseMove.y <= 483 && event.mouseMove.x >= 360 && event.mouseMove.x <= 663) ////обычное считывание координатов
    Kl3 = true;
    else
    Kl3 = false;
    //cout << “X = ” << event.mouseMove.x << ” Y = ” << event.mouseMove.y << endl;
    case Event::MouseButtonPressed:
    if (event.mouseButton.button == Mouse::Left)
    {
    if (Kl1 == true)
    cout << “Нажатие номер 1!\n”;
    if (Kl2 == true)
    cout << “Нажатие номер 2! \n”;
    if (Kl3 == true)
    cout << “Нажатие номер 3! \n”;

    }
    }
    }
    window.clear();
    window.display();
    }

    return 0;
    }

    В  рабочей версии просто вывод кнопок.

    В конце просто все так.

    window.clear();
    window.draw(fon1.fonSp);
    window.draw(r2.fonSp); // Картинка ввода
    window.draw(r3.fonSp); // Картинка картинка поиска
    window.draw(r4.fonSp); // Картинка выхода
    window.display();

    И класс, естесвенно, выглядит немного иначе.

     

     

    #3674
    Павел Букреев
    Павел Букреев
    Хранитель
    Сообщений:582

    Зарегистрирован:
    04.01.2015

    Репутация:106

    используй в след раз кнопку вставки кода.
    а простой тестовый код норм запускается?

    #3677
    PavloBandera
    PavloBandera
    Участник
    Сообщений:4

    Зарегистрирован:
    30.04.2016

    Репутация:0

    Что за кнопка вставки кода?

    Без именно єтого класса.

    С отрисовкой в конце картинок через поле класса, все норм.

    Но мне это не подходит, так как цель программы – вывод многих картинок, что будут добавлятся і исчезать.

    Скорее всего динамический массив объектов, и при том – НЕЗАВИСИМЫХ не от чего объектов)

    #3678
    PavloBandera
    PavloBandera
    Участник
    Сообщений:4

    Зарегистрирован:
    30.04.2016

    Репутация:0

    Сделал я этот класс, тепер онрисует как надо, но одна картинка налаживается одна на другую и выхотит, что та картинка что вызвалась первой, то только она и выводится.

    Как мне реализовать слои через основные методы SFML?

    #3679
    PavloBandera
    PavloBandera
    Участник
    Сообщений:4

    Зарегистрирован:
    30.04.2016

    Репутация:0

    Еще одна проблема.

    там не просто наложение картинок, а именно отображается только первая запущенная и все.

    Вот мой класс

Просмотр 5 сообщений - с 1 по 5 (из 5 всего)

Для ответа в этой теме необходимо авторизоваться.