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

[Allegro] ISO C++ forbids comparison between pointer and integer

Ostatnio zmodyfikowano 2008-10-01 20:50
Autor Wiadomość
Tombol
Temat założony przez niniejszego użytkownika
[Allegro] ISO C++ forbids comparison between pointer and integer
» 2008-10-01 17:50:26
No cóż 1 problem 1 temat a więc mam taki problem.
Wyświetla mi się taki błąd jak w topicu niestety szukałem w Google i wszędzie i nie wiem dalej co zrobić :/
C/C++
#include <allegro.h>
#include<iostream>
volatile long speed = 0;
void increment_speed()
{
    speed++;
}
END_OF_FUNCTION( increment_speed );
LOCK_VARIABLE( speed );
LOCK_FUNCTION( increment_speed );
int statek_x = 500, statek_y = 440;
int pocisk_x = statek_x, pocisk_y = 440;



//***********************************************
bool kolizja( void )
{
    if( statek_x > 600 )
         return true;
   
    if( statek_x < 10 )
         return true;
   
}
//**********************************************************

int main()
{
    allegro_init();
    install_keyboard();
    set_color_depth( 16 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0 );
    clear_to_color( screen, makecol( 0, 0, 0 ) );
    install_timer();
    install_int_ex( increment_speed, BPS_TO_TIMER( 100 ) );
   
    BITMAP * statek = NULL;
    BITMAP * pocisk = NULL;
    BITMAP * bufor = NULL;
   
   
    bufor = create_bitmap( 640, 480 );
    if( !bufor )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "Nie mogę utworzyć bufora  !" );
        allegro_exit();
        return 0;
    }
   
   
    statek = load_bmp( "statek.bmp", default_palette );
    if( !statek )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować obrazka statek!" );
        allegro_exit();
        return 0;
    }
    pocisk = load_bmp( "pocisk.bmp", default_palette );
    if( !pocisk )
    {
        set_gfx_mode( GFX_TEXT, 0, 0, 0, 0 );
        allegro_message( "nie mogę załadować obrazka pocisk!" );
        allegro_exit();
        return 0;
    }
   
   
    //********************************************************
    while( !key[ KEY_ESC ] )
    {
       
        if( key[ KEY_LEFT ] )
        {
            statek_x--;
            if( kolizja == true ) // błąd
            {
                statek_x++;
            }
        }
        if( key[ KEY_RIGHT ] )
        {
            statek_x++;
            if( kolizja == true ) // błąd
            {
                statek_x--;
            }
        }
        //***************************************************
        if( key[ KEY_A ] )
             pocisk_y++;
        //  clear_to_color(bufors, makecol(0,0,0));
        //rest(10);
        speed--;
       
       
        //clear_to_color(screen, makecol(0,0,0));
        //rest(10);
        masked_blit( statek, bufor, 0, 0, statek_x, statek_y, statek->w, statek->h );
        masked_blit( pocisk, bufor, 0, 0, pocisk_x, pocisk_y, pocisk->w, pocisk->h );
        blit( bufor, screen, 0, 0, 0, 0, 640, 480 );
    }
   
   
    remove_int( increment_speed );
    destroy_bitmap( statek );
    destroy_bitmap( pocisk );
    destroy_bitmap( bufor );
    allegro_exit();
    return 0;
}
END_OF_MAIN();

Po zaznaczałem miejsca w których jest błąd a gwiazdami to co podejrzewam że nie działa :/
P-1742
DejaVu
» 2008-10-01 19:20:20
kolizja jest funkcją, a nie zmienną. Funkcję się wywołuje tak:
kolizja()
Gdy dla funkcji użyjesz zapisu:
kolizja
oznacza to, że interesuje Ciebie jej adres, a nie wywoływanie jej. W konsekwencji kompilator pokazuje Ci, błąd: "standard ISO C++ zabrania wykonywania porównań pomiędzy typem wskaźnikowym, a typem liczbowym.". Wartości true/false są defacto liczbami, a kolizja jak już wcześniej wspomniałem wskaźnikiem do funkcji.
P-1743
lynx
» 2008-10-01 19:25:15
A ja bym jeszcze dodał na samym końcu funkcji kolizja instrukcję
return false;
P-1744
Tombol
Temat założony przez niniejszego użytkownika
» 2008-10-01 20:50:39
Świetnie wielkie thx statek już nie może poza ekran wyjechać xD
P-1745
« 1 »
  Strona 1 z 1