Pazaak es un juego de cartas del universo de Star Wars. Es similar al BlackJack, con dos jugadores enfrentados tratando de alcanzar un total de veinte sin pasar. Cada jugador tiene un "mazo lateral" de cuatro cartas propias que pueden usar para modificar su puntaje.
Tabla de clasificación
A partir del 17/06/2015 a las 16:40 EDT
Editar: Neptor ha sido descalificado por hacer trampa. Las puntuaciones se corregirán lo antes posible ...
- NEPTR: ~ 424,000
- The Cincinnati Kid: ~ 422,000
- Néstor: ~ 408,000
- Austin Powers: ~ 405,000
- Bastila: ~ 248,000
- Jugador cauteloso tonto: ~ 107,000
- Dumb Bold Player: ~ 87,000
Simulacros de Playoffs de Copa Pazaak
Se actualizará lo antes posible.
Primera ronda: Nestor vs Bastila y Austin Powers vs The Cincinnati Kid
Segunda ronda: Nestor vs Austin Powers y The Cincinnati Kid vs Bastila
Mecánica
La jugabilidad se realiza por turnos. El jugador uno recibe una carta del mazo principal (casa). El mazo de la casa tiene cuarenta cartas: cuatro copias de una a 10. Después de recibir una carta, pueden elegir finalizar su turno y recibir una nueva carta el próximo turno, permanecer en su valor actual o jugar una carta de su mazo lateral y pararse en el nuevo valor. Después de que el jugador uno decide lo que quiere hacer, el jugador dos repite el proceso.
Una vez que ambos jugadores se han ido, se evalúan las manos. Si un jugador bombardeó (pasó más de veinte), el otro jugador ganará, siempre que no bombardeen. Si un jugador elige pararse, y el otro jugador tiene un valor de mano más alto, el otro jugador ganará. Si ambos jugadores eligen pararse, el jugador con el mayor valor de la mano ganará. En caso de empate, ninguno de los jugadores obtiene la victoria.
Siempre que no se cumpla una condición ganadora, el juego se repetirá. Si un jugador elige terminar su turno, recibirá una nueva carta y podrá hacer una nueva elección. Si eligen pararse, o si jugaron una carta de su mazo lateral, no se les repartirá una nueva carta y no podrán elegir una nueva acción.
El juego continúa así hasta que un jugador gana el juego. Los juegos se juegan en los mejores tres de cinco sets.
¿Por qué "simple" Pazaak?
En el universo de Star Wars, Pazaak involucraba el juego. Si bien la inclusión de dicho sistema agregaría más dinámica al juego, es un poco complicado para una competencia KoTH por primera vez.
Las barajas laterales "reales" de Pazaak también fueron proporcionadas por los propios jugadores, y podrían incluir muchas opciones de cartas diferentes, como cartas negativas, cartas positivas o negativas, cartas invertidas, cartas dobles y cartas de desempate. Esto también haría que el juego fuera más interesante, pero requeriría una interfaz de juego y requeriría mucho más de los competidores. En este juego Simple Pazaak, cada jugador obtiene el mismo mazo lateral: dos copias de uno a cinco, de las cuales cuatro se seleccionan al azar.
Dependiendo del éxito de este juego, puedo esforzarme por desarrollar una versión avanzada en la que sean posibles juegos de azar y mazos personalizados.
Los jugadores
Los jugadores de este juego serán bots diseñados por ti. Cada bot necesita extender la clase Player, importar el paquete Mechanics y residir en el paquete players de la siguiente manera:
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;
}
}
Cada ronda, el controlador llamará al método getResponse para su bot, a menos que su bot haya indicado previamente que quería permanecer en pie. El método getResponse puede establecer dos propiedades: una acción y una carta para jugar. La acción puede ser una de las siguientes:
- FIN: finaliza el turno y roba una nueva carta el próximo turno.
- STAND: permanece en el valor actual de la mano. No robará una carta.
- JUGAR: juega una carta del mazo lateral y luego se para.
La carta para jugar es obviamente importante solo si configuras la acción para JUGAR. Se necesita un objeto de tarjeta. Si el objeto de la Carta que le pasas no existe en tu mazo lateral, tu bot se PERMANECERÁ
Los parámetros que su bot recibe cada turno son:
- Una matriz que contiene las victorias de cada jugador. gana [0] es el jugador 1, gana 1 es el jugador 2 (int [])
- Si tu bot es o no el jugador uno (booleano)
- Una colección de las cartas que has recibido hasta ahora (Colección)
- Una colección de las cartas que tu oponente ha recibido hasta ahora (Colección)
- Una colección de las cartas en tu mazo lateral (Colección)
- El número de cartas restantes en el mazo lateral de tu oponente (int)
- La acción que tu oponente realizó por última vez (Acción) [Nota: Esto será END o STAND, nunca PLAY]
- Si tu oponente jugó o no una carta (booleana)
Reglas de bot
Sus bots solo pueden usar la información que se les proporciona a través del método getResponse. No deben intentar interactuar con ninguna otra clase. Pueden escribir en un solo archivo para almacenar datos entre rondas. Pueden tener cualquier método personalizado, propiedades, etc., según se desee. Deben ejecutarse en un período de tiempo razonable (si la ejecución del programa no es prácticamente instantánea, notaré que algo está mal).
Si encuentra algún tipo de vulnerabilidad en el código, será recompensado por "entregarse". Si primero noto el exploit, lo arreglaré y no obtendrás recompensa.
Población
El controlador no es necesario para escribir un bot, ya que todo se explica en esta publicación. Sin embargo, si desea realizar una prueba, puede encontrarla aquí: https://github.com/PhantomJedi759/simplepazaak Se incluyen dos bots básicos. Ninguno de los dos debería resistir bien contra un oponente "inteligente", ya que solo eligen entre FIN y STAND. Aquí hay una muestra de lo que hacen:
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!
Debido a que estos bots se basan exclusivamente en la suerte del sorteo, sus proporciones de victorias y derrotas pueden variar drásticamente. Será interesante ver cómo la habilidad puede combatir la suerte del juego.
¡Esto debería ser todo lo que necesitas! ¡Ve a construir algunos bots!
Aclaración a las reglas
El mazo principal es de cuarenta cartas: 4x1-10 Se reorganiza al comienzo de cada mano.
El mazo lateral de un jugador tiene cuatro cartas, seleccionadas al azar de 2x1-5. La cubierta lateral persiste entre las manos.
Las manos se juegan en juegos para los mejores tres de cinco. Los bots se puntúan en función del número total de juegos ganados, y luego por el número total de manos.
El emparejamiento se maneja de manera que cada jugador tendrá que jugar 100,000 juegos contra cualquier otro jugador.
En la Copa Pazaak, las rondas de eliminación eliminarán quién es realmente el mejor bot de Pazaak. Cada pareja de bots jugará para los mejores cuatro de siete juegos de 100,000 juegos. Quien gane cuatro subirá la escalera hasta el próximo oponente, y los perdedores se mantendrán abajo para luchar por clasificaciones secuenciales. Este estilo de juego es el más justo, ya que los bots no pueden "ganar-cultivar" a ciertos oponentes para compensar la falta de habilidad contra otros. La Copa Pazaak se llevará a cabo el viernes 3 de julio, siempre que haya al menos ocho robots enviados. El ganador recibirá el estado de Respuesta correcta y un bono inicial en Advanced Pazaak, que esperamos esté listo casi al mismo tiempo que se celebra la Copa Pazaak.
fuente
Respuestas:
The Cincinnati Kid
Intenta asegurarte de que robemos otra carta si sabemos que estamos perdiendo, de lo contrario mira nuestro mazo lateral y los puntajes generales para decidir qué hacer.
Actualizado para hacer un mejor trabajo al manejar situaciones donde el oponente ya ha terminado de jugar. En mis propias pruebas, este parece ser el mejor candidato nuevamente, al menos por ahora.
fuente
Austin Powers
Austin Powers, como puede suponerse, le gusta vivir peligrosamente. A menos que alguien se haya roto, o pueda garantizar una victoria, siempre acertará si está detrás, o tiene más del 20% de posibilidades de no hacerlo.
fuente
Bastila
Bastila juega de forma conservadora. Para ella, un 17 es tan bueno como un 20, y es mucho mejor quedarse corto que bombardear.
fuente
Néstor
A Nestor le encanta obtener 20 usando su mazo lateral, pero cuando eso falla, calcula su recompensa esperada eligiendo stand o end, suponiendo que el oponente es sensato.
fuente
Glaucus
Glaucus realiza 100 simulaciones con una lista barajada de cartas y elige su mejor opción en función de estas simulaciones.
fuente
HK-47
¡Mirad! Un bot de mi propio diseño. HK-47 intenta matar todas las bolsas de carne que puede, aunque está un poco contento con sus cartas de la baraja lateral.
Hasta ahora, puede vencer a todos menos a The Cincinnati Kid.
fuente
NEPTR
(Robot de lanzamiento de pastel sin fin)
Neptor lo siente, Neptor hizo trampa. Neptor realmente iba a aclararse, solo quería divertirse primero :(
fuente
PazaakGameMain.HAND_GOAL = ingredients; //Trololo, you caught me, sorry!
realmente está funcionando.