xxl - czy Ty chcesz po prostu zakodowac mape do gry?
Jesli tak, to przestan wyslec o niej jak o siatce wspolrzednych 64x64 czy 256x256! Po prostu narysuj sobie na kartce lokacje w postaci kwadracikow obok siebie, dorysuj drzwi, dlugimi strzalkami polacz kwadraciki miedzy ktorymi ma dzialac teleporter. To wszystko juz pewnie masz.
A teraz zakoduj to tak:
- kazdej lokacji, ktora moze odwiedzic gracz, nadaj kolejny numer: 1, 2, 3... Kolejnosc nadawania moze sie miec nijak do polozenia "geograficznego" na mapie. Oczywiscie nie nadawaj numerow "pustym miejscom" miedzy lokacjami!
- Policz ile masz lokacji (oznaczmy to N).
- Robisz tablice Nx5. Wiersze tej tablicy (1..N) odpowiadaja kolejnym lokacjom. 4 kolumny odpowiadaja kierunkom: N,S,E,W. Dla kazdej lokacji wpisujesz w te kolumny, do ktorej lokacji trafi gracz kiedy pojdzie w danym kierunku. Niezaleznie czy beda to drzwi, czy teleporter.
Przyklad: wiersz 1 zawiera wpisy: 2,12,3,0. Oznacza to ze idac na polnoc wejdziemy do lokacji 2, na poludnie - 12, na wschod 3, a na zachod przejscia nie ma.
Kolumne 5-ta przeznacz na flagi oznaczajace np czy pomieszczenie bylo juz odwiedzone czy nie, itp.
Dodajac jeszcze 2 kolumny mozesz rozszerzyc mozliwosc chodzenia o Gore i Dol.
Teraz co do bajtow. Jesli masz N<256 to na kazda kolumne tabeli potzrebujesz 1 bajt. Czyli dla 1024 lokacji wyjdzie Ci 5kB. Jesli masz >=256 to na kazda z kolumn kierunku potrzebujesz 2B (moze byc mniej ale nameczysz sie przy programowaniu). Rozumiesz, musisz zapisac ze np. idac na polnoc trafisz do lokacji nr 789, a na to 1bajt nie wystarczy.
Teraz przedmioty. Ponumeruj wszystkie przedmioty w grze od 1 do M. Zrob sobie osobna tablice jednowymiarowa o dlugosci M. W kazdej komorce wpisujesz nr lokacji na mapie w ktorej znajduje sie przedmiot. 0 oznacza ze gracz ma przedmiot przy sobie. -1 oznacza ze przedmiot juz/jeszcze nie istnieje.
Ja tego wszystkiego bron boze nie wymyslilem ;) To bylo streszczenie z kursu kodowania gier przygodowych z Komputera z 88 roku o ile dobrze pamietam. Autora w tej chiwli nie pamietam, ale mam skany tych artykulow. Jak chcesz to podesle. Sprawdzone w praktyce.