Witam.
Mamy zrobić na zaliczenie program ( grę) polegającą na przesuwaniu bloczków za pomocą przycisków.
Przesuwamy czerwony bloczek, po natrafieniu na zielony mają być przesuwane obydwa. Przesuwanie w dół i prawo działa, Natomiast gdy przesuwam w lewo lub w górę czerwonym i napotkam na zielony od razu klocki znajdują się przy krawędzie (górnej lub lewej) . Nie wiem dlaczego, sam czerwony działa poprawnie. Gdyby ktoś mógł mi podpowiedzieć w czym jest błąd.
Druga sprawa, jak zrobić aby dało się przesuwać kilka zielonych na raz. Mogę sprawdzać 5 kolejnych komórek, bo liczba bloczków jest stała, ale trochę długi kod by był i pewnie dało by się krócej. Próbowałem pętlą while ale coś mi to nie wychodziło.
Dziękuję bardzo za pomoc i pozdrawiam.
Poniżej kod:
private void btnDown_Click(object sender, EventArgs e)
{
for (int w=0;w<=W-1;w++)
for (int k=0;k<=K-1;k++)
{
int wartosc = plansza[w, k];
if (wartosc==1)
{
if (w >= W - 1)
return;
if (plansza[w + 1, k] != 2)
{
plansza[w, k] = 0;
w++;
plansza[w, k] = wartosc;
pokaz_plansze();
}
else
{
if (w+1 >= W - 1)
return;
plansza[w, k] = 0;
w++;
plansza[w, k] = wartosc;
w++;
plansza[w, k] = wartosc + 1;
pokaz_plansze();
}
}
}
}
private void btnUp_Click(object sender, EventArgs e)
{
for (int w = 0; w <= W - 1; w++)
for (int k = 0; k <= K - 1; k++)
{
int wartosc = plansza[w, k];
if (wartosc == 1)
{
if (w <= 0)
return;
if (plansza[w - 1, k] != 2)
{
plansza[w, k] = 0;
w--;
plansza[w, k] = wartosc;
pokaz_plansze();
}
else
{
if (w - 1 <= 0)
return;
plansza[w, k] = 0;
w--;
plansza[w, k] = wartosc;
w--;
plansza[w, k] = wartosc + 1;
pokaz_plansze();
}
}
}
}