Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Rockmore en 5 Diciembre 2010, 20:44 pm



Título: [C] Mostrando datos de un vector de enteros
Publicado por: Rockmore en 5 Diciembre 2010, 20:44 pm
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:

Código
  1.        system("cls");
  2.        printf("**************");
  3.        printf("\n* BLACK JACK *");
  4.        printf("\n**************");
  5.        printf("\nTus cartas: ");
  6.        if(baraja[0]==11){
  7.            printf("J ");
  8.            val=10;
  9.        }else if(baraja[0]==12){
  10.            printf("Q ");
  11.            val=10;
  12.        }else if(baraja[0]==13){
  13.            printf("K ");
  14.            val=10;
  15.        }else{
  16.            printf("%d ",baraja[0]);
  17.            val=baraja[0];
  18.        }
  19.        cartas=cartas+val;
  20.  
  21.        for(i=1;cartas<21;i++){
  22.            if(baraja[i]==11){
  23.                printf("J ");
  24.                val=10;
  25.            }else if(baraja[i]==12){
  26.                printf("Q ");
  27.                val=10;
  28.            }else if(baraja[i]==13){
  29.                printf("K ");
  30.                val=10;
  31.            }else{
  32.                printf("%d ",baraja[i]);
  33.                val=baraja[i];
  34.            }
  35.            cartas=cartas+val;
  36.            printf("\n\nEl valor de tus cartas es: %d",cartas);
  37.        }

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.