Pazaak ist ein Kartenspiel aus dem Star Wars-Universum. Es ist ähnlich wie bei BlackJack, bei dem zwei Spieler gegeneinander antreten und versuchen, insgesamt zwanzig zu erreichen, ohne darüber hinwegzugehen. Jeder Spieler hat ein "Seitendeck" mit vier eigenen Karten, mit denen er seine Punktzahl ändern kann.
Bestenliste
Stand 17.06.2015 @ 16:40 EDT
Bearbeiten: Neptor wurde wegen Betrugs disqualifiziert. Scores werden so schnell wie möglich festgelegt ...
- NEPTR: ~ 424.000
- Das Cincinnati-Kind: ~ 422.000
- Nestor: ~ 408.000
- Austin Powers: ~ 405.000
- Bastila: ~ 248.000
- Dummer vorsichtiger Spieler: ~ 107.000
- Dumb Bold Player: ~ 87.000
Mock Pazaak Cup Playoffs
Wird so schnell wie möglich aktualisiert.
Runde Eins - Nestor gegen Bastila & Austin Powers gegen The Cincinnati Kid
Runde zwei - Nestor gegen Austin Powers & The Cincinnati Kid gegen Bastila
Mechanik
Das Gameplay erfolgt abwechselnd. Spieler eins erhält eine Karte vom Hauptdeck (Hausdeck). Das Hausdeck enthält vierzig Karten: vier Kopien von einer bis 10. Nachdem ihnen eine Karte ausgeteilt wurde, können sie ihren Zug beenden und in der nächsten Runde eine neue Karte erhalten, auf ihrem aktuellen Wert stehen oder eine Karte aus ihrem Seitendeck spielen und beim neuen Wert stehen. Nachdem Spieler eins entschieden hat, was er tun möchte, wiederholt Spieler zwei den Vorgang.
Sobald beide Spieler gegangen sind, werden die Hände ausgewertet. Wenn ein Spieler bombardiert hat (über zwanzig gegangen ist), gewinnt der andere Spieler, vorausgesetzt, er hat nicht auch bombardiert. Wenn sich ein Spieler zum Stehen entschieden hat und der andere Spieler einen höheren Handwert hat, gewinnt der andere Spieler. Wenn beide Spieler stehen bleiben, gewinnt der Spieler mit dem höheren Handwert. Bei einem Unentschieden gewinnt keiner der Spieler.
Vorausgesetzt, eine Gewinnbedingung ist nicht erfüllt, wird das Spiel wiederholt. Wenn ein Spieler seinen Zug beendet, erhält er eine neue Karte und kann eine neue Wahl treffen. Wenn sie sich entschieden haben zu stehen oder eine Karte von ihrem Seitendeck aus gespielt haben, wird ihnen keine neue Karte ausgeteilt und sie können keine neue Aktion auswählen.
Das Spiel wird so fortgesetzt, bis ein Spieler das Spiel gewinnt. Die Spiele werden in den besten drei von fünf Sätzen gespielt.
Warum "einfacher" Pazaak?
Im Star Wars-Universum spielte Pazaak mit Glücksspielen. Während die Aufnahme eines solchen Systems dem Spiel mehr Dynamik verleihen würde, ist es für einen erstmaligen KoTH-Wettbewerb etwas kompliziert.
"Echte" Pazaak-Seitendecks wurden ebenfalls von den Spielern selbst bereitgestellt und können viele verschiedene Kartenoptionen wie Negativkarten, Positiv- oder Negativkarten, Flip-Karten, Doppelkarten und Tiebreaker-Karten enthalten. Dies würde das Spiel auch interessanter machen, würde jedoch eine Spielschnittstelle erfordern und weitaus mehr von den Konkurrenten verlangen. In diesem einfachen Pazaak-Spiel erhält jeder Spieler das gleiche Seitendeck: zwei Kopien von eins bis fünf, aus denen vier zufällig ausgewählt werden.
Abhängig vom Erfolg dieses Spiels kann ich mich bemühen, eine erweiterte Version zu entwickeln, in der Glücksspiele und benutzerdefinierte Seitendecks möglich sind.
Die Spieler
Die Spieler dieses Spiels sind von Ihnen entworfene Bots. Jeder Bot muss die Player-Klasse erweitern, das Mechanics-Paket importieren und sich wie folgt im Player-Paket befinden:
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;
}
}
In jeder Runde ruft der Controller die getResponse-Methode für Ihren Bot auf, es sei denn, Ihr Bot hat zuvor angegeben, dass er stehen möchte. Die Methode getResponse kann zwei Eigenschaften festlegen: eine Aktion und eine Karte zum Spielen. Aktion kann eine der folgenden sein:
- ENDE: Beendet den Zug und zieht im nächsten Zug eine neue Karte.
- STAND: Bleibt beim aktuellen Handwert. Zieht keine Karte.
- SPIELEN: Spielt eine Karte aus dem Seitendeck und steht dann auf.
Die zu spielende Karte ist natürlich nur dann von Bedeutung, wenn Sie die Aktion auf SPIELEN setzen. Es braucht ein Kartenobjekt. Wenn das Kartenobjekt, das Sie übergeben, nicht in Ihrem Seitendeck vorhanden ist, steht Ihr Bot stattdessen.
Die Parameter, die Ihr Bot in jeder Runde erhält, sind:
- Ein Array mit den Gewinnen jedes Spielers. gewinnt [0] ist Spieler 1, gewinnt 1 ist Spieler 2 (int [])
- Ob Ihr Bot Spieler eins ist oder nicht (Boolescher Wert)
- Eine Sammlung der Karten, die Sie bisher erhalten haben (Sammlung)
- Eine Sammlung der Karten, die Ihr Gegner bisher erhalten hat (Sammlung)
- Eine Sammlung der Karten in Ihrem Seitendeck (Sammlung)
- Die Anzahl der Karten, die im Seitendeck deines Gegners verbleiben (int)
- Die Aktion, die Ihr Gegner zuletzt ausgeführt hat (Aktion) [Hinweis: Dies ist entweder END oder STAND, niemals SPIELEN]
- Ob dein Gegner eine Karte gespielt hat oder nicht (Boolescher Wert)
Bot-Regeln
Ihre Bots dürfen nur die Informationen verwenden, die sie über die Methode getResponse erhalten. Sie sollten nicht versuchen, mit einer anderen Klasse zu interagieren. Sie können in eine einzelne Datei schreiben, um Daten zwischen Runden zu speichern. Sie können nach Wunsch beliebige benutzerdefinierte Methoden, Eigenschaften usw. haben. Sie sollten in angemessener Zeit ausgeführt werden (wenn der Programmablauf praktisch nicht sofort erfolgt, stelle ich fest, dass etwas nicht stimmt).
Wenn Sie im Code eine Art Exploit finden, werden Sie dafür belohnt, dass Sie sich selbst abgegeben haben. Wenn ich den Exploit zuerst bemerke, werde ich ihn beheben und Sie erhalten keine Belohnung.
Demos
Der Controller wird nicht benötigt, um einen Bot zu schreiben, da in diesem Beitrag bereits alles erklärt wurde. Wenn Sie jedoch testen möchten, finden Sie es hier: https://github.com/PhantomJedi759/simplepazaak Zwei grundlegende Bots sind enthalten. Keiner sollte sich gut gegen einen "intelligenten" Gegner behaupten, da er nur zwischen END und STAND wählt. Hier ist ein Beispiellauf dessen, was sie tun:
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!
Da diese Bots nur auf das Glück der Auslosung angewiesen sind, können ihre Gewinn-Verlust-Verhältnisse drastisch variieren. Es wird interessant sein zu sehen, wie Geschicklichkeit das Glück des Spiels bekämpfen kann.
Dies sollte alles sein, was Sie brauchen! Baue ein paar Bots!
Klarstellung der Regeln
Das Hauptdeck besteht aus vierzig Karten: 4x1-10. Es wird zu Beginn jeder Hand neu gemischt.
Das Seitendeck eines Spielers besteht aus vier Karten, die zufällig aus 2x1-5 ausgewählt werden. Das Seitendeck bleibt zwischen den Händen bestehen.
Hände werden in Spielen für die besten drei von fünf gespielt. Bots werden basierend auf der Gesamtzahl der gewonnenen Spiele und dann anhand der Gesamtzahl der Hände bewertet.
Das Matching wird so durchgeführt, dass jeder Spieler 100.000 Spiele gegen jeden anderen Spieler spielen muss.
Im Pazaak Cup wird durch Ausscheidungsrunden eingegrenzt, wer der beste Pazaak-Bot wirklich ist. Jede Paarung von Bots wird für die besten vier von sieben Sätzen von 100.000 Spielen gespielt. Wer vier gewinnt, steigt die Leiter zum nächsten Gegner hinauf, und die Verlierer bleiben unten, um um aufeinanderfolgende Ranglisten zu kämpfen. Diese Art des Spielens ist die fairste, da Bots bestimmte Gegner nicht "gewinnen" können, um den Mangel an Fähigkeiten gegen andere auszugleichen. Der Pazaak Cup findet am Freitag, den 3. Juli statt, sofern mindestens acht Bots eingereicht wurden. Der Gewinner erhält den Status "Richtige Antwort" und einen Startbonus für Advanced Pazaak, der hoffentlich fast zur gleichen Zeit wie der Pazaak Cup bereitsteht.
quelle
Antworten:
Das Cincinnati-Kind
Versuchen Sie sicherzustellen, dass wir eine weitere Karte ziehen, wenn wir wissen, dass wir verlieren. Andernfalls sehen Sie sich unser Seitendeck und die Gesamtpunktzahl an, um zu entscheiden, was zu tun ist.
Aktualisiert , um Situationen besser zu bewältigen, in denen der Gegner bereits mit dem Spielen fertig ist. In meinen eigenen Tests scheint dies nun zumindest vorerst wieder der beste Kandidat zu sein.
quelle
Austin Powers
Austin Powers lebt, wie Sie vielleicht annehmen, gerne gefährlich. Wenn jemand nicht pleite ist oder einen Sieg garantieren kann, wird er immer treffen, wenn er im Rückstand ist oder eine Chance von mehr als 20% hat, nicht pleite zu gehen.
quelle
Bastila
Bastila spielt konservativ. Für sie ist eine 17 genauso gut wie eine 20, und es ist viel besser, kurz zu bleiben, als zu bombardieren.
quelle
Nestor
Nestor liebt es, mit seinem Seitendeck 20 zu bekommen, aber wenn dies fehlschlägt, berechnet er seine erwartete Auszahlung, indem er Stand oder Ende wählt, vorausgesetzt, der Gegner ist vernünftig.
quelle
Glaucus
Glaucus führt 100 Simulationen mit einer gemischten Kartenliste durch und wählt anhand dieser Simulationen seine beste Option aus.
quelle
HK-47
Erblicken! Ein Bot meines eigenen Designs. HK-47 versucht, alle Fleischsäcke zu töten, die er kann, obwohl er mit seinen Seitendeckkarten ein wenig triggerglücklich ist.
Bisher kann er alle außer The Cincinnati Kid schlagen.
quelle
NEPTR
(Never Ending Pie Throwing Robot)
Neptor tut mir leid, Neptor hat geschummelt. Neptor würde wirklich sauber werden, er wollte nur zuerst ein bisschen Spaß haben :(
quelle
PazaakGameMain.HAND_GOAL = ingredients; //Trololo, you caught me, sorry!
funktioniert tatsächlich.