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.