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? |
|
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. |
|
szyx_yankez |
» 2010-02-23 17:42:12 Wszystko robisz źle . if( getpixel( bitmapa, x, y ) == makecol( r, g, b ) ) { }
To powinno załatwić problem. |
|
malan |
» 2010-02-23 17:43:56 int kolor = getpixel( platforma1, platfa1_x, platfa1_y ); if( kolor == makecol( 3, 70, 255 ) ) { ludek1_x = ludek1_x + 7; } |
|
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 |
|
dmx81 |
» 2010-02-23 17:49:43 ooo widze, ze doszly wiadomosci jednoczesnie, ale chyba podobnie wytlumaczone:) |
|
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: #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();
|
|
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: 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 ? ;> |
|
« 1 » 2 |