Bitwa [2021] [PR]
W internetowej grze Bitwa o Kamienną Bramę bierze udział wielu graczy z całego świata. Każdy gracz może budować różnego rodzaju jednostki (np. robotników, piechurów, łuczników, szpiegów lub magów), które może wykorzystać do budowy wirtualnego księstwa lub wystawić do bitwy. Polem gry jest duża plansza, na której każda jednostka zajmuje pewne miejsce. Każdy gracz może mieć wiele jednostek, np. kilku robotników, drwali, balist i innych. W plikach gracze.txt, klasy.txt oraz jednostki.txt podano aktualny stan wirtualnej planszy. Dane w tych plikach podane są w kolejnych wierszach, w każdym wierszu pola oddzielono znakiem tabulacji. Pierwszy wiersz każdego z plików jest wierszem nagłówkowym.
Plik gracze.txt zawiera informację o graczach:
- Unikatowy identyfikator będący liczbą całkowitą, numer gracza (id_gracza),
- Kraj pochodzenia (kraj),
- Datę dołączenia do gry (data_dolaczenia) w formacie rrrr-mm-dd.
Przykład pliku gracze.txt:
id_gracza kraj data_dolaczenia
1 Japonia 2018-02-15
2 Indie 2017-06-08
3 Stany Zjednoczone 2019-06-10
W pliku klasy.txt podano klasy jednostek, jakie gracz może budować. Każda klasa jest opisana przez następujące parametry:
- Nazwę klasy jednostek (nazwa),
- Siłę (sila), strzał (strzal) oraz magię (magia) – trzy atrybuty określające zdolności jednostek tej klasy,
- Szybkość (szybkosc) – prędkość poruszania się jednostek tej klasy.
Przykład pliku klasy.txt:
nazwa sila strzal magia szybkosc
zwiadowca 8 5 0 25
lucznik 5 10 0 12
mag ognia 5 0 15 10
paladyn 20 0 5 20
W pliku jednostki.txt podano stan planszy, czyli wszystkie jednostki zbudowane przez graczy. Jeden wiersz pliku opisuje jedną jednostkę za pomocą następujących informacji:
- Unikatowy identyfikator będący liczbą naturalną (id_jednostki),
- Identyfikator gracza, do którego należy jednostka (id_gracza),
- Nazwę klasy, do której należy jednostka (nazwa),
- Miejsce jednostki na planszy – jej współrzędne x i y (lok_x, lok_y).
Przykład pliku jednostki.txt:
id_jednostki id_gracza nazwa lok_x lok_y
1 153 piechur 166 30
2 60 topornik 36 44
3 88 drwal 134 88
4 182 kusznik 3 196
Korzystając z dostępnych narzędzi informatycznych, wykonaj poniższe polecenia. Odpowiedzi zapisz w pliku wyniki6.txt, a każdy podpunkt poprzedź odpowiadającym mu numerem zadania.
Zadanie 6.1 (0–2)
Podaj 5 krajów, z których najwięcej graczy dołączyło do gry w 2018 roku. Dla każdego z tych krajów podaj liczbę graczy, którzy dołączyli w 2018 roku.
Zadanie 6.2 (0–2)
Podaj sumę wartości pola strzał (strzal) dla każdej klasy jednostek, które mają „elf” jako część nazwy.
Zadanie 6.3 (0–2)
Podaj numery graczy, którzy nie mają artylerzystów (jednostek o nazwie artylerzysta). Numery podaj w porządku rosnącym.
Zadanie 6.4 (0–2)
Jeden krok jednostki to przejście o 1 w dowolnym z czterech kierunków (północ, południe, wschód lub zachód). W jednej turze jednostka może wykonać co najwyżej tyle kroków, ile wynosi jej szybkość. Innymi słowy jednostka w ciągu jednej tury może przemieścić się z punktu (x,y) do punktu (x1,y1), jeśli |x – x1| + |y – y1| ≤ szybkosc. Tytułowa Kamienna Brama znajduje się w miejscu (100,100). Wyszukaj jednostki, które mogą w jednej turze dojść do Bramy, i podziel je na poszczególne klasy. Utwórz zestawienie, które dla każdej klasy poda jej nazwę oraz liczbę jednostek z tej klasy mogących w jednej turze osiągnąć Bramę.
Zadanie 6.5 (0–4)
Jeśli w pewnej lokalizacji znajdują się jednostki więcej niż jednego gracza, toczy się tam (jedna) bitwa. Oblicz: a) Ile bitew ma miejsce na planszy, b) W ilu bitwach biorą udział gracze z Polski.
Uwaga: zauważ, że w jednej lokalizacji może się znajdować więcej niż jedna jednostka tego samego gracza.