Pazaak to gra karciana z uniwersum Star Wars. Jest podobny do BlackJacka, z dwoma graczami rywalizującymi ze sobą, próbującymi osiągnąć w sumie dwudziestkę bez przekraczania. Każdy gracz ma własną talię boczną złożoną z czterech własnych kart, których może użyć do zmodyfikowania swojego wyniku.
Tabela liderów
Stan na dzień 17.06.2015 o 16:40 EDT
Edycja: Neptor został zdyskwalifikowany za oszukiwanie. Wyniki zostaną naprawione jak najszybciej ...
- NEPTR: ~ 424,000
- The Cincinnati Kid: ~ 422,000
- Nestor: ~ 408,000
- Austin Powers: ~ 405,000
- Bastila: ~ 248,000
- Głupi ostrożny gracz: ~ 107 000
- Dumb Bold Player: ~ 87 000
Udawaj Pazaak Playoffs Cup
Zostanie zaktualizowany jak najszybciej.
Runda pierwsza - Nestor vs Bastila i Austin Powers vs The Cincinnati Kid
Runda druga - Nestor vs Austin Powers i The Cincinnati Kid vs Bastila
Mechanika
Rozgrywka odbywa się po kolei. Gracz pierwszy otrzymuje kartę z talii głównej (domu). Talia domu mieści czterdzieści kart: cztery kopie od jednej do 10. Po otrzymaniu karty mogą zakończyć swoją turę i otrzymać nową kartę w następnej turze, stanąć przy obecnej wartości lub zagrać kartę ze swojej bocznej talii i stać na nowej wartości. Gdy gracz jeden decyduje, co chce zrobić, gracz drugi powtarza ten proces.
Kiedy obaj gracze odejdą, ręce są oceniane. Jeśli gracz zbombardował (przekroczył dwadzieścia), drugi gracz wygra, pod warunkiem, że również nie zbombardował. Jeśli gracz zdecyduje się stać, a drugi gracz ma wyższą wartość ręki, inny gracz wygra. Jeśli obaj gracze zdecydują się stać, wygrywa gracz z wyższą wartością ręki. W przypadku remisu żaden z graczy nie wygrywa.
Jeśli warunek wygranej nie zostanie spełniony, gra się powtórzy. Jeśli gracz zdecyduje się zakończyć swoją turę, otrzyma nową kartę i może dokonać nowego wyboru. Jeśli zdecydują się stanąć lub zagrywają kartę ze swojej bocznej talii, nie otrzymają nowej karty i nie będą mogli wybrać nowej akcji.
Gra trwa tak długo, dopóki jeden z graczy nie wygra. Gry rozgrywane są w trzech z pięciu zestawów.
Dlaczego „prosty” Pazaak?
We wszechświecie Gwiezdnych wojen Pazaak wiązał się z hazardem. Chociaż włączenie takiego systemu dodałoby więcej dynamiki do gry, jest to nieco skomplikowane w przypadku pierwszego konkursu KoTH.
Gracze dostarczali również „rzeczywiste” talie boczne Pazaaka i mogą one obejmować wiele różnych opcji kart, takich jak karty negatywne, karty dodatnie lub ujemne, karty odwrócone, karty podwójne i karty rozstrzygające remisy. Dzięki temu gra byłaby bardziej interesująca, ale wymagałaby interfejsu hazardowego i wymagałaby znacznie więcej od konkurentów. W tej prostej grze Pazaak każdy gracz otrzymuje tę samą talię boczną: dwie kopie od jednego do pięciu, z których cztery są losowo wybierane.
W zależności od sukcesu tej gry, mogę podjąć wysiłek opracowania zaawansowanej wersji, w której możliwe są hazardowe i niestandardowe talie boczne.
Gracze
Gracze tej gry będą botami zaprojektowanymi przez ciebie. Każdy bot musi rozszerzyć klasę Gracza, zaimportować pakiet Mechaniki i przebywać w pakiecie graczy w następujący sposób:
package Players;
import java.util.Collection;
import Mechanics.*;
public class DemoPlayer extends Player {
public DemoPlayer() {
name = "Your Name Here";
}
public void getResponse(int wins[], boolean isPlayerOne,
Collection<Card> yourHand, Collection<Card> opponentHand,
Collection<Card> yourSideDeck, int opponentSideDeckCount,
Action opponentAction, boolean opponentDidPlay) {
action = null;
cardToPlay = null;
}
}
W każdej rundzie kontroler wywoła metodę getResponse dla twojego bota, chyba że bot uprzednio wskazał, że chce zostać. Metoda getResponse może ustawić dwie właściwości: akcję i kartę do gry. Działanie może być jedną z następujących czynności:
- KONIEC: kończy turę i losuje nową kartę w następnej turze.
- STAND: Pozostaje przy bieżącej wartości ręki. Nie losuje karty.
- GRA: Zagrywa kartę z talii bocznej, a następnie wstaje.
Karta do gry ma oczywiście znaczenie tylko wtedy, gdy ustawisz akcję na ZAGRAJ. Pobiera obiekt Card. Jeśli obiekt karty, który mu przekazujesz, nie istnieje w twojej bocznej talii, bot zamiast tego STOJE.
Parametry, które bot otrzymuje w każdej turze, to:
- Tablica zawierająca wygrane każdego gracza. wygrywa [0] to Gracz 1, wygrywa 1 to Gracz 2 (int [])
- Czy twój bot jest graczem pierwszym (boolean)
- Zbiór kart, które do tej pory otrzymałeś (Kolekcja)
- Zbiór kart, do których do tej pory rozdano przeciwnikowi (Kolekcja)
- Kolekcja kart z twojej bocznej talii (Kolekcja)
- Liczba kart pozostałych w bocznej talii przeciwnika (int)
- Akcja, którą twój przeciwnik ostatnio wykonał (Akcja) [Uwaga: Będzie to KONIEC lub STAND, nigdy NIE GRAJ]
- Czy twój przeciwnik zagrał kartę (boolean)
Zasady bota
Twoje boty mogą wykorzystywać tylko informacje, które zostały im przekazane za pomocą metody getResponse. Nie powinni próbować wchodzić w interakcje z żadną inną klasą. Mogą zapisywać w jednym pliku, aby przechowywać dane między rundami. Mogą mieć dowolne niestandardowe metody, właściwości itp. Według potrzeb. Powinny one działać w rozsądnym czasie (jeśli uruchomienie programu nie jest praktycznie natychmiastowe, zauważę, że coś jest nie tak).
Jeśli znajdziesz w kodzie jakiś exploit, zostaniesz nagrodzony za „oddanie się”. Jeśli najpierw zauważę exploit, naprawię go, a ty nie dostaniesz nagrody.
Dema
Kontroler nie jest potrzebny do napisania bota, ponieważ wszystko zostało już wyjaśnione w tym poście. Jeśli jednak chcesz przetestować, możesz go znaleźć tutaj: https://github.com/PhantomJedi759/simplepazaak Uwzględniono dwa podstawowe boty. Żadne z nich nie powinno dobrze trzymać się przeciwko „inteligentnemu” przeciwnikowi, ponieważ wybierają tylko pomiędzy KONIEC i STOJAK. Oto przykładowy przebieg tego, co robią:
New Game!
The standings are 0 to 0
Dumb Bold Player's Hand: []
Dumb Bold Player's new Hand: [2]
Dumb Bold Player has chosen to END
Dumb Cautious Player's Hand: []
Dumb Cautious Player's new Hand: [8]
Dumb Cautious Player has chosen to END
Dumb Bold Player's Hand: [2]
Dumb Bold Player's new Hand: [2, 8]
Dumb Bold Player has chosen to END
Dumb Cautious Player's Hand: [8]
Dumb Cautious Player's new Hand: [8, 3]
Dumb Cautious Player has chosen to END
Dumb Bold Player's Hand: [2, 8]
Dumb Bold Player's new Hand: [2, 8, 7]
Dumb Bold Player has chosen to END
Dumb Cautious Player's Hand: [8, 3]
Dumb Cautious Player's new Hand: [8, 3, 6]
Dumb Cautious Player has chosen to STAND
Dumb Bold Player's Hand: [2, 8, 7]
Dumb Bold Player's new Hand: [2, 8, 7, 6]
Dumb Bold Player has chosen to STAND
Dumb Cautious Player's Hand: [8, 3, 6]
Dumb Cautious Player has chosen to STAND
Dumb Bold Player has bombed out! Dumb Cautious Player wins!
Ponieważ te boty polegają wyłącznie na losowaniu, ich stosunek wygranych do przegranych może się drastycznie różnić. Ciekawie będzie zobaczyć, jak umiejętność może zwalczyć szczęście w grze.
To powinno być wszystko, czego potrzebujesz! Idź zbudować trochę botów!
Wyjaśnienie zasad
Główna talia składa się z czterdziestu kart: 4x1-10 Przetasowuje się ją na początku każdego rozdania.
Boczna talia gracza ma cztery karty wybrane losowo z 2x1-5. Boczny pokład utrzymuje się między dłońmi.
Rozgrywki są rozgrywane w grach na trzy z pięciu. Boty są oceniane na podstawie łącznej liczby wygranych gier, a następnie całkowitej liczby rozdań.
Dopasowywanie odbywa się tak, że każdy gracz będzie musiał rozegrać 100 000 gier z każdym innym graczem.
W Pazaak Cup rundy eliminacyjne zawężą listę najlepszych botów Pazaak. Każda para botów będzie grała o najlepsze cztery z siedmiu zestawów 100 000 gier. Ktokolwiek wygra cztery, przesunie się po drabinie do następnego przeciwnika, a przegrani będą walczyć o kolejne pozycje w rankingu. Ten styl gry jest najbardziej sprawiedliwy, ponieważ boty nie mogą „wygrać farmy” niektórych przeciwników, aby zrekompensować brak umiejętności przeciwko innym. Pazaak Pazaak odbędzie się w piątek 3 lipca, pod warunkiem przesłania co najmniej ośmiu botów. Zwycięzca otrzyma status Prawidłowa odpowiedź i premię początkową w Zaawansowanym Pazaak, który, mam nadzieję, będzie gotowy prawie w tym samym czasie, w którym odbędzie się Pazaak.
źródło
Odpowiedzi:
The Cincinnati Kid
Postaraj się wyciągnąć kolejną kartę, jeśli wiemy, że przegrywamy, w przeciwnym razie spójrz na naszą boczną talię i ogólne wyniki, aby zdecydować, co robić.
Zaktualizowano, aby lepiej radzić sobie z sytuacjami, w których przeciwnik już zakończył grę. W moich własnych testach wydaje się to być najlepszym kandydatem, przynajmniej na razie.
źródło
Austin Powers
Austin Powers, jak można się domyślać, lubi żyć niebezpiecznie. O ile ktoś nie odpadł lub nie może zagwarantować wygranej, zawsze trafi, jeśli jest w tyle, lub ma ponad 20% szansy na to, że nie odpadnie.
źródło
Bastila
Bastila gra zachowawczo. Dla niej 17 jest tak samo dobre jak 20 i o wiele lepiej jest stać krótko niż zbombardować.
źródło
Nestor
Nestor uwielbia dostawać 20 za pomocą swojej bocznej talii, ale gdy to się nie powiedzie, oblicza spodziewaną wypłatę, wybierając pozycję stojącą lub kończącą, zakładając, że przeciwnik jest rozsądny.
źródło
Jaskra
Glaucus wykonuje 100 symulacji z tasowaną listą kart i na podstawie tych symulacji wybiera najlepszą opcję.
źródło
HK-47
Ujrzeć! Bot mojego własnego projektu. HK-47 próbuje zabić wszystkie worki mięsne, jakie może, chociaż jest trochę zadowolony ze swoich kart z talii bocznej.
Jak dotąd może pokonać wszystkich oprócz Cincinnati Kid.
źródło
NEPTR
(Nigdy nie kończący się robot do rzucania ciastem)
Neptor przeprasza, Neptor oszukał. Neptor naprawdę miał zamiar dojść do porządku, po prostu chciał się najpierw zabawić :(
źródło
PazaakGameMain.HAND_GOAL = ingredients; //Trololo, you caught me, sorry!
faktycznie działa.