Pisanie algorytmu ruchu armi do gry w wojnę w C++ (gra ze znakami ASCII)

0

Dzień dobry!
To mój pierwszy post w tym forum.
Tak jak w temacie zacząłem mam za zadanie napisać Algorytm ruchu mojej armi w grze na mapce. Mapka będzie generowana przez program (Przykładowa mapka w załączniku "Praca1"). Będzie to działało tak że mój algorytm zostanie wklejony do programu w którym będzie działa się walka.

Jak zacząć taki algorytm?
Ja jestem w tracie rysowania tego algorytmu na kartce papieru.
Nie wiem czy dobrze robię. Dlatego piszę ten post.

Dokładniejszy opis działania tego algorytmu jest w załącznikach.

Pozdrawiam
Michał

1

Ja widzę tylko treść zadania, żadnego "robienia" nie widzę.
Napisz z czym masz problem i co już masz zrobione.

0

Dzień dobry!

W załączniku jest ta ta gra w wersji próbnej zawodnik rusza się prosto a drugi wybiera pole losowo.

A ja mam problem bo nie wiem jak zacząć pisać algorytm sprawdzający pola koło danej armii, a następnie wybrać odpowiednie pole.

Pozdrawiam
Michał

0

Do generowania drogi będzie Ci potrzebna tablica dwuwymiarowa równa wielkości Twojej planszy w grze. Później trzeba zaznaczyć na niej blok startowy (najlepiej numerem 1) i docelowy. Następnie potrzebujesz kodu w pętli który rozpocznie swoje działanie w bloku z nr 1, sprawdza czy istnieje blok nad aktualnie obliczanym blokiem (czy nie jest to przypadkiem krawędź mapy/tablicy) oraz czy blok nie jest przeszkodą na którą nie można wejść, a jeżeli istnieje musi dodać do tego bloku numer większy o 1 od poprzedniego bloku. I to samo z innymi kierunkami czyli: w prawo, w dół i w lewo oraz jeżeli postacie mają się poruszać na ukos to jeszcze trzeba to zastosować do kierunków ukośnych. Później musi wyszukać wszystkie bloki w tablicy które mają numer który był ostatnio zapisywany i uzupełniać puste sąsiednie komórki większą liczbą. Mi ten proces przypomina echolokacje, algorytm wysyła fale analizującą teren i czeka czy dojdzie ona do miejsca docelowego. Na razie kod wygeneruje tablice z numerami rozchodzącymi się promieniście od punktu startowego. Następnie trzeba umożliwić wyjście z pętli jeżeli na bloku docelowym pojawi się wygenerowany numer aby kod nie wykonywał się niepotrzebnie. Tutaj można sprawdzić czy droga do punktu docelowego jest w ogóle możliwa, tzn. jeżeli kod nie może już uzupełniać żadnych bloków, ponieważ cała tablica jest już uzupełniona, a blok docelowy nie ma przypisanego numeru to droga jest niemożliwa. Na koniec tak jak jest to przy echolokacji sygnał musi wrócić do startu, a więc należy wracać po własnych krokach. Wystarczy zacząć od bloku docelowego, szukać w sąsiednich blokach numeru mniejszego o 1 i zapisać do zmiennej kierunek przemieszczenia (można to zapisać np. tak: 1 - do góry, 2 - w prawo 3 - w dół itd.), i tak cały czas aż wróci się do miejsca z którego się wychodziło, czyli do bloku nr 1. Na koniec należy odwrócić wygenerowaną drogę, ponieważ otrzymana droga jest drogą od tyłu. Trzeba analizować drogę od tyłu i zamieniać liczby na ich odwrotności w kodowaniu kierunków np. 1 oznaczający kierunek w górę na 3 oznaczający kierunek w dół itd. Wygenerowana droga jest najkrótszą ścieżką z punktu A do punktu B.

Mam nadzieje że pomogłem w zrozumieniu działania takiego algorytmu.

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