Mam taki problem. Piszę grę w stylu mario, która składa się z dwóch bitmap. Gracza czyli naszego Mario i tła które się przesówa gdy wierzołek bitmapy z graczem znajdzie się pośrodku ekranu. Chciałbym, aby kolor którym wcześniej otoczyłem postać Maria był zastępowany kolorem tła, czyli piksel o podanym kolorze na obrazie gracza przyjmował kolor piksela tła. Napisałem oto taki kod który realizuje ten sposób, lecz gdy skompiluje kod i opdale program to ten zacinia się.
Dodam, że x_M, y_M cały czas się zmieniją bo bitmapa się przesówa wraz z naciśnmieciem klawiszy strzałek
RGB(129,41,56) // to wartości tego koloru
x_M// x wierzchołka bitmapy względem początku układu okna
y_M// y-||-
GAMER.infBmp.bmWidth// szerokość bitmapy
GAMER.infBmp.bmHeight// wysokość bitmapy
if(GetPixel(GAMER.hdcMem, x_0, y_0) == RGB(129,41,56))
// jezeli pobrany kolor piksela kontekstu bitmapy z gramczem jest taki sam jak
// kolor którym otoczyłem postać
SetPixel(GAMER.hdcMem, x_0, y_0, GetPixel(MAP.hMemMAP, x_M +GAMER.infBmp.bmWidth, y_M +GAMER.infBmp.bmHeight));
// to uktaw kolor piksela kontekstu bitmapy z graczem na kolor tego samego piksela, z tym że tła
//sprawdzamy wszystkie piksele jakie mają kolory wykona sie tyle razy ile pikseli ma bmp z graczem
while(x_M < x_M + GAMER.infBmp.bmWidth)//wspolrzedna x piksela dopóki nie przekroczy końca bitmapy gracza
{
while(y_M < y_M +GAMER.infBmp.bmHeight)//wspolrzedna y piksela dopóki nie przekroczy przekroczy końca bitmapy gracza
{
if(GetPixel(GAMER.hdcMem, x_0, y_0) == RGB(129,41,56))
SetPixel(GAMER.hdcMem, x_0, y_0, GetPixel(MAP.hMemMAP, (x_M+x_0), (y_M + y_0));
++y_M;//kolejny piksel bmp tła na y
++y_0;//kolejny piksel bmp gracza na y
}
}
++x_M;// kolejny piksel bmp tła na x
++x_0;//kolejny piksel bmp gracza na x
}