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

Allegro getpixel

Ostatnio zmodyfikowano 2010-02-23 18:58
Autor Wiadomość
Bartaz
Temat założony przez niniejszego użytkownika
Allegro getpixel
» 2010-02-23 16:02:41
Witam mam taki problem mam taki kawałek kodu :

clear_to_color(platforma1, makecol(3,70,255));
getpixel(platforma1,platfa1_x,platfa1_y);
if (platfa1_x == makecol (3, 70, 255))
{
ludek1_x=ludek1_x+7;
}
Według mnie robię takie coś:
koloruje stworzoną bitmape na kolor 3,70,255
potem pobieram ten kolor
i sprawdzam ,jeżeli platfa_x ma kolor 3,70,255
to przesuwam pozycje ludak ale tak sie nie dzieje dlaczego?
P-14047
wojownik266
» 2010-02-23 17:02:53
Dlatego tak się nie dzieje bo nie zamieściłeś całego kodu gry. Gdybyś to zrobił zapewne można by wiecej na ten temat powiedzieć. Daj kod.
P-14057
szyx_yankez
» 2010-02-23 17:42:12
Wszystko robisz źle .

C/C++
if( getpixel( bitmapa, x, y ) == makecol( r, g, b ) )
{
    //
}
To powinno załatwić problem.
P-14060
malan
» 2010-02-23 17:43:56
C/C++
int kolor = getpixel( platforma1, platfa1_x, platfa1_y );
if( kolor == makecol( 3, 70, 255 ) )
{
    ludek1_x = ludek1_x + 7;
}
P-14061
dmx81
» 2010-02-23 17:46:58
spróbuj zapisu

if(getpixel(bitmapa,poz_x,poz_y)==makecol(c,z,n))
przesun_ludka;

wg twojego zapisu mozna stwierdzic, ze szukasz dla konkternej pozycji X, dla dowolnego Y? jesli tak, to jeszcze ten kod mozna wziac w petle for, warunek poczatkowy y=0, warunek koncowy(wyjscia z petli) y=800?1200? zalezy od wysokosci bitmapy, na ktorej sprawdzasz
P-14062
dmx81
» 2010-02-23 17:49:43
ooo widze, ze doszly wiadomosci jednoczesnie, ale chyba podobnie wytlumaczone:)
P-14064
Bartaz
Temat założony przez niniejszego użytkownika
...
» 2010-02-23 18:01:03
To nic nie dało ludek nadal stoi w miejscu daje kod:
C/C++
#include <allegro.h>

int main()
{
    int ludek1_x = 70;
    int ludek1_y = 501;
    int platfa1_x = 500;
    int platfa1_y = 370;
    allegro_init();
    BITMAP * bufor = NULL;
    BITMAP * ludek1 = NULL;
    BITMAP * platforma1 = NULL;
   
    ludek1 = load_bitmap( "ludek1.bmp", default_palette );
    bufor = create_bitmap( 1000, 700 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 1000, 700, 0, 0 );
    clear_to_color( bufor, makecol( 255, 0, 255 ) );
    install_keyboard();
    while( !key[ KEY_ESC ] )
    {
        if( key[ KEY_LEFT ] ) ludek1_x--;
       
        if( key[ KEY_RIGHT ] ) ludek1_x++;
       
        if( key[ KEY_UP ] ) ludek1_y--;
       
        if( key[ KEY_DOWN ] ) ludek1_y++;
        ////////////////////////////////////////////////////////////
        platforma1 = create_bitmap( 70, 70 );
        clear_to_color( platforma1, makecol( 3, 70, 255 ) );
        getpixel( platforma1, platfa1_x, platfa1_y );
        int kolor = getpixel( platforma1, platfa1_x, platfa1_y );
        if( kolor == makecol( 3, 70, 255 ) )
        {
            ludek1_x = ludek1_x + 100;
        }
        masked_blit( ludek1, bufor, 0, 0, ludek1_x, ludek1_y, ludek1->w, ludek1->h );
        blit( platforma1, bufor, 0, 0, platfa1_x, platfa1_y, platforma1->w, platforma1->h );
        textprintf_ex( bufor, font, 90, 90, makecol( 255, 255, 0 ), - 1, "x " "%d", ludek1_x );
        textprintf_ex( bufor, font, 90, 70, makecol( 255, 255, 0 ), - 1, "y " "%d", ludek1_y );
        blit( bufor, screen, 0, 0, 0, 0, 1000, 700 );
        clear_to_color( bufor, makecol( 70, 17, 197 ) );
    }
    readkey();
    return( 0 );
}
END_OF_MAIN();
P-14068
malan
» 2010-02-23 18:30:41
platfa1_x i platfa1_y to nie pozycja ludzika. Te zmienne będą miały wartości odpowiednio:
C/C++
int platfa1_x = 500;
int platfa1_y = 370;
... niezależnie od tego gdzie jest ludzik, więc tak jakby cały czas sprawdzasz to samo.
Powiedz co chcesz sprawdzić/zrobić, to będzie łatwiej Ci pomóc.

//Edit:
Spójrz na wielkość bitmapy platforma1, a potem na platfa1_x i platfa1_y... Widzisz ten błąd ? ;>
P-14070
« 1 » 2
  Strona 1 z 2 Następna strona