SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › установить размер окна
В этой теме 1 ответ, 2 участника, последнее обновление KindRedSand 6 года/лет, 2 мес. назад.
Просмотр 2 сообщений - с 1 по 2 (из 2 всего)
-
АвторСообщения
-
Добрый день!
решил продолжить свой марио. идея следующая есть класс окна, после делаю на основе класса окно “меню” , в окне меню есть пока только кнопочки играть и выход. при выборе играть создаем новое окно “игра”. при гибели персонажа при нажатии на ESC возвращаемся в окно “меню”. Тут беда не могу установить размер окна. кто может помогите. Хотя тут главный помощник
KindRedSandC++123456789101112131415161718#ifndef CSCREEN_H#define CSCREEN_H#include <SFML/Graphics.hpp>#include <iostream>using namespace ::sf;// создаём класс окнаclass cScreen{public:// размар окнаfloat vidX = 800;float vidY = 600;virtual int Run (sf::RenderWindow &App) = 0;};#endif CSCREEN_HC++123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155#ifndef SCREEN_H#define SCREEN_H#include <SFML/Graphics.hpp>#include <iostream>#include "cScreen.h"// новое окно наследуем от публичного класса окноclass screen_0 : public cScreen{private:int alpha_max;int alpha_div;bool playing;public:screen_0(void);virtual int Run(sf::RenderWindow &App);};screen_0::screen_0(void){alpha_max = 3 * 255;alpha_div = 3;playing = false;}int screen_0::Run(sf::RenderWindow &App){sf::Event Event;bool Running = true;sf::Texture Texture;sf::Sprite Sprite;int alpha = 0;sf::Font Font;sf::Text Menu1;sf::Text Menu2;sf::Text Menu3;int menu = 0;if (!Texture.loadFromFile("images/bg2.png")){std::cerr << "Error loading bg2.png" << std::endl;return (-1);}Sprite.setTexture(Texture);Sprite.setColor(sf::Color(255, 255, 255, alpha));if (!Font.loadFromFile("images/CyrilicOld.TTF")){std::cerr << "Error loading CyrilicOld.TTF" << std::endl;return (-1);}// меню текстовые кнопки задаём фон, размер шрифта, текст, позицию в окнеMenu1.setFont(Font);Menu1.setCharacterSize(20);Menu1.setString("Play");Menu1.setPosition({ 280.f, 160.f });Menu2.setFont(Font);Menu2.setCharacterSize(20);Menu2.setString("Exit");Menu2.setPosition({ 280.f, 220.f });Menu3.setFont(Font);Menu3.setCharacterSize(20);Menu3.setString("Continue");Menu3.setPosition({ 280.f, 160.f });if (playing){alpha = alpha_max;}// главный цикл если работает то...while (Running){// отслеживаем событияwhile (App.pollEvent(Event)){// если окно закрытоif (Event.type == sf::Event::Closed){return (-1); // возвращаем отрицательно число в майн цикл while}// отслеживаем нажатие кнопокif (Event.type == sf::Event::KeyPressed){switch (Event.key.code){case sf::Keyboard::Up:menu = 0;break;case sf::Keyboard::Down:menu = 1;break;case sf::Keyboard::Return:if (menu == 0){// если присваиваем истина запуск следующего окнаplaying = true;return (1);}else{// иначе закрываем всеreturn (-1);}break;default:break;}}}//меняем цвет надписей меню при их выбореif (alpha<alpha_max){alpha++;}Sprite.setColor(sf::Color(255, 255, 255, alpha / alpha_div));if (menu == 0){Menu1.setFillColor(sf::Color(255, 0, 0, 255));Menu2.setFillColor(sf::Color(255, 255, 255, 255));Menu3.setFillColor(sf::Color(255, 0, 0, 255));}else{Menu1.setFillColor(sf::Color(255, 255, 255, 255));Menu2.setFillColor(sf::Color(255, 0, 0, 255));Menu3.setFillColor(sf::Color(255, 255, 255, 255));}// очистка экранаApp.clear();//переход к выбранному окнуApp.draw(Sprite);if (alpha == alpha_max){if (playing){App.draw(Menu3);}else{App.draw(Menu1);}App.draw(Menu2);}App.display();}//если че а вдруг косяк тут должны выйти полюбомуreturn (-1);}#endif SCREEN_HСобственно, а в чём проблема?
Есть же метод в классе окна window->setSize(Vector2u(800, 600)); -
АвторСообщения
Просмотр 2 сообщений - с 1 по 2 (из 2 всего)
Для ответа в этой теме необходимо авторизоваться.