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

[SFML] Kolizja

Ostatnio zmodyfikowano 2012-01-19 11:08
Autor Wiadomość
hincu
» 2012-01-18 20:20:29
dodales wgl klase Collision do projektu?
P-48680
tomek5321
Temat założony przez niniejszego użytkownika
» 2012-01-18 20:25:44
Jak dodałem tam const czyli  prawie na początku programu:
const sf::Sprite bohater, wrog;
wyskakuje cała masa błędów typu:
C:\Users\Dominik\Desktop\Moje\C++\C++\Gra\gra.cpp|24|error: passing 'const sf::Sprite' as 'this' argument of 'void sf::Drawable::SetPosition(float, float)' discards qualifiers|

a cała reszta:
C/C++
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include "Collision.h"



int main()
{
    int los;
    srand( time( NULL ) );
    float kat;
    kat = 0;
    sf::RenderWindow oknoAplikacji( sf::VideoMode( 800, 600, 32 ), "Gra" /*,sf::Style::Fullscreen*/ );
    //postacie
    sf::Image obohater, owrog, otlo;
    sf::Sprite tlo;
    const sf::Sprite bohater, wrog;
    obohater.LoadFromFile( "Obiekty/bohater.png" );
    owrog.LoadFromFile( "Obiekty/bohater.png" );
    otlo.LoadFromFile( "Obiekty/tlo.jpg" );
   
    tlo.SetImage( otlo ); bohater.SetPosition( 0, 0 );
    int b_x, b_y, w_y, w_x;
    b_x = 680;
    b_y = 480;
    w_y = 0;
    w_x = 0;
   
    bohater.SetImage( obohater );
    bohater.SetPosition( b_x, b_y );
    bohater.SetScale( 0.2, 0.2 );
   
    wrog.SetImage( owrog );
    wrog.SetPosition( w_x, w_y );
    wrog.SetScale( 0.2, 0.2 );
   
    //dzwieki
    sf::Music dzik;
   
    while( oknoAplikacji.IsOpened() ) // petla glowna
    {
        sf::Event zdarzenie;
        while( oknoAplikacji.GetEvent( zdarzenie ) )
        {
            if( zdarzenie.Type == sf::Event::Closed || zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::Escape ) oknoAplikacji.Close();
           
            if( zdarzenie.Key.Code == sf::Key::Space ) {
                los =( rand() % 3 ) + 1;
                if( los == 1 ) { if( !dzik.OpenFromFile( "Muzyka/dzik1.wav" ) ) return EXIT_FAILURE; }
                if( los == 2 ) { if( !dzik.OpenFromFile( "Muzyka/dzik2.wav" ) ) return EXIT_FAILURE; }
                if( los == 3 ) { if( !dzik.OpenFromFile( "Muzyka/dzik3.wav" ) ) return EXIT_FAILURE; }
                if( los == 4 ) { if( !dzik.OpenFromFile( "Muzyka/dzik4.wav" ) ) return EXIT_FAILURE; }
                dzik.Play(); }
        }
       
        const sf::Input & sterowanie = oknoAplikacji.GetInput(); //sterowanie
       
        if( sterowanie.IsKeyDown( sf::Key::Left ) ) if( b_x > 0 ) bohater.Move( - 0.2, 0 );
       
        if( sterowanie.IsKeyDown( sf::Key::Right ) ) if( b_x < 690 ) bohater.Move( + 0.2, 0 );
       
        if( sterowanie.IsKeyDown( sf::Key::Up ) ) if( b_y > 0 ) bohater.Move( 0, - 0.2 );
       
        if( sterowanie.IsKeyDown( sf::Key::Down ) ) if( b_y < 490 ) bohater.Move( 0, + 0.2 );
       
        //wrog
        if( sterowanie.IsKeyDown( sf::Key::A ) ) { //kat+=0.1; bohater.SetRotation(kat);
            wrog.Move( - 0.1, 0 ); }
        if( sterowanie.IsKeyDown( sf::Key::D ) ) { // kat-=0.1; bohater.SetRotation( kat);
            wrog.Move( + 0.1, 0 ); }
        if( sterowanie.IsKeyDown( sf::Key::W ) ) wrog.Move( 0, - 0.2 );
       
        if( sterowanie.IsKeyDown( sf::Key::S ) ) { wrog.Move( 0, + 0.2 ); }
       
        //kolizje
        Collision::PixelPerfectTest( bohater, wrog );
       
        //inne
        if( zdarzenie.Key.Code == sf::Key::F1 )
        {
            sf::Image zrzutEkranu = oknoAplikacji.Capture();
            zrzutEkranu.SaveToFile( "zrzut-ekranu.png" );
        }
       
        oknoAplikacji.Clear( sf::Color( 7, 123, 4 ) );
        oknoAplikacji.Draw( tlo );
        oknoAplikacji.Draw( bohater );
        oknoAplikacji.Draw( wrog );
        oknoAplikacji.Display();
    }
    return 0;
}
P-48682
pekfos
» 2012-01-18 20:34:40
Jak dodałem tam const
Wywal tam te const. stałych obiektów nie mógłbyś zmieniać.
P-48684
tomek5321
Temat założony przez niniejszego użytkownika
» 2012-01-18 20:43:55
Skoro tak, to co mam zrobic? Cos w tym stylu?
C/C++
cwrog = wrog;
cbohater = bohater;
const sf::Sprite cbohater;
const sf::Sprite cwrog;
Collision::PixelPerfectTest( cbohater, cwrog );
P-48686
pekfos
» 2012-01-18 20:47:03
niee. zostaw const. wróć do tego co było wcześniej.
P-48687
tomek5321
Temat założony przez niniejszego użytkownika
» 2012-01-18 20:50:50
aha, czyli wracam do punktu wyjscia ;)
Hmmm... jakies sugestie?
P-48691
pekfos
» 2012-01-18 20:51:59
Podaj log..
P-48692
tomek5321
Temat założony przez niniejszego użytkownika
» 2012-01-18 20:54:27
||warning: auto-importing has been activated without --enable-auto-import specified on the command line.|
C:\Users\Dominik\Desktop\Moje\C++\C++\Gra\gra.cpp|| undefined reference to `Collision::PixelPerfectTest(sf::Sprite const&, sf::Sprite const&, unsigned char)'|
||Info: resolving vtable for sf::Sprite by linking to __imp___ZTVN2sf6SpriteE |
||=== Build finished: 1 errors, 1 warnings ===|
P-48693
1 2 3 « 4 » 5 6
Poprzednia strona Strona 4 z 6 Następna strona