Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Quake-man en 26 Agosto 2011, 12:44 pm



Título: generar números aleatorios en dev c
Publicado por: Quake-man en 26 Agosto 2011, 12:44 pm
Hola el caso es que no se como generar números aleatorios en dev c ya que estoy utilizando sdl pero antes en c en programas de consola hacia random(100); por ejemplo y ya esta pero asi no se como se hace intente srand(time(NULL)); etc pero no funciona...... quisiera que me ayuden porfavor.


Título: Re: generar números aleatorios en dev c
Publicado por: Queta en 26 Agosto 2011, 13:26 pm
Puedes usar srand/rand igualmente; de http://www.cplusplus.com/reference/clibrary/cstdlib/srand/ (http://www.cplusplus.com/reference/clibrary/cstdlib/srand/):

Código
  1. /* srand example */
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5.  
  6. int main ()
  7. {
  8.  printf ("First number: %d\n", rand() % 100);
  9.  srand ( time(NULL) );
  10.  printf ("Random number: %d\n", rand() % 100);
  11.  srand ( 1 );
  12.  printf ("Again the first number: %d\n", rand() %100);
  13.  
  14.  return 0;
  15. }


Título: Re: generar números aleatorios en dev c
Publicado por: Quake-man en 26 Agosto 2011, 14:05 pm
pero no me genera el ejecutable


Título: Re: generar números aleatorios en dev c
Publicado por: Queta en 26 Agosto 2011, 14:11 pm
¿Te da errores de compilación? ¿Nos puedes dar alguna pista más? Sin información no haremos nada.


Título: Re: generar números aleatorios en dev c
Publicado por: Quake-man en 26 Agosto 2011, 14:13 pm
me lo compila sin problemas pero después voy a la carpeta donde esta el ejecutable para probarlo y no está


Título: Re: generar números aleatorios en dev c
Publicado por: Quake-man en 26 Agosto 2011, 14:14 pm
este es el codigo es para un juegito quiero que genere numeros aleatorios y que si se por ejemplo si es numero se encuentra entre 50 y 10 que el muñequito se mueva a la derecha por ejemplo....







#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>
#include "SDL/SDL_thread.h"
#include<time.h>







int main(int argc, char *argv[])

