elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  generar números aleatorios en dev c
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: generar números aleatorios en dev c  (Leído 13,656 veces)
Quake-man

Desconectado Desconectado

Mensajes: 51


Ver Perfil
generar números aleatorios en dev c
« 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.


En línea

Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: generar números aleatorios en dev c
« Respuesta #1 en: 26 Agosto 2011, 13:26 pm »

Puedes usar srand/rand igualmente; de 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. }


En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
Quake-man

Desconectado Desconectado

Mensajes: 51


Ver Perfil
Re: generar números aleatorios en dev c
« Respuesta #2 en: 26 Agosto 2011, 14:05 pm »

pero no me genera el ejecutable
En línea

Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: generar números aleatorios en dev c
« Respuesta #3 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.
En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
Quake-man

Desconectado Desconectado

Mensajes: 51


Ver Perfil
Re: generar números aleatorios en dev c
« Respuesta #4 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á
En línea

Quake-man

Desconectado Desconectado

Mensajes: 51


Ver Perfil
Re: generar números aleatorios en dev c
« Respuesta #5 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;

}

}
}
}

En línea

Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: generar números aleatorios en dev c
« Respuesta #6 en: 26 Agosto 2011, 14:21 pm »

¿Estás compilando en Debug o Release? ¿Qué IDE y qué compilador usas?
En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
Quake-man

Desconectado Desconectado

Mensajes: 51


Ver Perfil
Re: generar números aleatorios en dev c
« Respuesta #7 en: 26 Agosto 2011, 14:33 pm »

uso dev c++
En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: generar números aleatorios en dev c
« Respuesta #8 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!¡.
En línea

The Dark Shadow is my passion.
Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: generar números aleatorios en dev c
« Respuesta #9 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.
En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines