4-osobowa rozgrywka
Opis
Jakoś znalazłeś się w czterokierunkowej walce. Załadowana broń spoczywa w twoich rękach, a niektóre granaty są zaczepione o pasek.
Celem jest zdobycie jak największego zdrowia po zakończeniu pojedynku. Występuje koniec, gdy co najwyżej jedna osoba ma pozytywny poziom zdrowia.
Każdy gracz ma 5
zdrowie i umiera, gdy jego zdrowie spadnie do / poniżej 0
. Tura, w której umiera gracz, jest ostatnią turą, w której gracz może otrzymać obrażenia.
Jeśli na końcu meczu jest gracz na żywo, ten gracz wygrywa. W przeciwnym razie wygrywa gracz o najmniej ujemnym zdrowiu.
działania
Strzelaj : zastrzel kogoś.
2
obrażenia, jeśli zastrzelisz żywego wroga0
obrażenia, jeśli strzelasz do martwego wrogahealth_at_start_of_turn+2
obrażenia, jeśli zastrzelisz siebie. (Zauważ, że to pozostawi Cię w stanie NAJBARDZIEJ-2
zdrowia).- Jeśli jeden wróg strzela do ciebie w tej samej turze, w której strzelasz, zakończysz dystans z -4 pkt. Zdrowia (nadal otrzymujesz obrażenia od innych graczy w kolejce, w której się zabijesz).
- Twoje działanie w następnej turze zostanie zignorowane (i będzie to miało miejsce
Nothing
).
Unik : Postaraj się uniknąć strzału jednego przeciwnika.
Przygotuj : Odczep granat i przygotuj się do jego rzucenia.
- Masz tylko trzy tury, aby go rzucić, zanim zostaniesz wysadzony w powietrze (
6
obrażenia zadane sobie,3
obrażenia wszystkich żywych wrogów) - Umieranie z nie rzuconym granatem jest równoznaczne z nie rzucaniem granatu przez trzy tury.
- Masz tylko trzy tury, aby go rzucić, zanim zostaniesz wysadzony w powietrze (
Rzuć : rzuć granatem w stronę kogoś i miej nadzieję na najlepsze.
- Cel otrzymuje
8
obrażenia, jeśli żyje - Wszyscy inni (łącznie z tobą) otrzymują
3
obrażenia, jeśli żyją
- Cel otrzymuje
Nic : stój bezczynnie przez kolej i obserwuj, jak wszyscy umierają.
Wejście
Twój program otrzyma następujące informacje:
- Zdrowie każdego gracza
Lista działań podjętych przez tego gracza od początku pojedynku Poniżej znajduje się format informacji przekazywanych na gracza:
[Health],[Action 1],[Action 2],[Action 3],...
Działania będą podawane w formacie określonym w sekcji Wyjście .
Otrzymasz 4 takie ciągi znaków, oddzielone spacją i przekazane jako pojedynczy argument. Kolejność tych ciągów jest następująca:
[Player Info] [Opponent 1 Info] [Opponent 2 Info] [Opponent 3 Info]
Ciągi znaków są przekazywane jako drugi argument. Pierwszy argument zawiera liczbę całkowitą, która jednoznacznie identyfikuje wprowadzany odstęp. Gwarantowane odległości między tym samym zestawem graczy nie są równoczesne. Jednak wiele standoffs będzie występować w tym samym czasie.
Na przykład:
$./Player.bash 5 "3,S2,N 5,P,N 3,S0,N -2,S3,N"
Obecnie gracz i drugi przeciwnik mają 3 zdrowie, pierwszy przeciwnik ma 5 zdrowia, a trzeci przeciwnik -2 zdrowie i nie żyje.
W pierwszej turze:
- Gracz 1 zastrzelił wroga 2
- Wróg 1 przygotował granat
- Gracz Enemy 2 strzał
- Wróg 3 zastrzelił się
W drugiej turze:
- Wszyscy gracze nic nie zrobili. (Gracz i wróg 2 nie mogą nic zrobić, ponieważ strzelili w poprzedniej turze. Wróg 3 nie żyje: zrobi to
Nothing
do końca dystansu.)
Drugi argument na początku jest patowa: 5 5 5 5
.
Wynik
Polecenie powinno zostać wypisane w poniższym formacie. Niepoprawne wyjście jest interpretowane jako „Nic”. Polecenie wymagające docelowego powinno nastąpić całkowitą ( 0-3
z 0
reprezentujący odtwarzacz i 1-3
stanowiących wrogów 1-3).
S[target]
: Strzela [cel].D[target]
: Próbuje uniknąć [cel].P
: Przygotuj granat.T[target]
: Rzuć granat w [cel].N
: Nic nie robić.
Komenda że potrzebuje cel, ale jest podawany cel nie między 0
i 3
czy nie karmiono cel zakładany w całości będzie kierować 0
(gracza).
Punktacja
Na koniec każdego pojedynku gracze otrzymują wynik obliczony według następującego wzoru:
35 + health at end of standoff
W przypadku, gdy gracz kończy impas z negatywnym dla zdrowia, to będzie otrzymać wynik poniżej 35 . Następujące punkty są również nagradzane jako bonus:
- Najwięcej zdrowia: +4 punkty
- Drugie pod względem zdrowia: +2 punkty
- Trzecie miejsce pod względem zdrowia: +1 punkt.
W przypadku remisu przyznawana jest niższa premia (jeśli dwie osoby wiążą się z największą ilością zdrowia, obie mają przyznane +2; jeśli są 3 osoby z największą ilością zdrowia, +1, a jeśli wszyscy kończą się równo, +0).
Ostateczny wynik ustala się, obliczając średnią wszystkich indywidualnych wyników.
Zasady / Szczegóły
- Kolejność wydarzeń w ramach tury jest następująca:
- Wszyscy gracze wykonują swoje działania.
- Gracze, którzy mają 0 lub mniej zdrowia, giną.
- Nie rzucone granaty, które muszą eksplodować, wybuchną (gracze, którzy właśnie zginęli, nadal są ranni, ponieważ to jest kolej na ich śmierć).
- Brak współpracy między wpisami.
- Trzy * odstępy wystąpią między każdym zestawem 4 graczy. (Kolejność graczy może się różnić przy każdym pojedynku).
- Wpisy zajmujące nadmierną ilość miejsca na dysku zostaną zdyskwalifikowane.
- Czytanie lub modyfikowanie plików innych niż Twój wpis zdyskwalifikuje Twój wpis.
- Ciężarówka, prowadzona przez pijaka, przejedzie po wszystkich żyjących graczach po
50th
turze, jeśli nie dojdzie jeszcze do końca tej50th
tury.- Ta ciężarówka zadaje 20 obrażeń wszystkim żyjącym graczom.
- Występy zdarzają się szybko. Programy są odcinane po 1 sekundzie.
- Twój program będzie wywoływany co turę, nawet po twojej śmierci.
- Możesz odczytywać lub zapisywać pliki tylko w swoim katalogu (jeśli twój wpis nazywa się JohnDoe, możesz zapisywać pliki w katalogu odtwarzacze / JohnDoe /); jednak NIE będzie to bieżący katalog podczas działania skryptu.
- Awantury odbędą się na komputerze z systemem Arch Linux (wydanie 2014.08.01).
Kontroler jest dostępny na GitHub .
W swoim poście umieść następujące informacje:
- Nazwa twojego bota
- Polecenie powłoki do uruchomienia bota (np.
java Doe.java
) Dane wejściowe będą przekazywane przez wiersz polecenia jako pojedynczy argument (java Doe.java 5 "-2,S0 -2,S1 -2,S2 5,N"
) - Kod twojego bota
- Jak należy skompilować bota (jeśli dotyczy)
- Język (i wersja, jeśli dotyczy, szczególnie dla Pythona)
* Kontroler trwa zbyt długo przez sześć.
Tablica wyników
Observer 43.280570409982
MuhammadAli 43.134861217214
Osama 43.031983702572
LateBoomer 42.560275019099
SimpleShooter 42.412885154062
LessSimpleShooter 42.3772
Neo 42.3738
Scared 42.3678
Richochet 42.3263
Equivocator 42.2833
TwentyFourthsAndAHalfCentury 42.2640
Darwin 42.1584
HanSolo 42.1025
Coward 42.0458
ManipulativeBastard 41.8948
Sadist 41.7232
Aggressor 41.7058
CourageTheDog 41.5629
Grenadier 40.9889
Bomberman 40.8840
Spock 40.8713
Sniper 40.6346
DONTNUKEMEBRO 39.8151
PriorityTargets 39.6126
Hippolyta 39.2480
EmoCowboy 39.2069
Zaenille 39.1971
AntiGrenadier 39.1919
PoliticallyCorrectGunman 39.1689
InputAnalyzer 39.1517
Rule0Bot 39.1000
BiasedOne 39.0664
Pacifist 39.0481
StraightShooter 39.0292
Ninja 38.7801
MAD 38.2543
Monkey 37.7089
Label1Goto1 36.2131
Generated: 2014/08/22 03:56:13.470264860 UTC
Logi: na GitHub