ESTE PROBLEMA NO FUNCIONA AUN.
Haz un programa que juegue al Blackjack (un sencillo pero popular juego de cartas). ¡Cuánto mejor lo haga, más puntos recibirás!
A diferencia de los restantes problemas de la OIE, donde tu programa debe calcular la salida correcta a una entrada dada, este problema es interactivo: la entrada que reciba tu programa cambiará en función de lo que responda.
Estas son las reglas del Blackjack:
Además de estas reglas, jugaremos la partida de Blackjack con unas normas adicionales.
Conociendo estas normas tal vez puedas programar un jugador más bueno:
Tu jugador de Blackjack leerá la entrada para saber qué está pasando en la partida, y escribirá en la salida para decir cuánto quiere apostar, y cuándo quiere plantarse.
Mira este ejemplo con 2 partidas. Las líneas con > indican entrada que tu programa debe leer, y las líneas con < son ejemplos de salida que tu programa podría haber escrito.
> PARTIDA
> JUGADOR 10
> JUGADOR TAPADA
> BANCA 5
> BANCA TAPADA
> APUESTA 1/2 ?
< APUESTA 1
> JUGADOR Q
> TOTAL 20 CARTA/STOP ?
< STOP
> BANCA 7
> BANCA A
> BANCA 4
> RESULTADO 1
> PARTIDA
> JUGADOR A
> JUGADOR TAPADA
> BANCA J
> BANCA TAPADA
> APUESTA 1/2 ?
< APUESTA 2
> JUGADOR 6
> TOTAL 17 CARTA/STOP ?
< CARTA
> JUGADOR 6
> TOTAL 13 CARTA/STOP ?
< CARTA
> JUGADOR J
> BANCA 8
> RESULTADO -2
> FINAL -1
Una carta se representa por su figura (A, 2, …, 10, J, Q o K). El texto JUGADOR X o BANCA X indica que tu jugador (o la banca) recibe la carta X.
Cada partida empieza con el texto PARTIDA. A continuación se reparten dos cartas a cada jugador, la segunda de las cuales está TAPADA, y se te pregunta la apuesta (APUESTA 1/2 ?), a lo que deberás responder APUESTA 1 o APUESTA 2. Luego se te reparten cartas. Después de cada carta, y siempre que tu puntuación no llegue a 21, se te pregunta TOTAL X CARTA/STOP?, donde X es el valor de tus cartas (si hay ases, el máximo valor de tus cartas sin superar 21). A cada pregunta, deberás respondar CARTA o STOP. No te olvides de escribir un salto de línea.
Una vez acabe tu turno, juega la banca, que recibirá cartas hasta igualar o superar 16. La última línea de la partida es RESULTADO X, donde X será, en función de la apuesta, −2 o −1 si pierdes, 1 o 2 si ganas, y 0 si empatas. La última línea de toda la entrada contendrá FINAL X, donde X es la puntuación total de tu programa. Cuando esto ocurra, tu programa deberá finalizar.
Para poder probar que tu programa funciona correctamente, puedes usar los archivos blackjack.exe, conn.py y entrada.txt que tienes a tu disposición. Escribiendo
python conn.py ./programa.exe entrada.txt
donde ./programa.exe es el nombre de tu ejecutable, tu programa se ejecutará tantas veces como indique la primera línea del archivo de texto entrada.txt. También puedes jugar manualmente tú contra la banca, para estudiar como es la entrada y salida, escribiendo
./blackjack.exe entrada.txt
Puntuación
Tu programa jugará exactamente 10000 partidas contra la banca. La puntuación de tu programa dependerá de las apuestas que gane:
En caso de estar entre dos puntuaciones, tu programa recibirá el valor intermedio que corresponda, redondeando hacia abajo. Por ejemplo, un programa que acabe con FINAL -500 recibirá 50 puntos.