jak mogę wyświetlić numer objektu
Ostatnio zmodyfikowano 2022-04-05 20:02
nanoant20 Temat założony przez niniejszego użytkownika |
jak mogę wyświetlić numer objektu » 2022-04-05 18:59:39 klasą "Square" rysuje obiekt. Klasą "NumberObject" znajduje się metoda "GetText(int number)" która pobiera numer, ale nie wiem co mi brakuje, żeby wyświetlić numer na rysowanym obiekcie. w kodzie jest za komentowana linijka "text_dynamic.drawtekst(my_window);" i ona działa o.k. ale ja chcę powołać tylko do życia obiekt klasy "Square rectangle" #include <iostream> #include <vector> #include <cstring>
#include <SFML/Graphics.hpp> #include <SFML/Window.hpp> #include <SFML/System.hpp> #include <SFML/Audio.hpp>
using namespace std; using namespace sf;
class NumberObject { private: sf::Text text; sf::Font font; public: NumberObject() { }; NumberObject( sf::RenderWindow & my_window, int number, float posx, float posy, int size, sf::Color const & color, sf::Font & font ) { text.setFont( font ); text.setString( std::to_string( number ) ); text.setPosition( posx, posy ); text.setCharacterSize( size ); text.setFillColor( color ); } ~NumberObject() { }; sf::Text GetText( int number ) { text.setString( std::to_string( number ) ); return text; } void drawtekst( sf::RenderWindow & my_window ) { my_window.draw( text ); } };
class Square { NumberObject numObj; private: sf::RectangleShape rect; public: void drawSquare( sf::RenderWindow & my_window, int num ) { rect.setFillColor( sf::Color { 30, 30, 30 } ); rect.setSize( sf::Vector2f( 75, 120 ) ); rect.setPosition( 5, 5 ); numObj.GetText( num ); my_window.draw( rect ); numObj.drawtekst( my_window ); } };
int main() { sf::RenderWindow my_window( sf::VideoMode( 300, 200 ), "SFML window" ); sf::Texture backgroundt; if( !backgroundt.loadFromFile( "resources/img/black.jpg" ) ) { std::cout << "Error loading file" << std::endl; return EXIT_FAILURE; } sf::Sprite backgrounds( backgroundt ); sf::Font font; if( !font.loadFromFile( "resources/font/DELPHIN_.TTF" ) ) { std::cout << "Error loading font" << std::endl; return EXIT_FAILURE; } sf::Color bgColor( 30, 30, 30 ); int num = 121; int rozmiar = 40; float px = 20, py = 22; NumberObject text_dynamic( my_window, num, px, py, rozmiar, sf::Color::Yellow, font ); Square rectangle; while( my_window.isOpen() ) { sf::Event event; while( my_window.pollEvent( event ) ) { if( event.type == sf::Event::Closed ) my_window.close(); } my_window.clear( bgColor ); my_window.draw( backgrounds ); rectangle.drawSquare( my_window, 20 ); my_window.display(); } return EXIT_SUCCESS; }
|
|
pekfos |
» 2022-04-05 19:53:59 Obiekt NumberObject w Square jest tworzony domyślnym konstruktorem. Nie ma ustawionej pozycji, czcionki, etc. |
|
nanoant20 Temat założony przez niniejszego użytkownika |
» 2022-04-05 20:02:05 chciałem pójść na skróty, Dziękuję serdecznie już sobie dalej poradze. |
|
« 1 » |