SoloCodigo

Programación Específica => Programación de Videojuegos => Allegro => Mensaje iniciado por: denis1601 en Lunes 6 de Septiembre de 2004, 18:18

Título: Ayudenme A Crear Un Videojuego
Publicado por: denis1601 en Lunes 6 de Septiembre de 2004, 18:18
hola soy un principiante en el manejo de allegro y necesito una base para poder crear un videojuego
primero que todo necesito imprimir una matriz y una paleta de  opciones con el cual podemos rellenar
dicha matriz en presumidas cuentas lo que tengo que hacer es crear un tablero el cual se le pueda dar
propiedades cada vez que se inicie un nuevo juego
 :kicking:  :whistling:
Título: Re: Ayudenme A Crear Un Videojuego
Publicado por: JuanK en Martes 7 de Septiembre de 2004, 16:15
y en que necesiats ayuda?
Título: Re: Ayudenme A Crear Un Videojuego
Publicado por: denis1601 en Martes 7 de Septiembre de 2004, 17:14
pues el juego se trata como una especie de pacman donde el usuario crea su propio laberinto solo que en vez de pacman el usuario maneja cinco ratones y en vez de fantasmas hay un gato el cual puede aparecer y desaparecer el tablero puede ser modificado por el usuario colocando diversos obstaculos y para eso tengo que crear la paleta  con diferentes opciones como la llegada la salida y obstaculos y entonces lo primero que quiero hacer es dibujar el tablero y la paleta de opciones la cual al darle click a alguna opcion pueda aparecer en el lugar que yo quiera en el tablero todo esto lo debo de hacer en allegro y con matrices dinamicas.
¿como lo hago?  :kicking:  :lightsabre:  :devil:  :(  :comp:
Título: Re: Ayudenme A Crear Un Videojuego
Publicado por: Amilius en Martes 7 de Septiembre de 2004, 18:36
Cita de: "denis1601"
pues el juego se trata como una especie de pacman donde el usuario crea su propio laberinto solo que en vez de pacman el usuario maneja cinco ratones y en vez de fantasmas hay un gato el cual puede aparecer y desaparecer el tablero puede ser modificado por el usuario colocando diversos obstaculos y para eso tengo que crear la paleta  con diferentes opciones como la llegada la salida y obstaculos y entonces lo primero que quiero hacer es dibujar el tablero y la paleta de opciones la cual al darle click a alguna opcion pueda aparecer en el lugar que yo quiera en el tablero todo esto lo debo de hacer en allegro y con matrices dinamicas.
¿como lo hago?  :kicking:  :lightsabre:  :devil:  :(  :comp:
NUNCA describas a tu juego comparandolo con otro conocido.

"Es un juego de supervivencia de roedores que serán perseguidos a muerte por su enemigo natural, el jugador deberá preservar la vida de estos pequeños tanto como le sea posible para que no sean merendados por el maloso gato"  :rolleyes:  :rolleyes:  :rolleyes:

P.D.

Me parece una idea muy buena. ¿Pueden llamar al perro para que asuste al gato?  :D
Título: Re: Ayudenme A Crear Un Videojuego
Publicado por: denis1601 en Martes 7 de Septiembre de 2004, 19:54
pues claro que se puede hacer esto seria como una especie de comodin para los ratones pero necesito saber como imprimo la matriz en la cual voy a correr mi juego pues como ya debes saber soy un principiante en allegro :hola: :rolleyes:  :kicking:
Título: Re: Ayudenme A Crear Un Videojuego
Publicado por: Enko en Miércoles 8 de Septiembre de 2004, 03:48
Tu tablero podria ser un por ejemplo
Código: Text
  1.  
  2. char Tablero[10][10];
  3.  
  4.  

Luego lo rellenas con caracteres de la forma que prefieras, desde un archovo o bien de otra manera.

Código: Text
  1.  
  2. *   *******
  3. *  ********
  4. *  ********
  5. *              *
  6. *******   *
  7. *******   *
  8. * *****    *
  9. ********  *
  10.  
  11.  

Por si no se entiende , ES un laberinto.

Y luego para llenarlo en la pantalla:
Código: Text
  1.  
  2. for (x=0; x<10; x++)
  3.    for (y=0; y<10; y++)
  4.      if(Tablero[x,y] == '*')  DibujarMuro(x*dX,y+dY);
  5.  
  6.  

DibujarMuro seria tu funcion para volcar una imagen en un  buffer o pantalla.
dX,dY serian llos coeficientes que relacionan la resolucion de la pantalla con  el tamaño del tile(esa imagen pequeñita que se repite todo el tiempo) y la cantidad de elementos del tablero.

La longitud del tablero en sentido horizontal por la longitud del tile en sentido horizontal tienen que dar más o menos a tu gusto la resolucion de la pantalla en sentido horizontal.

Por ejemplo si estas utilizando una resolucion de 800x600 , tus tiles son del tamaño 80x60  y  tu tablero es de 10x10. (Realmente es muy grande) tu dX y dY se vuelven 80 y 60 respectivamente.


 :hola:
Título: Re: Ayudenme A Crear Un Videojuego
Publicado por: denis1601 en Miércoles 8 de Septiembre de 2004, 16:57
gracias por esa ayuda pero lo que necesito es que las diviciones se hagan por medio de rectas y este ciclo me puede servir pero no se como aplicarlo para que me vaya generando las rectas  :comp:  :whistling:  :unsure:
Título: Re: Ayudenme A Crear Un Videojuego
Publicado por: Enko en Jueves 9 de Septiembre de 2004, 01:30
Realmente no se muy bien lo que quieres hacer asi que te dejo un archivo adjunto con un Mapa que supongo que es lo que tu necesitas.
Si es eso bien, sino ya se ve más adelante.

El dibujo no es nada creativo :( pero ojala sirva para sacar la duda.
Título: Re: Ayudenme A Crear Un Videojuego
Publicado por: denis1601 en Jueves 9 de Septiembre de 2004, 20:33
gracias ya imprime la matriz y el tablero de opciones ahora lo que necesito es saber como hago para arrastrar los objetos de la paleta conel mouse hasta mi matriz.
bueno pero ahi les mando lo que llevo del codigo


#include<allegro.h>
void tablero(void)
{
  int i;
  for(i=9;i<599;i+=50)
    line(screen,i,0,i,599,0);
  for(i=0;i<599;i+=50)
    line(screen,9,i,599,i,0);
}
void presionar(int *bn,int *p)
{
  int x,y;
  rectfill(screen,30,285,80,335,27);
  line(screen,30,285,80,285,0);
  line(screen,80,285,85,280,0);
  rect(screen,30,280,85,335,0);
  circlefill(screen,56,309,20,0);  
  x=mouse_x;
  y=mouse_y;
  if((x>30)&&(x<85))
    if((y>280)&&(y<335))
        *bn=1;
  *p=0;
}
void teclas(int l)
{
  if(l==1)
  {
    rectfill(screen,30,280,85,335,24);
    rect(screen,30,280,85,335,0);
    circlefill(screen,57,307,20,0);
  }
  else
  {
  rectfill(screen,110,280,165,335,24);
  rect(screen,110,280,165,335,0);
  rectfill(screen,115,205,160,250,40);
  }     
}
int main(void)
{
  int x,y,press=0,n=0;
  allegro_init();
  set_gfx_mode(GFX_AUTODETECT_WINDOWED,800,600,0,0);
  install_keyboard();
  install_mouse();
  install_timer();
//---------------------------------------------------------------
  rectfill(screen,0,0,799,599,15);
//---------------------------------------------------------------
  rectfill(screen,0,0,199,599,30);
  rectfill(screen,5,5,194,594,27);
  line(screen,0,0,5,5,27);
  line(screen,0,199,5,194,27);
  line(screen,199,599,194,594,27);
  line(screen,0,599,5,594,27);
//---------------------------------------------------------------
  rectfill(screen,30,200,85,255,24);
  rect(screen,30,200,85,255,0);
//---------------------------------------------------------------
  rectfill(screen,110,200,165,255,24);
  rect(screen,110,200,165,255,0);
//---------------------------------------------------------------
  teclas(1);
//---------------------------------------------------------------
  teclas(2);
//---------------------------------------------------------------
  tablero();
//---------------------------------------------------------------
  scare_mouse();
  show_mouse(screen);
  while(!key[KEY_ESC])
  {
    if(mouse_b&1)
      press=1;
    else
      if(n==0)
        if(press==1)
          presionar(&n,&press);
   if(mouse_b&1)
      press=1;
    else
      if(n==1)
        if(press==1)
        {
     x=mouse_x;
     y=mouse_y;
     teclas(1);
     circlefill(screen,x,y,20,0);
     n=0;
     press=0;
        }    
  }
  allegro_exit();
}
END_OF_MAIN();