Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <list>
- #include <cstdio>
- using namespace std;
- int face_card(char c)
- {
- switch (c) {
- case 'J':
- return 1;
- case 'Q':
- return 2;
- case 'K':
- return 3;
- case 'A':
- return 4;
- default:
- return 0;
- }
- }
- int play(int nc, list<char>& jugador, list<char>& jugadas)
- {
- /*nc es el numero de cartas*/
- if (!nc)
- nc = 1;
- while (nc--) {
- /*si uno de los jugadores ya no puede jugar, termina*/
- if (jugador.empty())
- return -1;
- /*saco la primera carta del jugador*/
- char c = jugador.front();
- jugador.pop_front();
- /*aumento la lista de jugadas*/
- jugadas.push_back(c);
- /*reviso la carta*/
- int fc = face_card(c);
- /*si es alguna carta especial, retornamos el numero de
- cartas que el siguiente jugador tendra que poner*/
- if (fc)
- return fc;
- }
- return 0;
- }
- int main()
- {
- const int nr_cards = 52;
- while (true) {
- list<char> jugadores[2], jugadas;
- // jugador[0] es el non dealer, jugador 1 es el dealer
- char carta[2 + 1];
- scanf("%s", carta);
- if (carta[0] == '#')
- break;
- /*ponemos al inicio la primera carta en el non-dealer*/
- jugadores[0].push_front(carta[1]);
- /*pasamos al proceso de llenado*/
- for (int i = 1; i < nr_cards; i++) {
- scanf("%s", carta);
- /*de acuerdo al jugador , ponemos las cartas*/
- jugadores[i % 2].push_front(carta[1]);
- }
- int pi = 0, nc = 0;
- /*comenzamos el proceso de simulación*/
- while (true) {
- /*procedemos a identificar como se jugará
- play recibe un booleano, la lista de jugadores y las jugadas comenzando
- */
- int fc = play(nc, jugadores[pi], jugadas);
- /*ahora pasamos al siguiente jugador*/
- pi = (pi + 1) % 2;
- /*si devolvio -1 significa que el juego termino y dicho jugador gana*/
- if (fc == -1)
- break;
- if (!fc && nc)
- /*una vez terminada la secuencia 2 , entonces el jugador correspodiente
- aumenta todo lo jugado y lo pone al fondo de su deck
- para ello se usa la funcion splice cuyo parametro es desde donde se
- agregará y qué se agregará*/
- jugadores[pi].splice(jugadores[pi].end(), jugadas);
- nc = fc;
- }
- printf("%d%3d\n", 2 - pi, static_cast<int>(jugadores[pi].size()));
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement