Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Problemas con textout y textprintf

Estas en el tema de Problemas con textout y textprintf en el foro de C/C++ en Foros del Web. Hola, estoy profundizando un poco mi conocimiento de C++ pero me surgio un inconveniente y es que las funciones textout y textprintf estan desaprobadas. he ...
  #1 (permalink)  
Antiguo 25/06/2013, 10:57
 
Fecha de Ingreso: septiembre-2012
Ubicación: Norte de Santander
Mensajes: 127
Antigüedad: 11 años, 8 meses
Puntos: 1
Pregunta Problemas con textout y textprintf

Hola, estoy profundizando un poco mi conocimiento de C++ pero me surgio un inconveniente y es que las funciones textout y textprintf estan desaprobadas. he probado a implementar textout_ex y textprintf_ex pero tal vez no estoy aplicando la sintaxis correcta asi que me gustaria me colaboten un poco con esto..

Código C++:
Ver original
  1. textout_ex(screen, font, "Adivinar numeros", 10,10,5, -1);
  #2 (permalink)  
Antiguo 25/06/2013, 13:08
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 9 meses
Puntos: 83
Respuesta: Problemas con textout y textprintf

Puedes dar alguna pista de que es esto, que se supone que debe hacer y porque crees que no funciona?

Si supongo que es el textout_ex de allegro entonces tienes que usar los argumentos necesarios para que funcione: un puntero a un bitmap de destino (si usas directamente el screen te provocara flicker), un puntero a una fuente valida (font por defecto), la posicion, un color en hexadecimal y el color de fondo (lee las notas del manual para ver cuando se omite el color de fondo). Si el problema lo tienes en el color prueba a usar la funcion MAKECOL o enviale un hex (p.ej. 0xff0000 para el rojo).

Saludos
vosk
  #3 (permalink)  
Antiguo 25/06/2013, 14:59
 
Fecha de Ingreso: septiembre-2012
Ubicación: Norte de Santander
Mensajes: 127
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: Problemas con textout y textprintf

Más exactamente me envia un error que traduce algo como pocos argumentos para la funcion textout_ex, cabe resaltar que despliega automaticamente un archivo text.h en el cual creo muestra la sintaxis correcta pero no logro adaptar el que ya tenia:

36 C:\Dev-Cpp\include\allegro\text.h too few arguments to function `void textout_ex(BITMAP*, const FONT*, const char*, int, int, int, int)'

De ahi que en mi codigo tengo declarado el screen, la fuente, el texto a imprimir, X e Y , el color en hexadecimal que me sugeriste y el valor del color de fondo.

Código C++:
Ver original
  1. textout_ex(screen, font, "Adivinar numeros", 10,10,0xff0000, -1);
  #4 (permalink)  
Antiguo 25/06/2013, 15:24
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 9 meses
Puntos: 83
Respuesta: Problemas con textout y textprintf

Debe ser de otra linea, tal como has colgado la llamada no tiene tal error. Tambien te sale este tipo de error si usas textprintf_ex?

Código C++:
Ver original
  1. textprintf_ex(screen, font, 10, 10, 0xff0000, -1, "Adivinar numeros");

Saludos
vosk
  #5 (permalink)  
Antiguo 25/06/2013, 15:33
 
Fecha de Ingreso: septiembre-2012
Ubicación: Norte de Santander
Mensajes: 127
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: Problemas con textout y textprintf

Posteare todo el codigo de esta manera supongo te podras
orientar mejor, debi hacerlo desde el principio..lol

Código C++:
Ver original
  1. #include <allegro.h>
  2. int numeroAdivinar, numeroTecleado;
  3. char tecla1, tecla2;
  4. int acertado;
  5. int intentos;
  6. int lineaEscritura;
  7.  
  8. #define MAXIMONUMERO 99
  9. #define NUMEROINTENTOS 6
  10.  
  11. int main(){
  12.     allegro_init();
  13.     install_keyboard();
  14.    
  15.     if(set_gfx_mode(GFX_SAFE, 320, 200, 0, 0)!=0){
  16.        set_gfx_mode(GFX_TEXT,0,0,0,0);
  17.        allegro_message(
  18.          "Incapaz de entrar en modo grafico\n%s\n",
  19.          allegro_error);
  20.        return 1;
  21.     }
  22.    
  23.     intentos = 0;
  24.     lineaEscritura = 50;
  25.    
  26.     srand(time(0));
  27.     numeroAdivinar = rand() % MAXIMONUMERO;
  28.     acertado = 0;
  29.    
  30.     textout_ex(screen, font, "Adivinar numeros", 10,10,0xff0000, -1);
  31.    
  32.     do{
  33.        
  34.     textout_ex(screen, font, "Teclea dos cifras (00 a 99)", 15,lineaEscritura, palette_color[13]);
  35.    
  36.     tecla1 = readkey();
  37.     textprintf_ex(screen, font, 235, lineaEscritura, palette_color[13], "%c", tecla1);
  38.  
  39.     tecla2 = readkey();
  40.     textprintf_ex(screen, font, 243, lineaEscritura, palette_color[13], "%c", tecla2);
  41.    
  42.     numeroTecleado = (int) (tecla1 - '0') * 10 + tecla2 - '0';
  43.    
  44.     if (numeroTecleado == numeroAdivinar) acertado = 1;
  45.       else if (numeroTecleado < numeroAdivinar)
  46.     textout_ex(screen, font, "Corto", 260,lineaEscritura, palette_color[12]);
  47.       else if(numeroTecleado > numeroAdivinar)
  48.     textout_ex(screen, font, "Grande", 260,lineaEscritura, palette_color[12]);
  49.    
  50.     intentos++;
  51.     lineaEscritura += 10;
  52.    
  53.     }while((!acertado) && (intentos < NUMEROINTENTOS));
  54.    
  55.     if (acertado)
  56.     textout_ex(screen, font, "Acertaste!!!",160,180,palette_color[15]);
  57.     else
  58.     textprintf_ex(screen, font, 160, 180, palette_color[15], "Era: %d",numeroAdivinar);
  59.    
  60.     readkey();
  61. }
  62.  
  63. END_OF_MAIN();
  #6 (permalink)  
Antiguo 25/06/2013, 15:41
 
Fecha de Ingreso: septiembre-2012
Ubicación: Norte de Santander
Mensajes: 127
Antigüedad: 11 años, 8 meses
Puntos: 1
Respuesta: Problemas con textout y textprintf

Ok, tenias razon el error se encontraba en otras lineas. Las he corregido pero ahora me sale este error:

[Linker error] undefined reference to `_install_allegro_version_check'
  #7 (permalink)  
Antiguo 25/06/2013, 15:44
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 9 meses
Puntos: 83
Respuesta: Problemas con textout y textprintf

Ok, tal como te comenté no era de la linea que indicabas

Código C++:
Ver original
  1. //linea 34, te dejas el color de fondo
  2. textout_ex(screen, font, "Teclea dos cifras (00 a 99)", 15,lineaEscritura, palette_color[13]);

Código C++:
Ver original
  1. //linea 37, te vuelves a dejar el color de fondo
  2. textprintf_ex(screen, font, 235, lineaEscritura, palette_color[13], "%c", tecla1);

Todos los errores que hacen referencia a llamadas textprintf_ex con error 'invalid conversion from char* to int' se refieren a que te dejas el color de fondo (revisa tu manual de allegro, el color de fondo va despues del color de texto y antes del texto).

Y todos los que hacen referencia a 'textout_ex' con 'too few arguments' son que te dejas el color de fondo al final de la llamada.

Saludos
vosk

Etiquetas: funcion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:38.