Duda Programacion en C (Universidad)

(Es un problema que tiene un amigo)

Tiene el siguente problema:

La biblioteca conio permite hacer más atractivos los programas en ms-dos, permitiendo usar distintos colores para el texto y el fondo de pantalla en los programas, colocar los mensajes en determinadas posiciones de la pantalla, borrar la pantalla completa o una linea concreta, comprobar la pulsación de una tecla sin necesidad de pulsar enter, etec..

#include

/* Programa para que el ordenador acierte un número que
nosotros pensemos */

int numero, inf, sup;
char opcion1,opcion2,pausa;

int main(void)
{
do
{
/* Bucle principal */
do
{
/* Menú principal */
printf("***************************************\n");
printf("* Menú Principal *\n");
printf("* 1. Empezar el juego *\n");
printf("* 2. Salir *\n");
printf("***************************************\n");
printf(" Elige una opcion: ");
fflush(stdin); scanf("%c",&opcion1);
} while (opcion1<'1' || opcion1>'2'); /* Menú principal */


/* Si elegimos jugar .... */
if(opcion1=='1')
{
/* Primero pedimos el intervalo entre el que oscilara el numero */
printf("Intervalo para el número a adivinar:\n");
printf("\tLímite inferior: ");
fflush(stdin); scanf("%d",&inf);
printf("\tLímite superior: ");
fflush(stdin); scanf("%d",&sup);
if(inf<=sup)
{
do
{ /* El ordenador prueba el elemento central en cada jugada*/
numero=(inf+sup)/2;
do
{ /* Segundo menú de opciones */
printf("¿Es por casualidad el: %d?\n\n",numero);
printf("\t 1. Sí, has acertado\n");
printf("\t 2. No, %d es menor que mi número\n");
printf("\t 3. No, %d es mayor que mi número\n");
printf("\t 4. Terminar\n");
printf("\n\t\t Elige opcion: ");
fflush(stdin); scanf("%c",&opcion2);
} while ((opcion2<'1') && (opcion2>'4')); /* Segundo menú */

if(opcion2=='2') sup=numero-1;
if(opcion2=='3') inf=numero+1;

} while(((opcion2!='1')&&(opcion2!='4'))&&(inf<=sup)); /* Fin de la jugada */

/* Muestra mensaje al final de la partida */
printf("+------------------------------------+\n");
if(opcion2=='1') printf("+ ENHORABUENA +\n");

if(opcion2=='4')
{
(opcion1=='2'); /*Fin del programa */
}
}


if(inf>=sup)
{
printf("+ Creo que te has hecho un lío +\n");
printf("+------------------------------------+\n\n\n");
}
printf("Pulse ENTER para continuar\n");
fflush(stdin);pausa=getchar();


}
}while (opcion1!='2'); /* Fin del bucle principal */

return 0;
} /* fin del programa */


y necesita mediante la biblioteca conio ponerle colores lo ha estado intentando, pero ha tenido que cagarla en algún lado porque los colores no le varían, tiene la limitación de que de la biblioteca conio sólo puede usar los siguientes comandos:

clrscr( ),
gotoxy ( ),
textcolor( ),
textbackgroung ( )
getch ( ).

Si alguien puede ayudar estará muy agradecido
Muchas Gracias y un Saludo
Yo no he visto el textcolor por ningun lado, pero te digo como funciona.

Antes de lo que quieres que cambie de color, coloca la sentencia textcolor(numero del color que se desea).

Para saber el color que corresponde a cada número mira en la ayuda, el 2 por ejemplo es el verde (yo siempre lo utilizo).

Para que se pueda pintar las letras en verde necesitas la secuencia cprintf que tiene el inconveniente que no retorna el carro cuando utilizas el \n por lo que tienes que añadir el \r al final.

Si tienes algun problema más avisa.
Mi amigo esta comentando que probó lo que dices ayer y no le va...
Esto es lo que ha puesto:

#include
#include
/* Programa para que el ordenador acierte un número que
nosotros pensemos */

int numero, inf, sup;
char opcion1,opcion2,pausa;

int main(void)
{
do
{
/* Bucle principal */
do
{
/* Menú principal */
textcolor (4);
cprintf("***************************************\n");
cprintf("* Menú Principal *\n");
cprintf("* 1. Empezar el juego *\n");
cprintf("* 2. Salir *\n");
cprintf("***************************************\n");
cprintf(" Elige una opcion: ");
fflush(stdin); scanf("%c",&opcion1);
} while (opcion1<'1' || opcion1>'2'); /* Menú principal */

……………………………
Aparentemente esta todo correcto (quitando que sobra un "do" y un "{", y que la llamada a "textcolor" yo mejor la pondria fuera del bucle)

es muy raro...

PD: Esto no tendria que ir en PC->general?
A que te refieres con que "no le va"? Error de compilacion, o que es lo que no sale como deberia?


Si lo que quieres es que toda la pantalla sea, por ejemplo de fondo azul y letras blancas, por ejemplo, yo pondria el textcolor() y el textbackground() antes de entrar al bucle, luego un clrscr() y a partir de ahi toma efecto.

Puede usar tambien la funcion window() ?
El_SaBIo escribió:Mi amigo esta comentando que probó lo que dices ayer y no le va...
Esto es lo que ha puesto:



Como ya han dicho antes, coloca la sentencia textcolor antes del bucle y para que te salga correcto tienes que poner \r despues de los \n porque sino te saldria una cosa así:


***************************************
--------------------------------------------------------------Menú Principal
--------------------------------------------------------------------------------etc.


EDITADO :
¿Por qué diablos no salen las tabulaciones ni los espacios?

Las lineas son espacios en blanco...
Genzai Kawakami escribió:EDITADO :
¿Por qué diablos no salen las tabulaciones ni los espacios?

Las lineas son espacios en blanco...


Porque lo filtra el foro. Para poner algo con espacios y tabulaciones y que se respeten, ponlo dentro de un [code]
JanKusanagi escribió:
Porque lo filtra el foro. Para poner algo con espacios y tabulaciones y que se respeten, ponlo dentro de un [code]


Gracias, no lo sabia...
Muchas gracias a todos los que se han interesado aunque no he podido hablar con mi amigo por si lo consiguió arreglar :-(

Un Saludo
Muchas gracias a todos los que se han interesado aunque no he podido hablar con mi amigo por si lo consiguió arreglar :-(

Un Saludo
9 respuestas