Codigo de baraja de 312 cartas (6 masos)

Iniciado por Frijolito, Diciembre 12, 2018, 04:38:04 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Diciembre 12, 2018, 04:38:04 AM Ultima modificación: Diciembre 12, 2018, 04:40:12 AM por Frijolito
Hola, la verdad estoy haciendo un juego de BlackJack y usando la estrategia básica: G*(mimano, crupier) = Max {G0 (mimano,crupier), Σ10 C=1 G*(x+c,b)} por si alguien le importa el tema.

La cosa es que tengo el código con la estadistica sobre la posibilidad de sacar BlackJack en cierta mano, Cuando doblar pedir, rendirse y todas esas cosas, pero en la parte donde tengo que mesclar las "cartas" siento que no funciona bien les dejo el la función que hice, es súper "bruta" si se puede llamar de esa manera
Código: cvoid
 Mesclar(){         
    int numal;
    int i;
    srand(time(NULL));
    for(i=0 ; i<10000 ; i++){
        numal = 1 + rand() % (14 + 1) - 1;
        if(ca+c2+c3+c4+c5+c6+c7+c8+c9+c10+cj+cq+ck == 312){
            break;
        }
        if(numal == 1 && ca<24){
            mazo[k] = 11;
            crestantes[k] = 11;
            k++;
            ca++;
        }
        if(numal == 2 && c2<24){
            mazo[k] = 2;
            crestantes[k] = 2;
            k++;
            c2++;
        }
        if(numal == 3 && c3<24){
            mazo[k] = 3;
            crestantes[k] = 3;
            k++;
            c3++;
        }
        if(numal == 4 && c4<24){
            mazo[k] = 4;
            crestantes[k] = 4;
            k++;
            c4++;
        }
        if(numal == 5 && c5<24){
            mazo[k] = 5;
            crestantes[k] = 5;
            k++;
            c5++;
        }
        if(numal == 6 && c6<24){
            mazo[k] = 6;
            crestantes[k] = 6;
            k++;
            c6++;
        }
        if(numal == 7 && c7<24){
            mazo[k] = 7;
            crestantes[k] = 7;
            k++;
            c7++;
        }
        if(numal == 8 && c8 <24){
            mazo[k] = 8;
            crestantes[k] = 8;
            k++;
            c8++;
        }
        if(numal == 9 && c9<24){
            mazo[k] = 9;
            crestantes[k] = 9;
            k++;
            c9++;
        }
        if(numal == 10 && c10<24){
            mazo[k] = 10;
            crestantes[k] = 10;
            k++;
            c10++;
        }
        if(numal == 11 && cj<24){
            mazo[k] = 10 ;
            crestantes[k] = 10 ;
            k++;
            cj++;
        }
        if(numal == 12 && cq<24){
            mazo[k] = 10 ;
            crestantes[k] = 10 ;
            k++;
            cq++;
        }
        if(numal == 13 && ck<24){
            mazo[k] = 10;
            crestantes[k] = 10;
            k++;
            ck++;
        }
        if(ca+c2+c3+c4+c5+c6+c7+c8+c9+c10+cj+cq+ck == 312){
            break;
        }
    }
    i=0;
    for(int j=0 ; j<=6 ; j++){
        for(int h=0 ; h<=52 ; h++){
            printf("%2i ", mazo[i]);
            i++;
        }
        printf("\n");
    }
}


Se que pedir código es de mal gusto pero me la e pensado mucho y no se me ocurre como hacerlo pero si alguien me puede ayudar con alguna idea de como hacerlo o con el código lo amaría. Gracias de antemano.


Hola No tienes permitido ver los links. Registrarse o Entrar a mi cuenta,

Si quieres armar algo así, no podrías usar el Minimax, por la naturaleza estocástica del juego. Sin embargo, no sé si alguna vez escuchaste de Expectimax, la cual es una variante y se desarrolló especificamente para estos casos. Sé que Expectimax te servirá, pero debes indagar en cómo implementarlo en tu algoritmo.

Puedes ver proyectos en GitHub de este, aquí: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Un saludo.
Become the change you seek in the world. -Gandhi.