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

[C++, Allegro 5] Wyświetlanie na odpowiednim miejscu

Ostatnio zmodyfikowano 2011-04-06 17:24
Autor Wiadomość
SeaMonster131
Temat założony przez niniejszego użytkownika
[C++, Allegro 5] Wyświetlanie na odpowiednim miejscu
» 2011-04-05 21:06:02
Otóż mam problem... Kiedy na mapie (kafelkowej) pojawi się pochodnia, chce żeby rozświetlało 2 kratki w lewo,prawo,do góry i na dół. Na środku problemu nie mam, lecz z tymi kierunkami to już mam ;(

C/C++
if( map[ y ][ x ] == 15 )
{
    al_draw_tinted_bitmap( czarne, al_map_rgba_f( 1, 1, 1, 0 ), x * 50, y * 50, 0 );
    al_draw_tinted_bitmap( czarne, al_map_rgba_f( 1, 1, 1, 0 ),( x - 1 ) * 50, y * 50, 0 );
    //itd
}

Wyświetlam sobie kafelek całkowicie przezroczysty na współrzędnych x*50, y*50, teraz chcę sobie wyświetlić tak samo ten kafelek, ale na współrzędnych (x-1)*50 lecz już sie niestety nie wyświetla (czyli chce go wyświetlić kratkę wcześniej).
Jak mam to zapisać żeby to jakoś poprawnie działało..? :)
P-30339
McAffey
» 2011-04-05 22:09:10
Nie rozumiem, nie możesz po prostu zrobić x * 50 - 50 (po lewej), x * 50 + 50 (po prawej), y * 50 - 50 (na górze) i y * 50 + 50 (na dole) ?
P-30340
ison
» 2011-04-05 23:43:40
generalnie wyświetlanie białego prostokąta z pewną alphą to zły pomysł na oświetlenie :)
P-30342
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2011-04-06 15:18:51
@McAffey:
Próbowałem tak, lecz i tak to nie działa ehh ;/

C/C++
for( int y = 0; y < 100; y++ )
{
    for( int x = 0; x < 100; x++ )
    {
        if(( hero.x + map_x ) >=(( x * 50 ) - 1300 ) &&
        ( hero.x + map_x ) <=(( x * 50 ) + 1300 ) &&
        ( hero.y + map_y ) >=(( y * 50 ) - 1300 ) &&
        ( hero.y + map_y ) <=(( y * 50 ) + 1300 ) )
        {
            if( map[ y ][ x ] == 15 )
            {
                al_draw_tinted_bitmap( czarne, al_map_rgba_f( 1, 1, 1, 0 ), x * 50 - 50, y * 50, 0 );
                //...
            }
            else
                 al_draw_tinted_bitmap( czarne, al_map_rgba_f( 1, 1, 1, noc / 720 ), x * 50, y * 50, 0 );
           
        }
    }
}

@ison:
Pomijając to, że kwadrat jest czarny, to dlaczego to jest zły pomysł na oświetlenie? :)
P-30361
McAffey
» 2011-04-06 16:03:50
Tylko musisz wyświetlać jednocześnie 4 razy, dla wszystkich stron świata naraz.
P-30367
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2011-04-06 16:39:46
@up: znaczy sie, x*50+50, x*50-50, y*50-50, y*50+50, mam wyświetlać tak? (bo nie do końca zrozumiałem o co Ci chodzi.. ;p) Jeżeli tak, to tak robie, ale nic sie nie pojawia ;/


#aa..już wiem w czym tkwi błąd. Po prostu rysowałem ten kafelek cały przezroczysty, na tym ciemniejszym kafelku. Dlatego go nie było widać. ehh :)
P-30368
SeaMonster131
Temat założony przez niniejszego użytkownika
» 2011-04-06 17:24:13
Ok..temat zamykam :) Dzięki wszystkim za chęć pomocy :)

(Jakby ktoś chciał, to zrobiłem to dodając jeszcze jedną mapkę dostosowaną do cieni itd)
C/C++
if( map[ y ][ x ] == 15 )
{
    map2[ y ][ x ] = 15;
    map2[ y - 1 ][ x ] = 15;
    map2[ y + 1 ][ x ] = 15;
    map2[ y ][ x - 1 ] = 15;
    map2[ y ][ x + 1 ] = 15;
    map2[ y + 1 ][ x + 1 ] = 15;
    map2[ y - 1 ][ x - 1 ] = 15;
    map2[ y - 1 ][ x + 1 ] = 15;
    map2[ y + 1 ][ x - 1 ] = 15;
}
else if( map2[ y ][ x ] != 15 )
     al_draw_tinted_bitmap( czarne, al_map_rgba_f( 1, 1, 1, noc / 720 ), x * 50, y * 50, 0 );
P-30369
« 1 »
  Strona 1 z 1