• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Czy bloki zmieszczą się w siatce

0 głosów
228 wizyt
pytanie zadane 16 marca 2020 w C# przez Neespa Początkujący (300 p.)

Witajcie, robię grę logiczną (a la 10x10) i szukam pomysłu jak sprawdzić czy blok zmieści się w siatce (czy jest na niego miejsce).
Chodzi o to że podnosimy blok i wrzucamy go na miejsce, ale może dojść do sytuacji że bloku nie da się nigdzie umieścić, a gra musi o tym wiedzieć.

może jest do tego jakiś algorytm? :P
Pozdrawiam

1 odpowiedź

0 głosów
odpowiedź 17 marca 2020 przez pionas0407 Gaduła (4,620 p.)

Nigdy nie pisałem tego typu gier komputerowych, ale możemy się nad tym problemem zastanowić.

Ja spróbowałbym napisać event, który wykonuje się zawsze po opuszczenie elementu. Czyli po pierwszym ruchu, drugim itd.

Event ten sprawdzałby dla każdego elementu czy jest możliwość go wsadzenia, dla optymalizacji, po znalezieniu pierwszej takiej możliwości natychmiast by kończył swoje działanie i pozwalał komuś kontynuować grę, w przeciwnym razie wyświetlił by stosowny komunikat i zakończył grę.

Event ten działałby w następujący sposób:

1) Weź klocek z dołu

2) Sprawdzaj kratkę po kratce czy można go umieścić

3) Jeżeli znalazłeś miejsce -> zakończ, w przeciwnym razie: sprawdź czy jest dostępny kolejny klocek -> jeżeli nie jest dostępny - koniec gry, jeżeli jest dostępny klocek, przejdź do punktu pierwszego.

 

Nie wiem dokładnie jaką masz implementacje swojego kodu ale ja sobie to wyobrażam jako tablicę dwu wymiarową np. [5][5] co daje mniej więcej taki wygląd planszy
 

[   ][   ][   ][   ][   ]

[   ][   ][   ][   ][   ]

[   ][   ][   ][   ][   ]

[   ][   ][   ][   ][   ]

[   ][   ][   ][   ][   ]

no i iterujesz sobie kratka po kratce.

 

Jeżeli masz inną implementacje to zdradź jak to działa i będziemy mogli pomyśleć ;) 

komentarz 25 marca 2020 przez Neespa Początkujący (300 p.)

Siatka jest w 2-wymiarowej liście, ale problemem właśnie jest punkt 

2) Sprawdzaj kratkę po kratce czy można go umieścić

Ponieważ jest 20 różnych układów bloku. 

Myślałem nad listą dla każdego bloku która np. dla bloku 2x2 wyglądała by [1,1,następna_linia,1,1]. I wtedy iterować bo każdej komórce, ale wydaje się to strasznie skomplikowane :D

Może filmik trochę wyjaśni o co chodzi : https://vimeo.com/400715949

Podobne pytania

+1 głos
1 odpowiedź 671 wizyt
pytanie zadane 4 lipca 2021 w OpenGL, Unity przez theemperor Użytkownik (710 p.)
0 głosów
1 odpowiedź 423 wizyt
pytanie zadane 12 lipca 2019 w C# przez KazikBozia Obywatel (1,600 p.)
0 głosów
3 odpowiedzi 1,126 wizyt
pytanie zadane 11 sierpnia 2017 w C# przez Wasacz Początkujący (480 p.)

93,727 zapytań

142,668 odpowiedzi

323,283 komentarzy

63,287 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...