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

[SFML] Problem z Funkcją

Ostatnio zmodyfikowano 2011-08-01 22:38
Autor Wiadomość
Fletcher
Temat założony przez niniejszego użytkownika
[SFML] Problem z Funkcją
» 2011-07-30 20:37:13
C/C++
//Czemu jak wywołuj to funkcję w głównej pętli i klikam jakiś przycisk to nie działa.


int checkbutton()
{
    if( Window.GetInput().IsMouseButtonDown( sf::Mouse::Button::Left ) )
    {
        Sprite.SetPosition( 100, 100 );
       
        return 1;
       
    }
   
    if( Window.GetInput().IsMouseButtonDown( sf::Mouse::Button::Right ) )
    {
        Sprite.SetPosition( 50, 200 );
       
        return 2;
       
    }
    else return 0;
   
}

I jeszcze jedną dlaczego nie mogę wysłać klasy jako argument funkcji? wszystko wali się po próbie wywołania funkcji.
C/C++
int checkbutton( sf::RenderWindow Window )
checkbutton( Window );
{(...) }

iles (x86)\microsoft visual studio 10.0\vc\include\sfml\window\window.hpp(321): error C2248: 'sf::NonCopyable::NonCopyable' : cannot access private member declared in class 'sf::NonCopyable'
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\system\noncopyable.hpp(57) : see declaration of 'sf::NonCopyable::NonCopyable'
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\system\noncopyable.hpp(41) : see declaration of 'sf::NonCopyable'
1>          This diagnostic occurred in the compiler generated function 'sf::Window::Window(const sf::Window &)'
P-37658
malan
» 2011-07-30 21:00:32
W jakim miejscu dokładnie wywołujesz tą funkcję?

I jeszcze jedną dlaczego nie mogę wysłać klasy jako argument funkcji?
Możesz, ale niech tym argumentem będzie referencja lub wskaźnik na obiekt klasy
sf::RenderWindow
.
P-37663
Fletcher
Temat założony przez niniejszego użytkownika
» 2011-07-30 22:01:27
Przed narysowaniem różnych śmieci na ekranie, normalnie jak wstawiam tam warunek z funkcji to wszystko działa i jest jeszcze ostrzeżenie tego typu.
warning C4482: nonstandard extension used: enum 'sf::Mouse::Button' used in qualified name
Dobra Pierwszy problem został rozwiązany,wielkie dzięki ale został jeszcze ten pierwszy problem ;D
P-37667
jaupl
» 2011-07-31 22:17:19
Dobra Pierwszy problem został rozwiązany,wielkie dzięki ale został jeszcze ten pierwszy problem ;D
 hmmm ... What ?? //Trochę Offtop ale nie mogłem się powstrzymać :)
P-37748
Fletcher
Temat założony przez niniejszego użytkownika
» 2011-07-31 23:44:47
Eh, skutki szybkiego pisania ;p. Właściwie powiną być
Dobra drugi problem został rozwiązany,wielkie dzięki ale został jeszcze ten pierwszy problem ;D

P-37765
malan
» 2011-07-31 23:46:40
Chodzi o funkcję
checkbutton
? Wklej aktualny kod.
P-37766
Fletcher
Temat założony przez niniejszego użytkownika
» 2011-08-01 22:09:30
C/C++
int checkbutton()
{
   
   
    if( Window.GetInput().IsMouseButtonDown( sf::Mouse::Button::Left ) )
    {
        Swerewolf.SetPosition( Window.GetInput().GetMouseX(), Window.GetInput().GetMouseY() );
       
        return 1;
       
    }
   
    if( Window.GetInput().IsMouseButtonDown( sf::Mouse::Button::Right ) )
    {
        Swerewolf.SetPosition( 50, 200 );
        return 2;
    }
   
    else return 0;
   
}


////////////////////////////////////////////////////////////
#include "Header.h"
////////////////////////////////////////////////////////////
/// Entry point of application
///
/// \return Application exit code
///
////////////////////////////////////////////////////////////
int main()
{
    sf::Event Event;
    sf::RenderWindow Window( sf::VideoMode( 800, 600, 32 ), "123:" );
    sf::String tekst;
    sf::String mouse;
    sf::Image werewolf;
    sf::Sprite Swerewolf;
    werewolf.LoadFromFile( "stop.png" );
    Swerewolf.SetImage( werewolf );
    background.LoadFromFile( "background.png" );
    Sbackground.SetImage( background );
    /////////////////////////////////////////////////////////////
    std::string view_mouse;
    std::ostringstream ss;
    float a = 0;
    /////////////////////////////////////////////////////////////
    tekst.SetSize( 14 );
    mouse.SetSize( 14 );
    while( Window.IsOpened() )
    {
        //mouse_x= Window.GetInput().GetMouseX();
        //inscription(Window.GetInput().GetMouseX());
       
        view_mouse = "Mouse: " + inscription( Window.GetInput().GetMouseX() ) + " " + inscription( Window.GetInput().GetMouseY() );
        mouse.SetText( view_mouse );
       
        while( Window.GetEvent( Event ) )
        {
            if( Event.Type == sf::Event::Closed )
            {
                Window.Close();
            }
           
           
        }
       
        /* To działa
       
        if( Window.GetInput().IsMouseButtonDown(sf::Mouse::Button::Left))
        {
        Swerewolf.SetPosition(Window.GetInput().GetMouseX(),Window.GetInput().GetMouseY());
       
       
       
        }
       
        if( Window.GetInput().IsMouseButtonDown(sf::Mouse::Button::Right))
        {
        Swerewolf.SetPosition(50,200);
       
       
        }*/
       
        checkbutton(); //A to już nie
       
       
        Window.Draw( Sbackground );
        Window.Draw( Swerewolf );
        Window.Draw( mouse );
        Window.Display();
       
       
       
    }
   
   
   
    return EXIT_SUCCESS;
}


A tak przy okazji, robię sobie funkcje gdzie jako argument podaję wskaźnik do klasy. I niestety problem pojawi się przy próbie odwołania do któregoś z elementów ;/.
C/C++
int checkbutton( sf::RenderWindow * Window )
{
   
   
    if( Window.GetInput().IsMouseButtonDown( sf::Mouse::Button::Left ) )
    {
        Swerewolf.SetPosition( Window.GetInput().GetMouseX(), Window.GetInput().GetMouseY() );
       
        return 1;
       
    }
   
    if( Window.GetInput().IsMouseButtonDown( sf::Mouse::Button::Right ) )
    {
        Swerewolf.SetPosition( 50, 200 );
        return 2;
    }
   
    else return 0;
   
}
P-37868
malan
» 2011-08-01 22:38:17
Jakim cudem to Ci się kompiluje?

C/C++
int checkbutton( sf::Sprite * sprite, sf::RenderWindow * window )
{
    if( window->GetInput().IsMouseButtonDown( sf::Mouse::Button::Left ) )
    {
        sprite->SetPosition( window->GetInput().GetMouseX(), window->GetInput().GetMouseY() );
        return 1;
    }
   
    if( window->GetInput().IsMouseButtonDown( sf::Mouse::Button::Right ) )
    {
        sprite->SetPosition( 50, 200 );
        return 2;
    }
   
    return 0;
}

Wywołanie:
checkbutton( & Swerewolf, & Window );
P-37870
« 1 »
  Strona 1 z 1