MSUI.Programowanie wizualne.00/01. Zadanie zaliczeniowe.

Park Jurajski III

Wstęp

Na skutek eksperymentów genetycznych na pewnej osamotnionej, bezludnej wyspie na oceanie Spokojnym pojawiły 
się dinozaury. Niestety, mimo tego że nie stanowiły tu dla nikogo zagrożenia, zawisło nad nimi śmiertelne 
niebezpieczeństwo - ekipa filmowa kręcąca Park Jurajski III postanowiła wykorzystać je w swoim filmie. Na ratunek 
dinozaurom wyrusza ekspedycja, która ma za zadanie wyłapać je i przewieźć w bezpieczne miejsce.

Napisz program pozwalający graczowi zorganizować wyprawę ratunkową i pokierować jej przebiegiem. 

Przebieg gry

Na początku gracz wybiera poziom trudności gry. Następnie za pewną kwotę pieniędzy (zależną od poziomu trudności 
gry) kupuje sprzęt potrzebny do przeprowadzenia ekspedycji (p. załącznik 1) oraz wynajmuje ludzi (oprócz kierownika 
ekspedycji, którego funkcję pełni gracz (p. załącznik 2)). Ceny kupna sprzętu i wynajmu osób są parametrem 
programu.

Potem zaczyna się zasadnicza część gry. Ekspedycja znajduje się już w sąsiedztwie bazy położonej na brzegu wyspy. 
Nie ma mapy wyspy, a ze względu na złe warunki atmosferyczne, nie może używać samolotów. Zatem na razie 
członkowie ekspedycji znają tylko zarys brzegów wyspy, nie wiedzą natomiast jak jest ukształtowany teren na wyspie. 
Mogą jedynie przypuszczać, że napotkają formy terenu znane im z podobnych wysp (p. załącznik 3). W kolejnych 
turach gry członkowie ekspedycji poruszają się zgodnie z rozkazami wydawanymi drogą radiową przez jej kierownika. 
Wchodząc na nowy teren poznają jego ukształtowanie (wraz z sąsiedztwem o promieniu będącym parametrem gry, p. 
też opis DD) i przekazują informacje o terenie kierownikowi, widzą też dinozaury (p. załącznik 4) znajdujące się na 
tym terenie. Gdy członkowie ekspedycji opuszczą jakiś teren, to oczywiście kierownik ekspedycji nadal pamięta jego 
ukształtowanie (powinno ono nadal być widoczne na ekranie), ale ani on, ani członkowie ekspedycji nie widzą już 
dinozaurów chodzących po tym terenie - o ile nie ustawią DD (p. załącznik 1). Program powinien inaczej wyświetlać 
teren znany, ale obecnie nie oglądany, a inaczej teren aktualnie oglądany.

Gracz wygrywa grę, jeśli uda mu się schwytać i przewieźć do bazy wszystkie dinozaury w zadanym (zależnym od 
poziomu gry) czasie i nie zostanie zjedzony (w postaci kierownika) przez dinozaura.

Uwagi techniczne:

Plansza gry jest reprezentowana jako szachownica. Jedno jej pole to jedna forma terenu. Pola sąsiednie, to pola 
stykające się bokami bądź wierzchołkami. Na jednym polu może stać co najwyżej jeden obiekt ruchomy (członek 
ekspedycji, maszyna, dinozaur). Cała plansza ma się mieścić na ekranie (dzięki temu nie ma potrzeby jej przewijania). 
Plansza może być (wg uznania programisty):
? generowana losowo (z parametrami oznaczającymi procent udział rzek itp.),
? wczytywana z pliku.
Program powinien umożliwiać zapisywanie i odczytywanie stanu gry.

Zjedzenie członka ekspedycji przez dinozaura następuje wtedy, gdy dinozaur wejdzie na pole, na którym dotąd był 
członek ekspedycji. Złapanie dinozaura następuje wtedy, gdy na co najmniej dwu sąsiadujących z nim polach staną 
CD. Podczas karczowania lasu (budowania mostu) MKL (MBM) stoi na karczowanym terenie (tzn. wjazd MKL na 
pole z lasem oznacza początek karczowania, analogicznie dla MBM). Dostarczenie zaopatrzenia przez TT polega na 
podjechaniu przez TT na pole sąsiadujące z odbiorcą transportu i wydaniu przez gracza komendy rozładuj (z ew. 
wskazaniem, o którego z sąsiadujących odbiorców chodzi, jeśli jest ich kilku). Szybkość członków ekspedycji jest 
mierzona w przechodzonych polach (w poziomie, pionie i na ukos) na jedna kolejkę gry i zależy od rodzaju terenu. 
Parametry wymieniane w treści zadania powinny dawać się łatwo zmieniać co najmniej przez modyfikację treści 
programu.

