Zasady gry

Transkrypt

Zasady gry
Gra "Miner's Arena"
Zapraszam do kolejnej gry w ramach przedmiotu Eksploracja danych. Celem gry jest opracowanie
algorytmu zachowania się górnika-wojownika na arenie, na której leje się krew a każdy przeciwnik
stanowi zagadkę. Poniżej zamieszczam opis zasad gry i instrukcję przygotowania swojego kupca.
Wprowadzenie
Na arenie spotykają się górnicy, aby uprawiać swój stary krwawy sport - walkę na oskardy. Każda walka
zawsze dotyczy dwóch górników. Walka może mieć wiele rund i kończy się śmiercią lub ucieczką
jednego z zawodników. W każdej rundzie walki górnik może zdecydować się atakować, zrobić unik lub
uciekać (ucieczka jest możliwa dopiero od drugiej rundy walki, próba ucieczki w pierwszej rundzie jest
karana wyszydzeniem i utratą -20 punktów siły). Każdy górnik wstępuje na arenę z siłą +100 punktów.
W zależności od decyzji podjętej przez każdego zawodnika wynik rundy jest następujący:
obaj górnicy atakują: każdy traci -10 pkt siły
obaj górnicy wykonują unik: każdy traci -2 pkt siły
obaj górnicy uciekają: nikt niczego nie traci
górnik A atakuje, górnik B robi unik: górnik A traci -2 pkt siły a górnik B traci -4 pkt siły
górnik A atakuje, górnik B ucieka: górnik A zyskuje +2 pkt siły a górnik B traci -4 pkt siły
górnik A robi unik, górnik B ucieka: górnik A zyskuje +4 pkt siły a górnik B nie traci niczego
Jeśli górnikowi uda się zabić przeciwnika, to uzyskuje dodatkowe +10 punktów siły.
Walka odbywa się na arenie, która stanowi także środowisko gry. W momencie przystąpienia do walki
górnik poznaje swojego przeciwnika (imię), jego aktualną siłę, oraz historię wszystkich wcześniejszych
walk przeciwnika. W ramach historii wiadomo, jakie decyzje podejmował przeciwnik w zależności od
siły swojego oponenta (przykładowo, zapis w historii gracza A <Fight.ATTACK, 40> oznacza, że w
momencie gdy jakiś oponent miał siłę 40 punktów to w trakcie walki gracz A zdecydował się atakować.
Celem gry jest opracowanie strategii, która umożliwi górnikowi przeżycie na arenie. W każdej iteracji
górnik spotka się z losowo wybranym innym górnikiem. Gra trwa tak długo, aż na arenie pozostanie
tylko jeden górnik.
Przygotowanie górnika
Macie Państwo do dyspozycji klasę edu.put.ed.Miner która może posłużyć za szkielet do
przygotowania swojej własnej klasy. Każdy górnik musi implementować interfejs edu.put.ed.Fight
zawierający jedną metodę doFight(String, int, int,
List<Map.Entry<Integer,Integer>>). Jest to metoda, która jest uruchamiana każdorazowo w
trakcie jednej rundy walki. W momencie jej uruchomienia środowisko (czyli arena, na której trwają
igrzyska) przekazuje górnikowi nazwę przeciwnika z którym ma walczyć i siłę tego przeciwnika.
Dodatkowo, górnik dowiaduje się o historii wcześniejszych walk przeciwnika. Górnik może też wywołać
metodę getStrength() żeby sprawdzić swoją bieżącą siłę. Domyślnym zachowaniem się górnika jest
z prawdopodobieństwem 50% atakować lub uchylać się w pierszej rundzie walki, począwszy od drugiej
rundy walki górnik z prawdopodobieństwem 10% ucieknie (niezależnie od siły i decyzji przeciwnika).
1. Posłuż się przykładową klasąedu.put.ed.Morzy żeby zobaczyć, jak powinien wyglądać Twój
górnik (górnik Morzy stosuje strategię wykorzystującą prostą analizę historii działań
przeciwnika).
2. Koniecznie nazwij swoją klasę zgodnie z numerem indeksu (tak samo musi się nazywać plik).
Przykładowo, jeśli Twój numer indeksu to 90100, to Twój plik musi nosić nazwę
INF90100.java a Twoja klasa musi mieć postać
package edu.put.ed;
public class INF90100 extends Miner implements Fight {
public int doFight(String name, int round, int strength,
1
List<Map.Entry<Integer,Integer>> history){
// tutaj umiesc logike walki swojego górnika
}
}
1. Rozpakuj archiwum minersarena.zip pobrane ze strony przedmiotu do dowolnego katalogu.
W twoim katalogu pojawi się podkatalog edu/put/ed/ zawierający przykładowe pliki oraz
archiwum JAR. Umieść swój plik z definicją własneog kupca w katalogu edu/put/ed/.
2. Zapoznaj się z komentarzami w plikach źródłowych.
3. Możesz się posłużyć klasą edu.put.ed.Test do sprawdzenia, jak zachowuje się Twój górnik.
W przykładowym kodzie gra 3 domyślnych górników (podejmujących losowe decyzje bez
względu na zachowanie przeciwnika) oraz jeden górnik Morzy i jeden górnik Berserker (zawsze
atakuje). Jeśli chcesz, możesz utworzyć wielu górników o różnych strategiach i ich testować.
Pamiętaj jednak, że ostatecznie musisz zaproponować tylko jednego górnika do turnieju.
Zasady turnieju
Turniej będzie zorganizowany na zasadach określonych przez klasę edu.put.ed.MinersArena. W
przerwie między laboratoriami w dniu 12.06.2013 uruchomimy publicznie arenę. Dodatkowo, w walce
weźmie udział pewna liczba domyślnych górników (walczących losowo) dobrana w taki sposób, aby ci
kupcy stanowili 10% populacji.
Swoje rozwiązania proszę przesyłać w nieprzekraczalnym terminie do poniedziałku, 10 czerwca,
godz. 22:00. Żadne zgłoszenia po tym terminie nie będą rozpatrywane. Swoje pliki źródłowe
INFxxxxx.java proszę przesyłać bezpośrednio na adres [email protected]
Życzę wszystkim dobrej zabawy!
2

Podobne dokumenty