======================== Program semestralny z MP ======================== Opis gry "Gangsterzy" --------------------- Gra odbywa się na prostokątnej planszy o n kolumnach i m wierszach. Plansza ma zatem n * m pól; zakładamy, że 3 <= n,m <= 12. W grze bierze udział dwóch graczy, których będziemy nazywać gangsterami, odpowiednio, czerwonym i zielonym (od kolorów ich marynarek). Na planszy wyróżniamy cztery rodzaj pól: asfalt, słup, miejsce parkingowe gangstera czerwonego i miejsce parkingowe gangstera zielonego. Na planszy jest n miejsc parkingowych gracza czerwonego. Są one umieszczone na dole planszy, tzn. w najniższym wierszu. Na planszy jest także n miejsc parkingowych gracza zielonego. Umieszczone są one na górze planszy, tzn. zajmują najwyższy wiersz. Pozostałe pola są asfaltem lub słupami. Przykładowa konfiguracja planszy 5 x 4: +--+--+--+--+--+ |PZ|PZ|PZ|PZ|PZ| PC - parking gangstera czerwonego +--+--+--+--+--+ PZ - parking gangstera zielonego | | | |XX| | XX - słup +--+--+--+--+--+ (spacje) - asfalt |XX| | | | | +--+--+--+--+--+ |PC|PC|PC|PC|PC| +--+--+--+--+--+ Każdy z gangsterów posiada n samochodów, które na początku gry znajdują się na miejscach parkingowych. Ponadto na planszy na ustalonym polu, które jest asfaltem, umieszczona jest kasetka z brylantami. Przykładowa startowa konfiguracja na powyższej planszy: +--+--+--+--+--+ |SZ|SZ|SZ|SZ|SZ| SC - samochód gangstera czerwonego +--+--+--+--+--+ SZ - samochód gangstera zielonego | | | |XX| | K - kasetka +--+--+--+--+--+ |XX| |K | | | +--+--+--+--+--+ |SC|SC|SC|SC|SC| +--+--+--+--+--+ Gangsterzy wykonują ruchy na przemian. Ruch gangstera składa się z dwóch kroków. W pierwszym kroku przemieszczana jest kasetka, a w drugim jeden z samochodów gangstera. Przemieszczenie kasetki lub samochodu polega na wybraniu jednego z ośmiu kierunków (wszystkie pionowe, poziome i ukośne), a następnie przesuwaniu w tym kierunku danego przedmiotu tak długo, aż napotka się inny przedmiot, słup lub koniec planszy. W przykładowej sytuacji kasetkę możemy przemieścić w obu poziomych kierunkach - w lewo lub w prawo, w pionie - do góry oraz po skosie - w lewo do góry. Na przykład, po wykonaniu przez gangstera czerwonego ruchu: [kasetka w lewo, środkowy czerwony samochód w prawo do góry], sytuacja będzie następująca: +--+--+--+--+--+ |SZ|SZ|SZ|SZ|SZ| +--+--+--+--+--+ | | | |XX|SC| +--+--+--+--+--+ |XX|K | | | | +--+--+--+--+--+ |SC|SC| |SC|SC| +--+--+--+--+--+ Pierwszy ruch wykonuje gangster czerwony. Celem gry jest umieszczenie kasetki na własnym miejscu parkingowym. Jeśli w wyniku przemieszczenia kasetki przez któregoś z gangsterów znajdzie się ona na miejscu parkingowym, to zwycięzcą jest ten gangster, który jest właścicielem tego miejsca parkingowego. Ponadto gangster przegrywa, jeśli właśnie powinien wykonać ruch, a nie może on przemieścić kasetki lub po jej przemieszczeniu, które nie kończy gry (tzn. nie na miejsce parkingowe) nie może przemieścić żadnego ze swoich samochodów.