Sprawdź się
Zadanie 3. Gra komputerowa
Pewna liczba osób bierze udział w grze komputerowej. Plansza do tej gry to dywan Sierpińskiego zapisany w tablicy o podanym rozmiarze n × n
, gdzie n
jest potęgą liczby 3.
Oto przykładowa plansza o rozmiarze :
![Ilustracja przedstawia dywan Sierpińskiego. Figura narysowana jest przy pomocy znaku # na układzie współrzędnych o wymiarach 27 na 27. W centralnej części znajduje się pusta przestrzeń w kształcie dużego kwadratu. W każdym kierunku od centralnego kwadratu znajduję się mniejszy kwadrat.](https://static.zpe.gov.pl/portal/f/res-minimized/R15bPSSYKRsoB/1677592357/2HWmOeK7pXbD9Lr579WS998cCAn2T9sP.png)
Każdy gracz ma dostępną określoną liczbę punktów życia. Celem gracza jest jak najszybsze dotarcie do dowolnego czarnego pola, gdyż tylko one są bezpieczne - to znaczy nie powodują utraty punktów. Natomiast każdy ruch wykonany z białego pola to strata jednego punktu życia. Gdy gracz straci wszystkie punkty, przegrywa. Ponieważ gracze konkurują ze sobą, mają do dyspozycji różnego rodzaju metody ataku, dzięki którym mogą doprowadzić do wyrzucenia przeciwnika na białe pole.
Pozycja gracza podawana jest za pomocą dwóch liczb – x
oraz y
. Każdy gracz może w jednej turze poruszyć się o jedno pole w górę, w dół, w lewo lub w prawo.
Napisz program, który sprawdzi, czy dany gracz zdąży powrócić na najbliższe czarne pole przy podanej liczbie punktów życia. Jeśli gracz na początku rozgrywki stoi na czarnym polu, nie musi się już poruszać, zatem nie straci żadnego punktu – na pewno przeżyje. Jeśli gracz dotrze do czarnego pola, powinien zostać wypisany komunikat TAK
, w przeciwnym razie: NIE
.
Jeśli gracz zaczyna rozgrywkę na białym polu, również traci jeden punkt.
Gracz oznaczony znakiem X znajduje się na polu o współrzędnych x = 13
, y = 10
(numerowane od 0). Zaczyna na białym polu, zatem na początku traci jeden punkt życia. Podczas powrotu na czarne pole, przechodząc przez pola białe, straci punkt życia.
Gracz startuje z białego pola. Z tego powodu traci jeden punkt życia. Następnie traci jeden punkt życia po przejściu na kolejne białe pole (x = 13
, y = 9
). Następnie gracz przechodzi na czarne pole (x = 13
, y = 8
), nie traci zatem życia. Stracił więc dokładnie dwa punkty. Gracz traci punkty życia tylko w tych ruchach, które zaczynają się na białym polu.
Gdyby gracz miał trzy punkty życia, straciłby wyłącznie dwa, więc w jego przypadku wypisany zostałby komunikat TAK
.
Natomiast gdyby gracz miał tylko dwa lub mniej punktów życia, straciłby je. Nie zostałby mu żaden punkt życia, wypisany zostałby zatem komunikat NIE
.
![Ilustracja przedstawia dywan Sierpińskiego. Figura narysowana jest przy pomocy znaku # na układzie współrzędnych o wymiarach 27 na 27. W centralnej części znajduje się pusta przestrzeń w kształcie dużego kwadratu.W centralnym kwadracie na współrzędnych 13,10 jest wpisany znak X W każdym kierunku od centralnego kwadratu znajduję się mniejszy kwadrat.](https://static.zpe.gov.pl/portal/f/res-minimized/Rq0CjZ5SbdJdN/1677592358/1W58AUBIghF9WSURMSmGGkhPXMHv34UN.png)
Plik gracze.txt
składa się z 11 wierszy. W pierwszym z nich znajduje się pojedyncza liczba naturalna oznaczająca liczbę graczy biorących udział w rozgrywce. Pozostałe wiersze zawierają informacje na temat graczy - w każdym wierszu podano cztery liczby naturalne oddzielone spacjami: pierwsza to rozmiar planszy; druga - numer kolumny, w której gracz zaczyna grę; trzecia - numer wiersza, w którym gracz zaczyna grę; natomiast ostatnia to liczba punktów życia gracza.
Przykładowe dane dla których będzie testowane rozwiązanie:
Dla przedstawionych danych pierwszy gracz (jego dane znajdują się w wierszu nr 2) porusza się po planszy o rozmiarze 27, zaczyna w kolumnie 20, w wierszu 0 oraz ma 3 punkty życia.
Dla przedstawionych danych program powinien wypisać następujące komunikaty:
Do oceny oddajesz:
plik
wynik.txt
zawierający odpowiedź (komunikatyTAK
lubNIE
, zależnie od tego, czy w danym przypadku gracz przeżyje),plik(i) z komputerową realizacją zadania (kodem programu).
Przedstaw rozwiązanie zadania, pisząc program w języku C++, Java lub Python. Zadbaj o prawidłowe wczytanie danych z pliku tekstowego. Rozwiązanie zadania znajdziesz pod sekcją ćwiczeń.
JĘZYK C++
JĘZYK JAVA
JĘZYK PYTHON
Odpowiedź
Odpowiedź do zadania dla danych zawartych w pliku tekstowym: