W tym wyzwaniu zamierzasz stworzyć Drużynę, której celem jest pokonanie wszystkich innych członków społeczności w bitwie.
Drużyna (drużyna) składa się z 3 postaci . Każda postać porusza się niezależnie od reszty swojego zespołu, ale będzie musiała współpracować podczas walki z wrogiem. Zespoły będą stawały naprzeciw siebie w rotacyjny sposób. Wygrane są warte 3 punkty, remisy są warte 1 punkt, a straty są warte 0 punktów.
Postacie mają zdolności. Wybór umiejętności twoich postaci jest jedną z najważniejszych (i zabawnych) części tego KotH . Wszystkie są silne i mogą zniszczyć wroga.
Postacie mają Punkty Zdrowia (HP), a kiedy ich HP trafi (lub spadnie poniżej) 0, umierają . Jeśli wszystkie postacie w drużynie przeciwnika zginą, wygrywasz!
Postacie mają Many. Większość akcji wymaga wykonania Many , a jeśli nie masz dość, ta akcja nie jest dla ciebie dostępna.
Postacie mają opóźnienie skrętu . Określa liczbę tyknięć między każdą turą (zaczyna się od 100). Niższe jest lepsze.
Postacie mają atrybuty . Każda postać ma podstawę 5 w każdym atrybucie, a ty otrzymujesz 20 dodatkowych punktów atrybutów do podziału. Po przypisaniu punktów atrybutów, twój główny atrybut jest ustawiony jako najwyższy atrybut.
Dostępne atrybuty to:
- Siła: Daje 10 maksymalnych HP i 0,5 HP na turę
- Inteligencja: Daje 7 Max Many i .1 Many na turę
- Zwinność: zmniejsza opóźnienie skrętu o 1
Zakresy ruchu, wzroku i zasięgu są następujące (wyśrodkowane wokół 0). Niektóre zakresy są kardynalne , co oznacza, że mogą iść tylko bezpośrednio w górę, w lewo, w prawo lub w dół.
444
43334
4322234
432111234
432101234
432111234
4322234
43334
444
Postacie mają początkową wizję 2. Wizja między graczami tej samej społeczności jest wspólna.
Jak grać
Budowa
Gracze zbudują swoją społeczność. Musisz wykonać następujące kroki :
Daj punkty atrybutu każdej postaci . Każda postać zaczyna od 5 w każdej ze statystyk, z dodatkowymi 20 do rozdzielenia między 3.
Daj umiejętności każdej postaci . Każda postać zaczyna od 4 miejsc na zdolności, a zdolności domyślnie zajmują 1 miejsce na umiejętność. Niektóre umiejętności są powtarzalne i mogą być wielokrotnie przekazywane postaci. Używanie zestawu umiejętności innego przedłożenia bez zgody właściciela jest niedozwolone.
Napisz kod dla swoich botów. Kod musi być w Javie i będzie używany do walki (następny krok)
działania
Wszystkie postacie zaczynają się od 3 standardowych akcji:
- Krok : Poruszaj swoją postacią w zakresie 1
- Plasterek : Zaatakuj wroga dla Atrybutu Podstawowego w zasięgu 1
- Uśmiech : nic nie rób
W turze postaci należy wybrać akcję do wykonania. Akcje mogą mieć koszt many i mogą mieć czas odnowienia, który określa liczbę tur, które musisz poczekać przed ponownym wykonaniem tej akcji.
Zdolności
Każda postać ma 4 miejsca na umiejętności. Jeśli umiejętność jest napisana kursywą, jest to akcja.
Umiejętności
Nazwa Opis Czas odnowienia Many Mobilność Mrugnięcie Przenieś do kwadratu, zasięg 4 2 2 Zamień Zamień miejscami Zamień cel 5 5 Teleportuj Przenieś gdziekolwiek 20 5 Dash Zwiększ zakres kroku o 1. Powtarzalne Mobile Step może poruszać się w dowolnym z 8 kierunków Napadający Szybki plaster dwa razy 3 0 Splot Pokrój wszystkich widocznych wrogów raz 15 10 Absorbuj każdy plasterek kradnie 1 główny atrybut twojego celu. Trwa 20 tur Rozszczepienie Każdy plasterek zadaje 1/2 obrażeń sąsiednim wrogom Krytyczny Dodaje 30% szansy, że Plasterek zada 200% obrażeń. Powtarzalne Uczta Każdy plasterek zwiększa twoje HP o 3. Powtarzalne Elastyczna puszka kroi w dowolnym z 8 kierunków Kradzież many Kromka kradnie 2 punkty many. Powtarzalne Odruchowy plasterek po pokrojeniu 0 3 Dystansowy Dodaje 1 do zasięgu plastra Zamach Każdy kolejny plasterek tego samego celu zadaje 3 obrażenia więcej niż ostatni Statusy Rozproszenie Usuwa wszystkie statusy z celu. Zasięg 2. 20 10 Pojedynek Zamraża ciebie i twój cel, dopóki jedno z was nie umrze. Zasięg 1 25 0 Nokaut Ty i cel jesteście ogłuszeni na następne 1000 tyknięć 10 10 Meteoryt Wszyscy wrogowie są ogłuszeni na następne 100 tyknięć 25 10 Smycz Cel zostaje zamrożony na 2 kolejne tury 4 6 Trucizna Zatruwa wroga za 1 PŻ na 5 tur 5 0 Cisza Cel jest wyciszony na 5 tur 5 7 Powolny Cel jest spowolniony o 40 tyknięć na kolejne 3 tury 10 5 Ogłuszenie Cel jest ogłuszony na kolejne 300 tyknięć 10 10 Zimno Wszystkie pozostałe postacie w zasięgu 2 są spowolnione o 10 tyknięć Odporność Nie można zastosować żadnego statusu Obronny Force Field Blokuj kolejne 5 źródeł obrażeń. Nie kumuluje się 15 5 Duch Na turę wszystkie obrażenia leczą się 10 10 Leczenie Uzdrawiaj cel za 20 HP 10 3 Przywróć Wszystkie jednostki zostają przywrócone do pełnego zdrowia 20 40 Tarcza Nie możesz zostać pocięty do następnej tury 3 0 Unikanie 25% szans, że plasterek cię nie trafi. Powtarzalne Filar można pokroić tylko raz na turę Wskrzeszony Po zabiciu powróć do życia z pełnym HP (i bez statusów) 0 40 Kolce Po zadaniu obrażeń zadaj połowę obrażeń z powrotem Wizja Zespół peleryny staje się niewidzialny na 5 tur 20 20 Ukryj Jesteś niewidoczny na 5 tur 4 7 Faza Stań się niewidzialny na 1 turę 0 3 Tor Tor nie może stać się niewidzialny i otrzymuje 10% więcej obrażeń. Trwa 10 tur. 5 5 Ciemność Zasięg widzenia wroga zmniejszony o 1. Stosy, ale nie może spaść poniżej 1. Zasięg widzenia zwiększony o 2. Powtarzalne Niewidzialny Jesteś niewidoczny, jeśli zaczynasz swoją turę od pola widzenia wroga Prawdziwy widok Ujawnia wszystkie ukryte jednostki w zasięgu 2 na początku tury Uszkodzić Drenaż Zadaje 5 obrażeń Celowi i leczy się za 5 PW, gdy pozostają one w zasięgu 1 10 Błyskawica Zadaj 15 obrażeń wszystkim wrogom 20 10 K / O Zabija cel, jeśli cel jest poniżej 20% HP 20 0 Pułapka Umieść niewidoczną pułapkę. Pułapka zadaje 15 obrażeń po nadepnięciu. Półki na książki. 10 2 Zap Zadaj 30 obrażeń celowi 30 5 Statyczne Zadaje 5 obrażeń w każdej turze wszystkim wrogom w zasięgu 1. Powtarzalne Statystyki Wilkołak Dodaj 10 do wszystkich statystyk na 5 tur 30 30 Wzmocnij Podwój swoją pulę HP. Powtarzalne Sprytne akcje mają o 20% krótszy czas odnowienia. Powtarzalne Koncentruje się Zwiększa wskaźnik regeneracji many o Int / 10. Powtarzalne Regeneruj Zwiększa wskaźnik regeneracji o siłę / 2. Powtarzalne Inteligentne akcje kosztują 2 punkty many mniej. Powtarzalne Silny Zyskujesz 10 punktów atrybutów. Powtarzalne Słaby Tracisz 15 punktów atrybutów. Zyskujesz 2 miejsca na umiejętności (zajmuje jeden z nich) Inny Niedźwiedź Może samodzielnie przywołać niedźwiedzia, który ma 5 w każdej ze statystyk 8 10 Klon Klon. Zajmuje dwa miejsca na umiejętności. 100 100 Kradzież Zamień tę akcję na ostatnią akcję Użyty cel wroga. Trwa 10 obrotów 5 0 Ściana Stwórz nieprzejezdną ścianę na docelowym pustym kwadracie, zasięg 6 10 10
Statusy:
- Ogłuszenie pozwala twojej postaci wykonać tylko akcję Uśmiech i trwa X tyknięć .
- Zamrożenie zapobiega ruchowi twojej postaci i trwa X tur.
- Cisza uniemożliwia twojej postaci wykonywanie innych czynności oprócz Uśmiechu, Kroku lub Kromki i trwa X tur.
- Trucizna uszkadza twoją postać za X obrażeń w turach Y. Jeśli zastosujesz kolejną truciznę, obrażenia sumują się, a czas trwania zostaje odświeżony.
- Powolne dodaje X do liczby tyknięć między twoimi turami. Nie wpływa to na twoją nadchodzącą turę, tylko zwroty później.
- Niewidoczny sprawia, że przeciwnik nie może cię zobaczyć ani uszkodzić. Jeśli wykonasz dowolną czynność oprócz Krok lub Uśmiech, zostanie ona usunięta. Jeśli twój przeciwnik ma zdolność, która daje mu wizję ciebie, niewidzialność jest usuwana.
Wszystkie statusy (oprócz Trucizny) działają niezależnie od siebie.
Notatki dodatkowe:
- Jeśli istnieje remis dla atrybutu podstawowego, jest on rozwiązywany jako STR> AGI> INT.
- Grasz na siatce 10x10. Zespoły zostaną umieszczone po przeciwnych stronach.
- Procenty stosu mnożą się, z wyjątkiem Clever.
Zasady przesyłania
Musisz zaimplementować 2 funkcje:
// Create *exactly* 3 Character templates. You must return the same templates every time
public List<CharacterTemplate> createCharacters();
// Choose an action for a character. If the action requires a target or location, it must be set.
public ReadonlyAction choose(Set<ReadonlyAction> actions, ReadonlyCharacter character);
Będziesz także mieć dostęp do trzech zmiennych (zmiennych składowych):
Set<ReadonlyCharacter> team;
Set<EnemyCharacter> enemies;
Map<Point2D, EnemyCharacter> visibleEnemies;
Otóż to. Poniżej znajdziesz pełny interfejs API, w kolejności alfabetycznej:
class Ability and ReadonlyAbility
int getNumSlots() returns the number of slots it takes up
boolean repeatable() returns true if the ability can be repeated
String name()
class Action and ReadonlyAction
Set<Point2D> availableLocations()
Set<ReadonlyCharacter> availableTargets()
boolean basicAction() returns true if the action is Smile, Step, or Slice
boolean breaksInvisibiliby()
int getCooldown() returns the cooldown cost (not the cooldown remaining)
int getManaCost()
String getName()
int getRemainingCooldown()
boolean isAvailable() returns true if the action can be performed
boolean movementAction() returns true if the action is prevented when Frozen
boolean needsLocation()
boolean needsTarget()
void setTarget(ReadonlyCharacter target)
void setLocation(Point2D location)
class CharacterTemplate
void addAbility(Ability)
boolean canAddAbility(Ability)
List<Ability> currentAbilities()
Map<Stat, Integer> currentAttributes()
int getRemainingPoints() returns the total number of ability points you have left to assign
int getRemainingSlots() returns the total number of slots you have to assign
int getStat(Stat stat)
boolean isValid() returns true if your character template is complete and valid
class Point2D
getX()
getY()
class Range
boolean isCardinal() returns true if the range only extends in the 4 cardinal directions
int getRange() returns the distance of the range
class ReadonlyCharacter and EnemyCharacter
Class characterClass()
int cleverness()
List<ReadonlyAbility> getAbilities()
Point2D getLocation() Not on EnemyCharacter
double getHealth()
double getMana()
int getMaxHealth()
int getMaxMana()
Range getSightRange()
Range getSliceRange()
int getStat(Stat stat)
Range getStepRange()
ReadonlyAction getLastAction()
boolean isFrozen()
boolean isStunned()
boolean isPoisoned()
int getPoisonAmount()
boolean isSilenced()
boolean isInvisible()
boolean isDead()
Stat primaryStat()
int smartness()
enum Stat
INT, STR, AGI
Powyższe zawiera wszystkie funkcje, których możesz potrzebować do przesłania. Odbicie nie jest dozwolone. Jeśli przesłanie jest nieważne z jakiegokolwiek powodu, usuń je lub dodaj „Nieprawidłowy” do nagłówka. Twoje zgłoszenie nie powinno zawierać deklaracji pakietu. Twoje zgłoszenie powinno znajdować się w pierwszym wieloliniowym bloku kodu, a pierwszy wiersz musi mieć nazwę pliku.
Jak uruchomić projekt:
Istnieje kilka sposobów:
- Pobierz plik JAR i uruchom
java -jar Fellowship.jar
. Jeśli chcesz pobrać inne zgłoszenia, przekaż-q 99744
.java
musi wskazywać na JDK, a nie JRE. - Sklonować repo git i uruchom
gradle run
. Musisz mieć zainstalowanego gradla, a jeśli chcesz przekazać argumenty, użyj-PappArgs="['arg1', 'args2']"
- Sklonować repo git i skompilować go samodzielnie. Potrzebne będą następujące biblioteki:
org.eclipse.collections:eclipse-collections-api:8.0.0
,org.eclipse.collections:eclipse-collections:8.0.0
,com.beust:jcommander:1.48
,com.google.code.gson:gson:2.7
,org.jsoup:jsoup:1.9.2
Jeśli sklonujesz, musisz użyć --recursive
flagi, a kiedy pobierasz aktualizacje, dołącz--recurse-submodules
Do każdego z powyższych, klasa musi przejść do submissions/java
folderu. Jeśli używasz gradla lub kompilujesz go samodzielnie, możesz umieścić klasę w samym projekcie. Musisz odkomentować niektóre linie w głównej funkcji i zaktualizować je, aby wskazywały na twoją klasę.
Tablica wyników:
+------+-------------------+-------+
| Rank | Name | Score |
+------+-------------------+-------+
| 1 | TheWalkingDead | 738.0 |
| 2 | RogueSquad | 686.0 |
| 3 | Spiky | 641.0 |
| 4 | Invulnerables | 609.0 |
| 5 | Noob | 581.0 |
| 6 | Railbender | 561.0 |
| 7 | Vampire | 524.0 |
| 8 | LongSword | 508.0 |
| 9 | SniperSquad | 456.0 |
| 10 | BearCavalry | 430.0 |
| 11 | StaticCloud | 429.0 |
| 12 | PlayerWerewolf | 388.0 |
| 13 | LongSwordv2 | 347.0 |
| 14 | Derailer | 304.0 |
| 15 | Sorcerer | 266.0 |
| 16 | CowardlySniperMk2 | 262.0 |
| 17 | TemplatePlayer | 59.0 |
+------+-------------------+-------+
Jeśli masz jakieś pytania lub potrzebujesz pomocy, skomentuj poniżej lub dołącz do czatu ! Powodzenia i miłej zabawy
Deal 15 damage to all enemies
, ale błyskawica nie ma wpływu na niewidzialnych wrogów. Czy to błąd? W przeciwnym razie niewidzialność wydaje mi się dość silna ...