Załącznik 1. Sprzęt używany przez ekspedycję.
? Detektory dinozaurów (DD). Są dość lekkie, zwykli członkowie ekspedycji mogą przenosić je po kilka 
(dokładna liczba jest parametrem programu), rozstawiać je na płaskim terenie i zabierać je. DD wykrywa 
wszelkie dinozaury znajdujące się w pewnym (parametr programu) promieniu od niego i przekazuje tę 
informację do kierownika ekspedycji. Uwaga, DD nie potrafi obserwować przez las i skały (tzn. widzi tylko 
brzeg lasu na głębokość jednego pola i brzeg obszaru skał, też na głębokość jednego pola). To samo 
ograniczenie dotyczy członków ekspedycji. Wspinacze i pływacy mogą wziąć tylko po jednym DD.
? Transportery towarów (TT). Pojazdy poruszające się po równym terenie, mostach i drogach wykarczowanych 
w lesie. Potrafią przewozić zapasy paliwa, materiały do budowy mostów, DD (maksymalna liczba 
przewożonych ładunków jest parametrem programu) oraz co najwyżej kilka (parametr programu) złapanych 
dinozaurów. Złapane dinozaury przewożą do bazy i tam wyładowują. Prędkość i zużycie paliwa - parametry 
programu. TT nie może przewozić dwu lub więcej rodzajów towaru naraz. Zapasy paliwa i materiałów 
(wystarczające na całą grę) znajdują się w bazie.
? Maszyny budujące mosty (MBM). Maszyny budujące mosty przez rzeki. Potrafią się poruszać po równym 
terenie, mostach i drogach wykarczowanych w lesie. Do budowy mostu potrzebują materiałów dowożonych 
przez TT z bazy. Ilość materiału potrzebna do zbudowania mostu, czas budowy, prędkość i zużycie paliwa - 
parametry programu.
? Maszyny karczujące las (MKL). Maszyny budujące drogi przez las. Potrafią się poruszać po równym terenie, 
mostach i drogach wykarczowanych w lesie. Prędkość i zużycie paliwa - parametry programu.
? Chwytacze dinozaurów (CD). Lekkie maszyny służące do łapania dinozaurów. Ponieważ złapanie biegnącego 
dinozaura jest bardzo trudne, czynność taka wymaga dwu CD. Po schwytaniu dinozaura oba CD nie mogą się 
ruszać, póki nie załadują go na TT. Potrafią się poruszać po równym terenie, mostach i drogach 
wykarczowanych w lesie. Prędkość i zużycie paliwa - parametry programu.

Załącznik 2. Ludzie biorący udział w ekspedycji.
? Zwykli członkowie ekspedycji: Poruszają się pieszo, mogą chodzić po równym terenie, mostach, drogach 
wykarczowanych w lesie i przedzierać się przez las. Mogą przenosić DD (p. opis DD). W przypadku 
napotkania drapieżnego dinozaura są zjadani. Szybkość - parametr programu.
? Wspinacze: Podobni do zwykłych członków ekspedycji, tyle że potrafią przenosić co najwyżej jeden DD (p. 
opis DD), a za to potrafią chodzić po skałach. Szybkość na skałach - parametr programu.
? Pływacy: Podobni do zwykłych członków ekspedycji, tyle że potrafią przenosić co najwyżej jeden DD, a za to 
potrafią przepływać rzeki. Szybkość pływania - parametr programu.
? Kierownik ekspedycji: podobny do zwykłych członków ekspedycji, tyle że zjedzenie go przez dinozaura 
oznacza przegraną i koniec gry. Oczywiście jest tylko jeden. Porusza się wolniej niż pozostali członkowie 
ekspedycji. Szybkość - parametr programu.
? Obsługa maszyn (poza bezobsługowymi DD): nie wychodzi podczas gry z maszyn, więc nie trzeba jej 
uwzględniać. Z tego samego powodu nie może być zjedzona przez dinozaura.

Załącznik 3. Formy terenu występujące na wyspie.
? teren płaski,
? las,
? droga w lesie,
? skały,
? rzeka,
? most,
? teren bazy ekspedycji (nikt tam nie przebywa oprócz złapanych dinozaurów),
? ocean (nic nie może wejść na ten teren - nawet pływacy, otacza cała wyspę).

Załącznik 4. Dinozaury.
Ruchem dinozaurów steruje komputer. Jeśli dinozaur wejdzie na DD to go niszczy, na pola z pozostałymi maszynami 
nie może wejść. Algorytm gry komputera może być na niższych poziomach zupełnie losowy, na wyższych wystarczy, 
że dinozaury będą uciekać przed maszynami, drapieżne  gonić członków ekspedycji, a łagodne niszczyć DD (gonienie 
nie musi być inteligentne, wystarczy podążać, nie zważając na teren, w kierunku najbliższego członka ekspedycji). 
? Tyranozaurus. Drapieżny. Może chodzić po równym terenie, mostach, drogach wykarczowanych w lesie i 
przedzierać się przez las. Szybkość - parametr programu.
? Brontozaurus. Łagodny. Może chodzić po równym terenie, mostach, drogach wykarczowanych w lesie i 
przedzierać się przez las. Szybkość - parametr programu.

Uwaga: 
Chętni mogą zamiast gry turowej zaimplementować grę toczącą się w czasie rzeczywistym. Jest to trudniejsze zadanie 
(wymaga synchronizowania i współbieżnego obsługiwania ruchów komputera i użytkownika, ale gra zyskuje wtedy na 
atrakcyjności). Za obie postaci gry można otrzymać ocenę bardzo dobrą.

Życzymy dobrej zabawy!