1 Wst˛ep 2 Opis gry
Transkrypt
1 Wst˛ep 2 Opis gry
Zadanie zaliczeniowe z Programowania Obiektowego Rok 2OO5/2OO6 Zbieracz, wersja 0.07 1 Wst˛ep Gra “Zbieracz” jest gra˛ planszowa˛ w której gracz steruje postacia˛ Zbieracza w celu uzyskania jak najwi˛ekszej ilości punktów za zbieranie trofeów rozmieszczonych na planszy. 2 Opis gry 2.1 Plansza Plansza jest podzielona na kwadraty - pola. Gracz “chodzi” po planszy Zbieraczem. W jednym ruchu gracz może przesunać ˛ Zbieracza w prawo, w lewo, skoczyć do góry lub do góry z przesuni˛eciem w lewo lub w prawo. Przesuni˛ecie odbywa si˛e pod warunkiem, że można na to pole wejść (patrz opis pól planszy) lub wejść po przepchni˛eciu innych obiektów, oraz że pole mieści si˛e na planszy. Ponieważ działa grawitacja, Zbieracz, który nie ma oparcia w twardym podłożu (mur, kamień, bomba - patrz opisy dalej) spada w dół. Jeśli na dole planszy nie b˛edzie pola, na którym można stanać, ˛ to Zbieracz ginie w przepaści. Ale nie można przejść, ani przepchać przedmiotów, poza prawa˛ lub lewa˛ kraw˛edź planszy. W niektórych sytuacjach Zbieracz porusza si˛e inaczej (czytaj o tym dalej). Numery pól planszy rosna˛ w dół i w prawo. Na ekranie widoczny jest tylko fragment planszy o określonym stałym rozmiarze, a sama plansza może być znacznie wi˛eksza. Zawsze na tym fragmencie jest widoczny Zbieracz. Plansza jest opisywana plikiem o formacie przedstawionym w punkcie 2.7. 2.2 Zbieracz Jego celem jest zdobycie jak najwi˛ekszej liczby punktów, otrzymywanych za zebranie pewnych trofeów. O trofeach przeczytaj w punkcie 2.4. Zbieracz może skakać. Podczas skoku zwiedza pola znajdujace ˛ si˛e na trasie swego lotu. Zwykły skok (do góry) powoduje zwiedzenie co najwyżej 4 pól znajdujacych ˛ si˛e bezpośrednio nad Zbieraczem (o ile można na nie wejść). Zbieracz po osiagni˛ ˛ eciu ostatniego z tych pól (czyli co najwyżej czwartego) zaczyna spadać (zgodnie z pozostałymi regułami) - wszystko to dzieje si˛e w jednym ruchu. Zbieracz skacze maksymalnie wysoko (zachowujac ˛ wszystkie podane w tym punkcie ograniczenia). Skoki w prawo lub w lewo dodatkowo przesuwaja˛ o 2 pola horyzontalnie. Trajektoria skoku w lewo (w prawo analogicznie) jest nastepujaca: ˛ • zwiedź 3 pola znajdujace ˛ si˛e bezpośrednio nad Zbieraczem (3xgóra), • zwiedź 1 pole znajdujace ˛ si˛e w kierunku lewo-góra od ostatniego, • zwiedź 1 pole znajdujace ˛ si˛e w kierunku lewo-dół od ostatniego, • Zbieracz spada. Jeśli pewnego pola nie można zwiedzić (np. jest tam mur), Zbieracz spada wcześniej (nie wykonujac ˛ kolejnych punktów lotu, czyli natrafienie na ścian˛e podczas lotu w gór˛e powoduje, że Zbieracz nie przesuwa si˛e w bok). Zbieracz zbiera wszystkie trofea, które znajduja˛ si˛e na odwiedzanych polach. Skok trwa jednostk˛e czasu. Każdy Zbieracz posiada licznik życia. Na poczatku ˛ mamy 3 życia. Jeśli Zbieracz ginie i licznik ten wynosi 0, gra kończy si˛e. W przeciwnym przypadku zaczynamy gr˛e z plansza˛ ze stanem obecnym z punktu startowego i zmniejszamy licznik życia o 1. 2.3 Pola planszy Pole zwykłe Pole, na które Zbieracz może wejść, nie posiadajace ˛ żadnych własności dodatkowych. Pole mur Można spotkać dwa rodzaje murów: mury nietrwale i wieczne. Mury wieczne sa˛ to pola, na które gracz nigdy nie może wejść. Nie można ich zniszczyć wybuchem. Mury nietrwałe sa˛ to pola, na które Zbieracz nie może wejść, chyba że usunie mur poprzez wybuch. Zburzenie takiego muru jest tylko czasowe - mur odrasta po 20 jednostkach czasu. Jeżeli na tym polu jest w tym momencie Zbieracz, to ginie. 1 Pole z kamieniem Kamień można przesuwać w prawo lub w lewo zgodnie z kierunkiem przesuwania (w tym przypadku pchania) Zbieracza, o ile w kierunku pchania za kamieniami znajduje si˛e pole zwykłe. Zbieracz może przepchać dowolna˛ liczb˛e kamieni. Ogólnie, zawsze jeśli pod kamieniem jest pole zwykłe to kamień spada. Kamień spada w przepaść jeśli pod nim wszystkie pola sa˛ zwykłe. Jeśli kamień spadnie na Zbieracza to Zbieracz ginie. Ale kamień może być chwilowo bezpośrednio nad Zbieraczem (np. wtedy gdy Zbieracz wejdzie na pole z trofeum, nad którym jest pole z kamieniem - taki kamień spadnie dopiero po wyjściu z pola). Kamień, który spadnie na bomb˛e lub min˛e (patrz niżej) powoduje ich eksplozj˛e, ale kamień wepchni˛ety nie. Dotyczy to także min ukrytych w niespodziankach (opis niżej). Kamienie (i inne przedmioty, które moga˛ spadać) spadaja˛ w określonej kolejności. Najpierw te, które sa˛ najniżej. A wśród tych położonych na tym samym poziomie najpierw te od lewej. Pole z mina˛ Jeżeli Zbieracz wejdzie na pole z mina˛ lub zwiedzi je podczas skoku, mina wybucha po 5 jednostkach czasu. W polu rażenia miny znajduje si˛e pole, na którym mina była umieszczona oraz wszystkie pola, które miały wspólna kraw˛edź z tym polem1 . Wszystkie mury nietrwałe, kamienie, miny znajdujace ˛ si˛e w polu rażenia wybuchu ulegaja˛ zniszczeniu, a Zbieracz ginie. Podobnie trofea ulegaja˛ zniszczeniu, ale wyjatkiem ˛ jest diament (patrz 2.4), który zmienia si˛e w szafir. Nie ulegaja˛ zniszczeniu detonatory i teleporty. W szczególności, gdy przedmiot, który ulega zniszczeniu jest ukryty w niespodziance (opis niżej), niespodzianka też przestaje istnieć. Ale uwaga, w przypadku lawinowej reakcji wybuchowej ta przemiana jest wykonywana dopiero po wszystkich wybuchach. Po 20 jednostkach czasu od wybuchu miny na polu tworzy si˛e nowa mina. Miny sa˛ nieruchome i nie spadaja. ˛ Pole z bomba˛ Bomba zachowuje si˛e podobnie do miny, ale nie można na nia˛ wejść. Bomby można przesuwać i zrzucać jak kamienie. Bomby nie odradzaja˛ si˛e. Jeśli bomba znajdzie si˛e w obszarze wybuchu, też wybucha (analogicznie do miny). Jeśli bomba spadnie, to wybucha z prawdopodobieństwem 1/2. Bomby można też zdalnie zdetonować (opis patrz dalej). Pole teleport Zbieracz, który znajdzie si˛e na tym polu, zostanie przeteleportowany na inne pole znajdujace ˛ si˛e na planszy. Na szcz˛eście jeden teleport może przenosić tylko w jedno miejsce. Jeżeli miejsce docelowe jest zaj˛ete przez coś na co Zbieracz nie moje wejść, to teleport nie działa. Teleporty można łaczyć, ˛ ale w jednym ruchu jeden teleport może być wykorzystany tylko raz. Nie można zniszczyć teleportu. Pole końcowe Zbieracz, który znajdzie si˛e w tym polu wygrywa. Jeśli jest nast˛epna plansza, to przechodzi do niej (nazwa pliku z opisem nast˛epnej planszy znajduje si˛e w pliku z definicja˛ planszy). Pole z detonatorem Wejście detonuje wszystkie bomby w promieniu 3 pól (rozumianym jako ilość kroków jaka˛ należałoby wykonać od danego pola). Nie można zniszczyć detonatora. Pole z trofeum Patrz 2.4. Pole niespodzianka Tu znajduje si˛e ukryte trofeum, mina, detonator lub teleport. Po wejściu widoczna jest zawartość. 2.4 Trofea Trofea pozwalaja˛ zdobywać punkty lub daja˛ specjalne zdolności. Trofea sa˛ nieruchome i nie spadaja.˛ Zbieracz może wejść na takie pole. Diament Daje 100 punktów. Rubin Daje 50 punktów. Szafir Daje 20 punktów. Odradza si˛e po 30 rundach. Życie Daje 1 dodatkowe życie. Wysoki skok Podwaja wysokość jednego najbliższego skoku. Lot Przez 20 rund nie działa grawitacja na gracza. Nie ma skoków, zamiast skoku jest ruch do góry. 1 Czyli w promieniu 1 pola. 2 2.5 Trolle Trolle przeszkadzaja˛ w osiagni˛ ˛ eciu celu. Można je zabić wybuchem lub spadajacym ˛ kamieniem. Troll pożeracz Porusza si˛e w określonym kierunku w lewo lub w prawo, ale tylko po polach zwykłych. Gdy nie może przejść dalej, skacze z przesuni˛eciem w określonym kierunku (tak jak skok Zbieracza, patrz 2.2). Gdyby jednak miał spaść w przepaść (i zabić si˛e), nie wykonuje skoku tylko zmienia swój kierunek na przeciwny. Troll może spaść na pole znajdujace ˛ si˛e nad polem z trofeum. Może korzystać z teleportu. Ale nie wchodza˛ na niespodzianki, trofea, nie powoduja˛ wybuchów min i nie potrafia˛ pchać przedmiotów. Gdy go spotkamy, zjada wszystkie punkty. Troll zabójca Porusza si˛e podobnie do poprzedniego. Gdy spotka Zbieracza, Zbieracz ginie. Troll bombowiec Nieruchomy, co 10 jednostek zrzuca w dół bomb˛e, która po spadni˛eciu wybucha z prawdopodobieństwem 1/3. Jeśli pole, na którym powinna pojawić si˛e tuż po wyrzuceniu bomba jest zaj˛ete, wówczas w danej rundzie nic si˛e nie dzieje. 2.6 Inne Jedna jednostka czasu to jeden ruch - czyli jedno przesuni˛ecie Zbieracza. Gracz widzi wszystkie pola w bieżacym ˛ oknie. Nie widzi jednak dokad ˛ prowadzi teleport i ile jeszcze czasu pozostało do odrodzenia muru lub trofeów. Ale powinien widzieć ile czasu zostało do wybuchu miny. 2.7 Plansza - format pliku Opis planszy jest plikiem tekstowym zawierajacym ˛ informacje o rozmiarze planszy (szerokość oraz wysokość w kolejnych wierszach), rozmieszczeniu pól na planszy jako listy pól w kolejnych wierszach rozdzielane średnikami oraz pliku zawierajacym ˛ plansz˛e z kolejnym poziomiem gry (nazwa pliku podana w cudzysłowach, pusta nazwa pliku w przypadku ostatniej planszy). Plik może zawierać komentarze zgodnie z przykładem. # # # # # # # # # # # # # # # # # # # # # # # # # # # 6 Plansza "poziom1.txt" Pola: ! = zbieracz (pole startowe) _ = pole zwykle (puste) M = mur (wieczny) S = sciana (mur nietrwaly) K = kamien B = bomba I = mina T(poziomo,pionowo) = teleport na pole o danych wspolrzednych D = detonator N(pole) = niespodzianka zawierajaca dane pole E = pole koncowe Trofea: 1 = diament 2 = rubin 3 = szafir 4 = zycie 5 = wysoki skok 6 = lot Trolle: X = pozeracz Y = bombowiec Z = zabojca 3 9 Z;_;_;_;_;E M;M;M;M;M;M _;_;K;!;_;_ _;_;K;K;_;N(D) _;_;K;K;K;M _;_;S;S;S;B 3;_;S;B;B;B 2;_;S;B;_;_ 1;_;S;B;_;T(4,1) "poziom2.txt" 3 Zadanie Napisz program umożliwiajacy ˛ przeprowadzenie pojedynczej rozgrywki składajacej ˛ si˛e z potencjalnie kilku plansz. Program ma na poczatku ˛ wczytać plansz˛e startowa,˛ potem ma ja˛ wyświetlić i umożliwić graczowi wykonywanie poszczególnych ruchów. Interfejs powinien być graficzny (przyciski, mysz) i sensownie wygodny. Do programu należy dołaczyć ˛ co najmniej dwie plansze. Jedna mała o rozmiarze min. 20x10 (szerokość x wysokość) i druga duża o rozmiarze min. 50x30. 4 Historia zmian 1.00: ??.XI.2005 (wersja oryginalna) 4