Witam,
Próbuje zapoznać się z bilbioteką SFML testuje różne rozwiązania i przyszedł czas na klasę i tuta mam problem.
Mianowicie nie wiem jak wywołać rysowanie kwadratu z klasy nie wiem gdzie popełniłem błąd jeśli ktoś mógłby rzucić okiem na mój kod. Szukałem rozwiązań w necie nie wszystkie/wszystko rozumiem stąd też moja decyzja o stworzeniu tego tematu.
Main program :
#include <SFML/Graphics.hpp> // blilbio graficzna
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include <iostream>
#include "obiekt.h"
const int W=800;
const int S=600;
const int a=40;
const int z=10;
void przesun (float PX, float PY, sf::RectangleShape &obiektdo)
{
obiektdo.move (PX, PY);
if (obiektdo.getPosition().x>W)
{
obiektdo.setPosition(0,S/2-(a/2));
}
}
int main()
{
//Rysowanie okna aplikacji
sf::RenderWindow oknoAplikacji;
oknoAplikacji.create( sf::VideoMode( W, S, 32 ), "Wielki projekt a" );
//Klasa rysujaca kwadrat
Kwadrata kwa;
// kwa.kwad();
// Obrazek
sf::Texture tekstura;
tekstura.loadFromFile( "obrazek.bmp" );
sf::Sprite obrazek;
obrazek.setTexture( tekstura );
obrazek.setScale( 1.0, 1.0 );
obrazek.setOrigin( 20, 20 );
obrazek.setPosition( 280, 80 );
// Kwadrat
sf::RectangleShape kwadrat(sf::Vector2f(a,a));
kwadrat.setOrigin(kwadrat.getGlobalBounds().width/2,kwadrat.getGlobalBounds().height/2);
kwadrat.setFillColor(sf::Color::Green);
kwadrat.setPosition(400,300);
// Tekst
sf::Font font;
font.loadFromFile( "arial.ttf" );
sf::Text text;
text.setFont(font);
text.setString("Zloto :");
text.setCharacterSize(24);
text.setColor(sf::Color::Black);
text.setPosition( 25, 25 );
while (oknoAplikacji.isOpen())
{
przesun(0.01,0, kwadrat);
if( sf::Keyboard::isKeyPressed( sf::Keyboard::J ) )
{
kwadrat.move (0.01*z, 0);
}
if( sf::Keyboard::isKeyPressed( sf::Keyboard::Right ) )
{
obrazek.move( 1, 0 );
//obrazek.setScale(1.2, 1.2);
}
if( sf::Keyboard::isKeyPressed( sf::Keyboard::Left ) )
{
obrazek.move( -1, 0 );
//obrazek.setScale(0.8, 0.8);
}
if( sf::Keyboard::isKeyPressed( sf::Keyboard::Up ) )
{
obrazek.move( 0, -1 );
//obrazek.scale(0.9,0.9);
}
if( sf::Keyboard::isKeyPressed( sf::Keyboard::Down ) )
{
obrazek.move( 0, 1 );
}
if( sf::Keyboard::isKeyPressed( sf::Keyboard::K ) )
{
obrazek.rotate( 0.45 ); // Rotacja
if( sf::Keyboard::isKeyPressed( sf::Keyboard::L ) )
{
obrazek.rotate( 0.45*50 );
}
}
sf::Event zdarzenie;
while( oknoAplikacji.pollEvent( zdarzenie ) )
{
if( zdarzenie.type == sf::Event::Closed )
{
oknoAplikacji.close();
}
if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Escape )
{
oknoAplikacji.close();
}
if( zdarzenie.type == sf::Event::MouseButtonPressed && zdarzenie.mouseButton.button == sf::Mouse::Middle )
{
oknoAplikacji.close();
}
}
oknoAplikacji.clear( sf::Color( 255, 0, 0 ) );
oknoAplikacji.draw(obrazek);
oknoAplikacji.draw(text);
oknoAplikacji.draw(kwadrat);
oknoAplikacji.draw(kwa); // <- tu mam problem
oknoAplikacji.display();
}
return 0;
}
Klasa
#include <SFML/Graphics.hpp> // blilbio graficzna
#include "obiekt.h"
kwad(sf::RectangleShape &elo)
{
sf::RectangleShape elo(sf::Vector2f(40,40));
elo.setOrigin(elo.getGlobalBounds().width/2,elo.getGlobalBounds().height/2);
elo.setFillColor(sf::Color::Black);
elo.setPosition(200,200);
}
#include <SFML/Graphics.hpp> // blilbio graficzna
class Kwadrata
{
public:
kwad();
};
Z góry dziękuje.