{
//declaración de variables

   
   
SDL_Surface * screen;
SDL_Surface * fondo;
SDL_Surface * fondo1;
SDL_Surface * fondo2;
SDL_Surface * fondo3;
SDL_Surface * fondo4;
SDL_Surface * fondo5;
SDL_Surface * fondo6;
SDL_Surface * disparo;
SDL_Surface * frameact;
int b;
int hora = time(NULL);

SDL_Event event;
 
int salir=0;

SDL_Rect pos;
SDL_Rect  posd;
SDL_Rect  posnave;
SDL_Rect pos2;


//inicialización de SDL

if(SDL_Init(SDL_INIT_VIDEO)<0)
{
printf("ERROR: %s \n", SDL_GetError());
return 1;
}
screen = SDL_SetVideoMode(580,470,24, SDL_SWSURFACE);
if (screen==NULL){
printf("Error: %s \n", SDL_GetError());
return 1;
}


//parte logica
 
pos.x=0;
pos.y=0;
pos.w=56;
pos.h=81;

pos2.x=300;
pos2.y=300;
pos2.w=275;
pos2.h=325;

posd.w=45;
posd.h=20;


fondo = SDL_LoadBMP ("pacman_central.bmp");
fondo1 = SDL_LoadBMP ("pacman_arriba.bmp");
fondo2 = SDL_LoadBMP ("pacman_abajo.bmp");
fondo3 = SDL_LoadBMP ("pacman_derecha.bmp");
fondo4 = SDL_LoadBMP ("pacman_izquierda.bmp");
fondo5 = SDL_LoadBMP ("pacman.bmp");
disparo = SDL_LoadBMP ("shoot.bmp");
SDL_BlitSurface (fondo5 , NULL, screen, &pos2);
SDL_Flip (screen);

//loop principal
while (! salir){
     
SDL_PollEvent(&event);




//si se pulso una tecla
if (event.type == SDL_KEYDOWN){
               
 
if (event.key.keysym.sym == SDLK_ESCAPE){
salir=1;                         
                         
}
   
    b=Srand(hora);
    if (b>0 && b<25)pos2.x++;         
    if (b>25 && b<35 ) pos2.x--;
    if (b>40 && b<45) pos2.y++;
    if (b>50 && b<60)pos2.y--;
                 
//disparo


if (event.key.keysym.sym == SDLK_SPACE){
posd.x=pos.x+25;
posd.y=pos.y-18;
if (frameact==fondo3){
while (posd.x<=640){
SDL_BlitSurface (disparo , NULL, screen, &posd);
SDL_Flip (screen);
      posd.x=posd.x + 8;
      if( posd.x > pos2.x && posd.x < ( pos2.x + pos2.w ) ) if( posd.y > pos2.y && posd.y < ( pos2.y + pos2.h ) )  salir=1;
     
}
}
if (frameact==fondo4){
while (posd.x>=0){
SDL_BlitSurface (disparo , NULL, screen, &posd);
SDL_Flip (screen);
      posd.x=posd.x - 6;
      if( posd.x > pos2.x && posd.x < ( pos2.x + pos2.w ) ) if( posd.y > pos2.y && posd.y < ( pos2.y + pos2.h ) )  salir=1;
     
}
}
}
//fin disparo
//direcciones de movimiento 
                   
if (event.key.keysym.sym == SDLK_RIGHT){
frameact=fondo3;
SDL_BlitSurface (fondo3 , NULL, screen, &pos);
SDL_Flip (screen);
if( pos2.x > pos.x && pos2.x < ( pos.x + pos.w ) ) if( pos2.y > pos.y && pos2.y < ( pos.y + pos.h ) )  salir=1;
pos.x=pos.x + 2;


}
if (event.key.keysym.sym == SDLK_LEFT){
frameact=fondo4;
SDL_BlitSurface (fondo4 , NULL, screen, &pos);
SDL_Flip (screen);
if( pos2.x > pos.x && pos2.x < ( pos.x + pos.w ) ) if( pos2.y > pos.y && pos2.y < ( pos.y + pos.h ) )  salir=1;
pos.x = pos.x - 2;

}


if (event.key.keysym.sym == SDLK_UP){
frameact=fondo1;
SDL_BlitSurface (fondo1 , NULL, screen, &pos);
SDL_Flip (screen);
if( pos2.x > pos.x && pos2.x < ( pos.x + pos.w ) ) if( pos2.y > pos.y && pos2.y < ( pos.y + pos.h ) )  salir=1;
     
pos.y = pos.y - 2;

}


if (event.key.keysym.sym == SDLK_DOWN){
frameact=fondo2;
SDL_BlitSurface (fondo2 , NULL, screen, &pos);
SDL_Flip (screen);
if( pos.x > pos2.x && pos.x < ( pos2.x + pos2.w ) ) if( pos.y > pos2.y && pos.y < ( pos2.y + pos2.h ) )  salir=1;
     
pos.y = pos.y + 2;

}

}
}
}



Título: Re: generar números aleatorios en dev c
Publicado por: Queta en 26 Agosto 2011, 14:21 pm
¿Estás compilando en Debug o Release? ¿Qué IDE y qué compilador usas?


Título: Re: generar números aleatorios en dev c
Publicado por: Quake-man en 26 Agosto 2011, 14:33 pm
uso dev c++


Título: Re: generar números aleatorios en dev c
Publicado por: BlackZeroX en 26 Agosto 2011, 19:16 pm
.
Puedes usar para generar numeros aleatorios entre A y B este codigo.

Código
  1.  
  2. #include <stdlib.h>
  3. //#include <time.h>
  4. #define swap( One, Two) One ^= Two; Two ^= One; One ^= Two;
  5.  
  6. int randNumber(int iMin, int iMax) {
  7.    if (iMin > iMax) {
  8.        swap(iMin, iMax);   //  macro 3 lineas.
  9.    }
  10.    //srand(time(NULL)); // No usado debido a que genera numeros repetidos si se usa la funcion muy seguida en un lapso de tiempo muy corto...
  11.    return (rand() % (iMax - (iMin - 1) ) + iMin);
  12. }
  13.  
  14.  

Dulces Lunas!¡.


Título: Re: generar números aleatorios en dev c
Publicado por: Queta en 26 Agosto 2011, 20:43 pm
BlackZeroX▓▓▒▒░░, me parece que su problema no es este :xD. Igualmente, como no nos dé más información, puede responder mis preguntas si quiere, no solucionaremos esto nunca.


Título: Re: generar números aleatorios en dev c
Publicado por: Quake-man en 26 Agosto 2011, 22:54 pm
bueno ya lo solucione.