[C] Mostrando datos de un vector de enteros

Iniciado por Rockmore, 5 Diciembre 2010, 20:44 PM

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

Rockmore

Saludos. Sigo con el black jack avanzando a mi ritmo, pero con otra traba. Y si resuelvo esto, el resto del programa lo doy por solucionado.

Bien, resulta que el formato de salida debe ser algo como:

"BLACK JACK

Tus cartas: 1 3 J 2 8

Valor total: 25

Deseas otra carta?"

Según este ejemplo, la primera jugada debe mostrar las dos primeras cartas, el valor total y la pregunta de coger otra carta, y al decir que sí, lo mismo, pero con la siguiente. En definitiva, que mientras aparece el texto de alrededor, primero se muestran dos cartas y luego de una en una.

Mi idea al hacer el código fue poner el primer texto de modo forzado, directamente con printf y punto, y las siguientes cartas ya en un do while. Esto es lo que tengo hecho de momento:

        system("cls");
        printf("**************");
        printf("\n* BLACK JACK *");
        printf("\n**************");
        printf("\nTus cartas: ");
        if(baraja[0]==11){
            printf("J ");
            val=10;
        }else if(baraja[0]==12){
            printf("Q ");
            val=10;
        }else if(baraja[0]==13){
            printf("K ");
            val=10;
        }else{
            printf("%d ",baraja[0]);
            val=baraja[0];
        }
        cartas=cartas+val;

        for(i=1;cartas<21;i++){
            if(baraja[i]==11){
                printf("J ");
                val=10;
            }else if(baraja[i]==12){
                printf("Q ");
                val=10;
            }else if(baraja[i]==13){
                printf("K ");
                val=10;
            }else{
                printf("%d ",baraja[i]);
                val=baraja[i];
            }
            cartas=cartas+val;
            printf("\n\nEl valor de tus cartas es: %d",cartas);
        }


La teoría es buena, obviando el hecho de que de este modo no se muestre el resto del texto, sin embargo, lo que me sale es algo como:

"BLACK JACK

Tus cartas: 1 3

J lor total: 4

2 lor total: 14

Valor total: 16"

Es decir, que sobreescribe la línea de valor total de la anterior tirada.

Una cosa que se me ocurrió fue meter todo el texto en un for o un do while, que borrase todo y lo volviera a escribir, aunque se me presentaban dos problemas: el primero, no saldrían las dos primeras cartas de golpe, y el segundo, que probablemente sólo saliera la última carta, pese a que cambie el valor total.