W labiryncie
Dawno, dawno temu był taki serial W Labiryncie*W*, który uchodzi za pierwszą polską operę mydlaną. W tym samym czasie ja wraz z bratem zagrywaliśmy się w MaziacsW. Grę, która dla nas, gówniaków LVL 5 i LVL4, był na tyle trudna, że wciągała. Jak ktoś chce się spróbować, to może poszukać w necie. Linka nie podam, bo większość wymaga Javy jako appletu. Nie będę promował kiły wśród znajomych.
Zanim jednak zaczniecie szukać w internetach grywalnej wersji, to rzućcie okiem na książkę „Mazes for Programmers Code Your Own Twisty Little Passages” Jamisa Bucka. Książka poświęcona jest algorytmom tworzenia labiryntów na potrzeby gier. Począwszy od prostych, gdzie mamy jedną ścieżkę oraz wzorce, poprzez bardziej złożone, pseudolosowe, aż po labirynty wielopoziomowe. Efektywnie jest to 6 algorytmów, które są modyfikowane w zależności od potrzeb. Całość opisana za pomocą prostego języka, który tylko miejscami wymaga głębszego skupienia. Kod programów jest naklepany w Rubym, co można uznać za rozsądne. Ja z moją zerową znajomością tego języka czytałem kod i rozumiałem, co autor chce przekazać.
Poza generowaniem logicznej struktury labiryntów poznamy tu też tajniki ich rysowania. Książka obejmuje nie tylko labirynty na planie prostokąta, ale też labirynty kołowych czy o określonej grubości ścian. Chyba jednym z najbardziej efektownych jest labirynt na planie Wstęgi MöbiusaW. Jednym z ciekawszych aspektów jest wizualna analiza algorytmów poprzez wprowadzenie kolorowania, które uwypukla schematy działania poszczególnych algorytmów.
Jeśli miałbym się do czegoś przyczepić, to brak rozdziału poświęconego algorytmom rozwiązywania labiryntów. Na potrzeby książki wprowadzono tylko DijkstręW w podstawowej wersji. Trochę mało. Zabolał też uproszczony model składowania danych. Autor ogranicza się do tablic, a o metodzie grafowej tylko wspomina. Z drugiej strony komponując wiedzę z książki z wiedzą z kursu Advanced Data Structures możemy pokusić się o coś bardziej rozbudowanego 🙂
Książka nie jest jakoś super przydatna w codziennej pracy programisty. Z drugiej strony, programowanie to przede wszystkim pasja, hobby i dobra zabawa. Zatem taki przerywnik w smutnym świecie kolejnych CRUDów jest bardzo fany. Na pewno jest to pozycja obowiązkowa dla tych, którzy chcą zająć się pisaniem gier. Duża dawka pojęć, które można przekuć na zapytania do google.