sheesh, czy to naprawdę czwarty? Dla wszystkich starych graczy podstawowe wyzwanie jest takie samo, ale używamy Javy zamiast niestandardowego języka. Oto trzy ostatnie wyzwania CodeBot , jeśli jesteś zainteresowany.
Celem CodeBots jest uczynienie twojego bota tak wirusowym, jak to możliwe . Każdy bot nosi flagę i musisz upewnić się, że twoja flaga jest wszędzie .
API
Boty będą postępować zgodnie ze znormalizowanym „protokołem”, a boty będą postępowały synchronicznie przez następujące kroki:
IPAddress selectMessageRecipient()
pozwala botowi wybrać, do kogo chce wysłać „przyjazną” wiadomość.Message sendMessage()
pozwala botowi wybrać treść wiadomości, którą wyśle.processMessage(IPAddress, Message)
jest wywoływany dla każdej wiadomości, którą otrzymuje bot.FunctionType selectFunctionToBlock()
blokuje zastąpienie funkcji dla bieżącej tury. Zobacz krok 7.IPAddress selectAttackTarget()
pozwala botowi wybrać, kogo chce DDOS. Atak DDOS kończy się powodzeniem, jeśli bot jest atakowany jednocześnie przez 3 boty. Jeśli atak się powiedzie, każdy z atakujących może wykonać krok 6 i 7.readData(ReadonlyBot)
pozwala botowi na odczyt danych przechowywanych na podatnym bocie.FunctionType selectFunctionToReplace()
jest sednem tego wyzwania . Możesz wybrać 1 funkcję (spośród 8 wymienionych tutaj), aby skopiować z bota do jego bota. Następnie twoja funkcja zostanie wywołana zamiast ich . Jeśli wiele botów wybierze tę samą funkcję, losowa zakończy się sukcesem.String getFlag()
jest wywoływany na końcu gry i powinien zwrócić ciąg znaków unikalny dla twojego przesłania. Twoja funkcja powinna zawsze zwracać ten sam ciąg. Zgłoszenie z największą liczbą flag na końcu gry wygrywa.
Przechowywanie
Masz 3 formy przechowywania, książkę adresową , dziennik i zmienne . Te formy przechowywania są lokalne dla bota, na którym działa funkcja (więc jeśli twoja funkcja zostanie skopiowana, zawartość każdego z tych obiektów będzie inna). Wszystkie te obiekty można ręcznie modyfikować lub usuwać. Aby zdobyć te obiekty, masz w swojej klasie gettera (np getLog()
.).
AddressBook przechowuje listę IPaddress , każdy z AddressType , który pozwala sklasyfikować różne rodzaje adresów. Książka adresowa zawsze będzie zawierała co najmniej 1 adres (jeśli zostanie wyczyszczony, zostanie dodany losowy). Czyszczenie książki adresowej w celu uzyskania wielu adresów IP jest niedozwolone.
Log przechowuje listę wszystkich podejmowanych działań, a także dane na temat działania. Zawiera również historię wszystkich udanych ataków (choć nie wiesz, które funkcje zastąpiły)
Obiekt Variables umożliwia przechowywanie zmiennych łańcuchowych dołączonych do nazwy łańcucha. Na początku gry Zmienne będą zawierać jedną zmienną, ID
która zawiera losowo generowany identyfikator, który jest unikalny dla twojego typu bota.
Masz również inne funkcje dostępu:
int getTurnNumber()
zwraca liczbę całkowitą z bieżącą turąbool functionsMatch(ReadonlyBot, FunctionType)
sprawdza, czy funkcja ReadonlyBot pasuje do twojejIPAddress personalAddress()
zwraca adres IP
Jak wdrożyć
- Możesz uzyskać kod z Github
- Dodaj bota do
\bots
folderu, a następnie dodaj odwołanie do bota wcontroller\CodeBotFactory.java
- Twój bot musi się rozszerzyć
codebots.bot.CodeBot
lubcodebots.bots.DefaultCodeBot
- Potrzebujesz Java 8, jeśli chcesz uruchomić kontroler.
- Możesz uruchomić kod (zakładając, że jesteś w
/src
folderze), używającjavac codebots\*.java
do kompilacji, a następniejava codebots.Main
do uruchomienia. - Możesz nie mieć żadnych niestałych zmiennych składowych w swojej klasie
- Odbicie nie jest dozwolone.
- Formy komunikacji między botami (tego samego lub różnych typów) poza metodami wymienionymi powyżej są niedozwolone.
- Głupie i / lub samobójcze boty są dozwolone, ale wszystkie boty powinny funkcjonalnie różnić się od istniejących wpisów.
- Jeśli chcesz mieć losowość w bocie, użyj
getRandom()
- Staraj się, aby Twój kod był wydajny. Sporo czasu poświęciłem profilowaniu i szybszemu kontrolerowi.
Wyniki
105,2501 Expelliarmus!
104,5803 Pomagam!
104,2746 Kim jestem?
103.8529 Dumb Bot
103.2028 Zamiennik
102.7045 Chaos
102.4046 Hermit Bot
102.2849 Swarmer
100.5598 Losowy bot cię kocha
99,966 Zaufanie!
99.0185 codebots.bots.DefaultCodeBot
91.2942 codebots.bots.MarkedBot
91.1423 Tylko twój przyjazny robot dostarczający pocztę.
89,4645 null