Jest to wyzwanie króla wzgórza dla kropek i pudeł (zwanych również Pen the Pig). Gra jest prosta, w swojej turze po prostu narysuj linię na pustym ogrodzeniu. Za każdym razem, gdy wypełnisz kwadrat, dostajesz punkt. Ponadto, ponieważ gramy zgodnie z zasadami mistrzostw , jeśli wykonasz przynajmniej jedno pole w swojej turze, otrzymasz dodatkową turę. Jest to okrągły turniej robin, w którym każdy bot gra ze sobą dwa razy 12 razy na siatce 9x9. Sprawdź mecz dwóch tytanów wagi ciężkiej, gdzie ChainCollector produkuje mięso mielącego panującego współwyciężyciela Asdf:
Zasady
- Limit 0,5 sekundy na ruch.
- Bez ingerencji w inne boty.
- Użyj PigPen.random () i PigPen.random (int) dla losowości.
- Brak zapisu do plików.
- Bot i wszystkie jego trwałe dane będą resetowane przy każdej zmianie przeciwnika (co 12 rund).
Boty
Każdy bot rozszerza Player.java:
package pigpen;
public abstract class Player {
public abstract int[] pick(Board board, int id, int round);
}
Board
jest planszą, która służy głównie do zapewnienia dostępu do Pen
klas, i id
jest twoim ID gracza (informuje, czy jesteś pierwszy, czy drugi), round
informuje, w której rundzie grasz z tym samym przeciwnikiem (1 lub 2). int[]
Zwracana jest wartość , gdzie pierwszym elementem jest penID (indeksowany 1), a drugim elementem jest fenceID (indeksowany 0). Znajdź Pen.pick(int)
prosty sposób na wygenerowanie tej zwracanej wartości. Zobacz stronę Github, na przykład odtwarzacze i JavaDoc. Ponieważ używamy tylko kwadratowej siatki, zignoruj wszelkie funkcje i pola związane z sześciokątami.
Jak biegać
- Pobierz źródło z Github.
- Napisz bota kontrolera (pamiętaj o dołączeniu
package pigpen.players
) i umieść go wsrc/
folderze; - Kompiluj z
javac -cp src/* -d . src/*.java
. Uruchom zjava pigpen.Tournament 4 9 9 false
(dwie ostatnie liczby można zmienić, aby dostosować rozmiar siatki. Ostatnia zmienna powinna być ustawiona na,true
jeśli chcesz używać oprogramowania pp_record.)
Wyniki
- Kolektor: 72
- Asdf: 57
- Lazybones: 51
- Finiszer: 36
- = LinearPlayer: 18
- = BackwardPlayer: 18
- RandomPlayer: 0
Zobacz też:
Uwaga : ta gra jest wyzwaniem konkurencyjnym i nie jest łatwa do rozwiązania, ponieważ daje graczom dodatkową turę za wypełnienie pudełka.
Dziękujemy Nathanowi Merrillowi i Darrel Hoffman za konsultacje w sprawie tego wyzwania!
Aktualizacje :
- Dodano
moves(int player)
metodę do klasy Board, aby uzyskać listę każdego ruchu wykonanego przez gracza.
Nieokreślona nagroda (100 powtórzeń) :
Pierwsza osoba, która opublikuje rozwiązanie, które wygrywa każdą rundę i stosuje strategię (dostosowanie gry na podstawie obserwacji gry przeciwnika).