poruszanie obiektami w grze

0

Pytam tylko i wyłącznie teoretycznie.
Nie wiem, czy w ogóle ktoś z tego forum bawił się w pisanie gier. Chciałbym tylko zapytać, czy trudno jest napisać poruszanie grupą postaci (ewentualnie jedną) w grze? Wyobraźcie sobie jakąś grę, widok izometryczny, czy z lotu ptaka, niech to będzie gra strategiczna. Wybieracie jednostkę (np. wojownik) i klikacie myszką w jakiś punkt na ekranie. Postać gdyby szła prosto do celu, dosłownie, to po drodze zablokowałaby się na skale, drzewie, murze, chacie, płocie, czy innym obiekcie więc trzeba napisać, by postać omijała przeszkody i wybierała najkrótszą drogę. Jak bardzo jest to trudne? Poziom trudności możecie określić np. w skali od 1 do 10, gdzie 1 to banalne (i nawet osoba, która pisała tylko programy, a nie gry, poradzi sobie z tym bez problemu), a 10 to ekspert programowania ze sporym doświadczeniem w pisaniu gier.

A drugie pytanie, niemal identyczne jak wyżej, z tą różnicą, że w grze są pola, kratki jak w zeszycie i postać skacze z jednej kratki do kolejnej i jej zadaniem też jest dojść do celu i na kratkach niektórych jest mur i inne przeszkody, które trzeba ominąć. Poziom trudności mniejszy będzie od pytania nr 1? Czy niemal identyczny?

Jak ktoś chce, może nawet kilka słów napisać jak taki kod mniej więcej wygląda opisując go "ludzkim" językiem, a nie fragmentami kodu.

Dzięki.

0

Poczytaj o pathfindingu (wyszukiwanie ścieżki itp.), są różne algorytmy - ciężko powiedzieć o trudności, ale może 5/10 (dawno temu implementowałem A* (a star)...).

A drugie pytanie, niemal identyczne jak wyżej, z tą różnicą, że w grze są pola, kratki jak w zeszycie i postać skacze z jednej kratki do kolejnej i jej zadaniem też jest dojść do celu i na kratkach niektórych jest mur i inne przeszkody, które trzeba ominąć. Poziom trudności mniejszy będzie od pytania nr 1? Czy niemal identyczny?

To jest praktycznie to samo co pytanie poprzednie - kratki tworzą mapę, wystarczy zaimplementować odpowiedni algorytm (patrz wyżej), który będzie traktował mur oraz inne rzeczy jako przeszkody i je omijał.

0

Można by wykorzystać algorytm rasteryzacji prostej(bresenhama) http://wm.ite.pl/articles/bresenham.html aby wyznaczyć ruch po krzywej. Na początku wyznaczyłbyś linię od początku do celu(wszystkie współrzędne 2D x i y zapisałbyś do pojemnika np typu vector). i później sprawdzał każdą współrzędna lini(jakby piksel) czy przypadkiem nie znajduje się na przeszkodzie. Później już łatwo zrobić omijanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1