Liar's Dice est un jeu de dés assez simple. J'ai vu quelques variantes différentes des règles, mais voici la version que je connais le mieux:
- Chaque joueur commence avec 5d6
- Sauf lors du décompte des dés à la fin d'un tour, chaque joueur peut voir ses propres dés, mais pas ceux de n'importe quel adversaire
- Au début d'un tour donné, tous les joueurs lancent les dés qu'ils ont actuellement
- Ensuite, un joueur (généralement, c'est soit le vainqueur du tour précédent OU le joueur à gauche du joueur qui a commencé la dernière fois; nous utiliserons le premier pour ce KotH; avec un joueur aléatoire commençant le premier tour) fait une estimation du nombre d'un nombre particulier sur la table (ONES SONT SAUVAGES)
- Les enchères se poursuivent vers la droite, en augmentant à chaque fois (par exemple; 3 cinq, 3 six et 4 deux sont tous supérieurs à 3 fours, mais 3 trois ne le sont pas; 4 unités est également plus élevé mais enchérir sur celles-ci vous mettra probablement à un désavantage); jusqu'à ce qu'un joueur appelle le joueur qui les précède un menteur
- À ce stade, tous les joueurs révèlent leurs dés et comptent le numéro du dernier numéro mis sur la table.
- Si le total est inférieur à l'enchère, le joueur qui a fait l'enchère doit donner un dé au joueur qui les a appelés menteurs, sinon, le joueur qui a appelé l'enchérisseur un menteur doit donner un dé au soumissionnaire (pour que l'enchérisseur gagne si leur nombre est au moins égal à celui qu'il avait proposé, il n'est pas nécessaire qu'il y ait le nombre exact)
- Lorsque vous manquez de dés, vous perdez
- Le dernier joueur debout gagne
Par exemple:
Le joueur un a 1,1,2,4,6 Le joueur deux a 1,2,2,3,5 Le joueur trois a 1,3,3,4,6 Joueur un: trois six. Joueur deux: quatre deux. Joueur trois: quatre à trois. Joueur un: cinq deux. Joueur deux: six deux. Joueur trois: six à trois. Joueur un: six quatre. Joueur deux: menteur! Ils révèlent leurs dés et comptent ceux (parce que ceux sont sauvages) et les quatre. Il s'avère qu'il y a, en fait, exactement six fours. Donc, le joueur deux donne un dé au joueur un. Ils relancent et le joueur n ° 1 commence le tour suivant.
Vous devez écrire un bot pour jouer à ce jeu. Il doit implémenter la classe java abstraite suivante:
public abstract class Player {
public Player() {}
public String toString() {
return this.getClass().getSimpleName();
}
public abstract String bid(int yourId, int[] diceEachPlayerHas, int[] yourDice, String[] bids);
}
- Vous devez implémenter la méthode d'enchères
- Le premier argument est la position actuelle de votre bot dans l'ordre du tour, le second est un tableau montrant combien de dés chaque joueur (y compris vous-même) possède actuellement, le troisième est un tableau montrant les valeurs actuellement affichées sur vos propres dés, et le quatrième est un tableau de toutes les offres faites depuis le début du tour en cours - aura une longueur de 0 si vous faites la première enchère du tour
- La sortie doit être soit une chaîne de la forme "numéro face", soit la chaîne "Liar!" appeler le soumissionnaire précédent un menteur.
- Si votre sortie est formatée illégalement, vous serez éliminé.
- Vous pouvez remplacer la méthode toString, mais ce n'est pas obligatoire. Cependant, vous ne pouvez pas le modifier d'une manière qui interfère avec la lisibilité de la sortie du contrôleur.
- Vous êtes autorisé à appeler toute autre méthode publique du contrôleur, mais pas sa méthode principale.
- Vous pouvez lire et modifier uniquement les fichiers du répertoire en cours d'exécution préfixés par le nom de votre bot
- Vous n'êtes pas autorisé à prendre des informations provenant d'une autre source
- Les variables d'instance sont réinitialisées au début de chaque nouveau jeu, mais pas les variables statiques.
Notation
- Un jeu de 1000 jeux, avec 3-5 joueurs dans chacun, sera simulé chaque fois qu'un bot est ajouté (dès que trois bots ou plus ont été soumis), marqué comme indiqué dans la source du contrôleur (dans un jeu donné, vous obtenez 1 au début de chacun de vos tours, 10 à chaque fois que vous capturez un dé et 1 000 bonus si vous gagnez); appliquer une limite de 5 000 TOURS (pas de tours) à chaque partie.
- Votre bot sera marqué par son score de la dernière série de jeux; plus dix fois son score de vote, si non négatif. (Ce dernier est peu susceptible d'avoir un effet significatif sur le score)
La source du contrôleur peut être trouvée ici.
Scores au 19/06/2015:
Badnomial: 434,924 + 6x10 = 424,984
Nobody: 282,329 + 6x10 = 282,389
StraightShooter: 265,205 + 5x10 = 265,255
MostlyHonestAbe: 158,958 + 4x10 = 158,998
The Pirate: 157,005 + 1x10 = 157,015
Statistician: 144,012 + 2x10 = 144,032
Fidelio: 49,973 + 2x10 = 49,993
Absurd Bot: 6,831
DrHouse: 2,638 + 3x10 = 2,668
diceEachPlayerHas[yourId]
= votre nombre de dés, et bids[yourId]
est votre première enchère (ou nulle si c'est votre premier tour). Est-ce exact?