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 27×27:

R15bPSSYKRsoB
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

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.

Przykład 1

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.

Rq0CjZ5SbdJdN
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

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:

Linia 1. 4. Linia 2. 27 20 0 3. Linia 3. 729 16 129 6. Linia 4. 27 14 13 1. Linia 5. 9 3 6 10.

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:

Linia 1. TAK. Linia 2. TAK. Linia 3. NIE. Linia 4. TAK.
RoS9FvHI3KIIA

Plik XLSX zawierający przykładowe dane.

Plik TXT o rozmiarze 113.00 B w języku polskim

Do oceny oddajesz:

  • plik wynik.txt zawierający odpowiedź (komunikaty TAK lub NIE, 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ń.

11
Pokaż ćwiczenia:
1

JĘZYK C++

21
Ćwiczenie 1
R1Crw7rTb6TMe1
Wymyśl pytanie na kartkówkę związane z tematem materiału.
1

JĘZYK JAVA

21
Ćwiczenie 2
R1U2KKPGonYH2
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
1

JĘZYK PYTHON

21
Ćwiczenie 3
RD7G0M3eTLIpW
Wymyśl pytanie na kartkówkę związane z tematem materiału.

Odpowiedź

Odpowiedź do zadania dla danych zawartych w pliku tekstowym:

R17FgVrGdJjhm

Przycisk do pobrania pliku TXT z wynikiem zadania.

Plik TXT o rozmiarze 48.00 B w języku polskim