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

kolizja a rozowy kolor, czII :)

Ostatnio zmodyfikowano 2010-03-22 22:55
Autor Wiadomość
dmx81
Temat założony przez niniejszego użytkownika
kolizja a rozowy kolor, czII :)
» 2010-03-10 23:48:43
witam.
gdzies ponizej omawiany byl temat kolizji i rozowego koloru. ja mam taka sytuacje:

jest bitmapa o nazwie MAPA
jest bitmapa LUDEK
no i jest bufor

rysuje mape na bufor, ludka na bufor, sprawdzam, czy w jakimkolwiek punkcie nalezacym do ludka, na bitmapie MAPA, wystepuje kolor inny niz rozowy, jesli tak to kolizja=true, inaczej false.

wszystko gra, jak tylko jakims kawaleczkiem najade na cokolwiek poza rozowym, kolizja dziala

probuje jednak teraz zrobic cos takiego, zeby program sprawdzil, czy nie ma sytuacji takiej, ze w punkcie nalezacym do ludka na mapie jest kolor inny niz rozowy, ale zeby sprawdzil, czy ludek ma w tym punkcie kolor rozowy, czy inny, bo jesli rozowy, to kolizja = false.
C/C++
for( int i = ludek.i_x; i <= ludek.i_x + ludek.i_s; i++ )
{
    for( int j = ludek.i_y; j <= ludek.i_w + ludek.i_y; j++ )
    {
        if(( getpixel( mapa.obrazek, i, j ) != makecol( 255, 0, 255 ) && getpixel( ludek.obrazek, i, j ) != makecol( 255, 0, 255 ) )
       
        kolizja = true
        //
    }
}
ale mimo ze sie kompiluje bezblednie itd, to jesli zahaczam niewidoczna czesc ludzika o kolor inny niz rozowy, to wystepuje kolizja, szukalem roznych rozwiazan, jak np sprawdzanie koloru na buforze we wspolrzednych itd, porownywanie z kolorem rozowym jak i kolorem na ktory czyszczony jest bufor, chociaz najbardziej logiczne wydaje mi sie wlasnie to, co zapisalem powyzej. jesli ktos wie, gdzie popelniam blad, prosze o podpowiedz, ale jesli jest ona sprawdzona i dziala, dzieki
P-14892
dmx81
Temat założony przez niniejszego użytkownika
» 2010-03-22 22:55:12
nie wiem, czy napisalem zbyt zawilym jezykiem, czy nikt nie wie, jak to rozwiazac, ja nie mialem za bardzo czasu, ale wpadlem na pare pomyslow, za chwilke je bede probowal, ale opisze w skrocie jeszcze raz problem.

Zdarzenie 1.

mamy bitmape bedaca tlem, postac porusza sie tylko po przezroczystych (rozowych) miejscach. jesli dotknie innego niz rozowe, to jest kolizja=true

sprawdzenie tego dokonuje sie w petli for, dla kazdego x i y ludzika, czyli w sumie przeszukiwany jest kwadrat - a przeszukanie oczywiscie wykonujemy na naszym tle - jeden z punktow kwadratu ludka dotknal cos innego niz rozowy - kolizja

Zdarzenie 2.

nasz ludzik nie jest kwadratem, a powiedzmy literka T. jak wiemy, T ma dlugi daszek, ale waska nozke, wiec jesli daszek lezy nad przeszkoda, to powinnismy sie na tyle zblizyc do przeszkody, az dotkniemy jej nozka (np przeszkoda to mala litra o, tak to wyglada:  To

ale niestety jak tylko daszek od T znajdzie sie nad o nie dotykajac zadnym czarnym fragmentem literki o, wystepuje kolizja.

myslalem, ze wystarczy sprawdzic, czy w punkcie kolizji obiektu (kwadratu) z tlem - czy dla tego punktu nasz ludek ma na sobie kolor rozowy czy inny, bo jesli rozowy to kolizja = false, ale to nie dziala i dalej wyskakuje, ze kolizja = true

kod jest w moim poscie powyzej


ps. rozumiem, ze blad chyba dotyczyl tego, ze i i j maja jakies wartosci, ktore sa rozne z punktami podczas sprawdzania koloru na obrazku ludek, probowalem tez wprowadzic to tej petli dodatkowe 2 zmienne, aby k=0,l=0 i obydwa ++, zeby sprawdzenie na ludek.obrazek bylo w k,l - ale ten sam efekt
P-15368
« 1 »
  Strona 1 z 1