Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Calvin11

#1
Programación C/C++ / Leer por teclado en allegro
31 Octubre 2016, 03:24 AM
Quisiera saber como leer por teclado en allegro. Estoy haciendo un juego de trivia y necesito ingresar el nombre del jugador pero no hay forma de que me salga.
Esto es lo que encontre pero no funciona:
Código (cpp) [Seleccionar]

char* recibir_cadena(int x,int y,int color, int max)
{
char lt
do
{
lt=readkey();
if( lt>='a' && lt<='z')
{
textprintf(screen,font,x+12*i,y,color,"%c",lt);
cadena[i]=lt;
cadena[i+1]='\0';
i++;
}
}while( lt!=13 && i<max );
return cadena;
}

Pero no entiendo como aplicarlo en este pedazo de codigo del juego:
Código (cpp) [Seleccionar]

void nombre(){
     int band1=0,x,y,color,maxi=40;
     char letra, letras [80], nom [40];
     BITMAP *buffer = create_bitmap(800,480);
     BITMAP *nombre1 = load_bitmap("NOMBRE1.bmp",NULL);
     BITMAP *nombre2 = load_bitmap("NOMBRE2.bmp",NULL);
     BITMAP *cursor = load_bitmap("cursor.bmp",NULL);
     while(band1!=1){
          //Esto es para cuando el cursor apunte en el NOMBRE2.bmp
          if(mouse_x > 20 && mouse_x < 70 && mouse_y > 30 && mouse_y < 70){
               blit(nombre2,buffer,0,0,0,0,800,480);
               if(mouse_b & 1){
                    band1=1;
               }
          }
          else{
               //Esto es para cuando el cursor apunte en el NOMBRE1.bmp
               blit(nombre1,buffer,0,0,0,0,800,480);
          }


          //Esto es para que aparezca el mouse en pantalla en cualquiera de las situaciones de NOMBRE
          masked_blit(cursor,buffer,0,0,mouse_x,mouse_y,32,32);
          blit(buffer,screen,0,0,0,0,800,480);
     }

}
#2
Hola, soy nuevo en este foro, espero que puedan ayudarme.
Mi pregunta es cómo hacer para generar cadenas de caracteres de manera aleatoria pero sin que se repita.
La cuestión es que estoy haciendo un juego de trivia pero cuando ingreso el jugador y le hago las pregunta, siempre y cuando responda bien, sigue respondiendo pero a veces vuelve a repetir la pregunta anterior.
Aquí les dejo un pedazo de código con el struct para que vean que es lo que les quiero decir:
Código (cpp) [Seleccionar]
struct pregunta{
    char pregunta[100];
    char opciones[5][40];
    int correcta;
};
void jugar(){
    pregunta A[21];
    FILE *pa;
    int n=0;
    if((pa=fopen("ciencia.dat","rb"))==NULL){
         cout<<"Error al abrir el archivo";
         return;
    }
    char jugador[40];
    int lvl=0,vida=1,rand_preg=0,rand_cat=0,respuesta=0;
    fflush(stdin);
    cout<<"\nNombre del participante: ";gets(jugador);
    while(vida!=0){
         srand (time(NULL));
         rand_cat = rand() % 5;
         srand (time(NULL));
         if(rand_cat==1){
              rand_preg=rand() % 20;
              cout<<"\nPregunta:"<<A[rand_preg].pregunta;
              cout<<"\nOpcion 1:"<<A[rand_preg].opciones[0];
              cout<<"\nOpcion 2:"<<A[rand_preg].opciones[1];
              cout<<"\nOpcion 3:"<<A[rand_preg].opciones[2];
              cout<<"\nOpcion 4:"<<A[rand_preg].opciones[3];
              cout<<"\nRESPUESTAAAAA:";cin>>respuesta;
              if(respuesta==A[rand_preg].correcta){
                   lvl++;
              }
              else{
                   cout<<"\nPerdiste";
                   vida=0;
              }
        }
    }fclose(pa);
}

Desde ya muchas gracias. ;D