Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Kolor Sprajta

Ostatnio zmodyfikowano 2011-07-06 22:53
Autor Wiadomość
diego997
Temat założony przez niniejszego użytkownika
Kolor Sprajta
» 2011-07-03 16:53:51
Bawię się na razie biblioteką i sprawdzam nowe rzeczy. Chciałem zrobić, że kiedy naciśnie się na lewy przycisk myszy to utworzy się nowy kwadrat o kolorze np. zielonym, a za każdym razem tworzy mi się biały chciałem jakoś zrobić przez referencje ale się nie da. Pomożecie?

C/C++
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>

void tworzenie( int ktory, sf::Sprite Sprajtek[ 500 ] );



int main()
{
   
    sf::RenderWindow Okno;
    Okno.Create( sf::VideoMode( 800, 600 ), "Witam" );
   
    sf::Image Obraz;
    Obraz.Create( 20, 20, sf::Color::Green );
    sf::Sprite Sprajt;
    Sprajt.SetImage( Obraz );
    Sprajt.SetScale( 3, 3 );
    Sprajt.SetCenter( Obraz.GetWidth() / 2.0f, Obraz.GetHeight() / 2.0f );
    Sprajt.SetPosition( 400, 300 );
   
    const sf::Input & wejscie = Okno.GetInput();
   
    int licznik =- 1;
    sf::Sprite NowySprajt[ 500 ];
   
    while( Okno.IsOpened() )
    {
       
        sf::Event Zdarzenie;
       
        while( Okno.GetEvent( Zdarzenie ) )
        {
           
            if( Zdarzenie.Type == sf::Event::MouseButtonPressed && Zdarzenie.MouseButton.Button == sf::Mouse::Left )
            {
                ++licznik;
                tworzenie( licznik, NowySprajt );
               
                NowySprajt[ licznik ].SetPosition( wejscie.GetMouseX(), wejscie.GetMouseY() );
               
            }
           
           
           
           
           
        }
       
        if( wejscie.IsMouseButtonDown( sf::Mouse::Right ) )
        {
           
            Sprajt.SetPosition( wejscie.GetMouseX(), wejscie.GetMouseY() );
        }
       
        Okno.Clear( sf::Color::Black );
        Sprajt.Rotate( 0.02 );
       
       
       
       
        if( licznik >= 0 )
        {
            for( int i = 0; i <= licznik; i++ )
            {
                Okno.Draw( NowySprajt[ i ] );
            }
        }
       
       
        Okno.Draw( Sprajt );
        Okno.Display();
    }
}


void tworzenie( int ktory, sf::Sprite Sprajtek[ 500 ] )
{
    sf::Image Obrazek[ 500 ];
    Obrazek[ ktory ].Create( 20, 20, sf::Color::Green );
   
    Sprajtek[ ktory ].SetImage( Obrazek[ ktory ] );
    Sprajtek[ ktory ].SetScale( 3, 3 );
    Sprajtek[ ktory ].SetCenter( Obrazek[ ktory ].GetWidth() / 2.0f, Obrazek[ ktory ].GetHeight() / 2.0f );
   
}




P.S Jeszcze jedno pytanie zauważyłem że im więcej klocków tworzę tym wolniej ten głowny się obraca, czy aby na pewno dobrze jest to napisane, czy można to jakoś zoptymalizować?
P-35240
pekfos
» 2011-07-03 17:11:11
co to jest
Solor Sprajta
?
P-35241
Dark
» 2011-07-03 17:13:18
chciał pewnie napisać 'kolor' :D
P-35242
diego997
Temat założony przez niniejszego użytkownika
» 2011-07-03 17:24:01
Już zmienione sorki ;p
P-35245
malan
» 2011-07-03 23:25:39
Setki razy był ten problem poruszany na forum :) Robisz jeden podstawowy błąd.
P-35262
diego997
Temat założony przez niniejszego użytkownika
» 2011-07-03 23:55:04
Ale setki razy był poruszany odnośnie koloru czy optymalizacji.

BTW. Kolor udało mi się zmienić dodałem

C/C++
NowySprajt[ licznik ].SetColor( sf::Color::Green );

Nie wiem czy dobrze
P-35263
malan
» 2011-07-06 22:53:19
Odnoście białego prostokąta :)
P-35457
« 1 »
  Strona 1 z 1