Programación Específica > Allegro

 Ayudenme A Crear Un Videojuego

<< < (2/2)

Enko:
Tu tablero podria ser un por ejemplo

--- Código: Text --- char Tablero[10][10];  
Luego lo rellenas con caracteres de la forma que prefieras, desde un archovo o bien de otra manera.


--- Código: Text --- *   ********  *********  *********              ********   ********   ** *****    *********  *  
Por si no se entiende , ES un laberinto.

Y luego para llenarlo en la pantalla:

--- Código: Text --- for (x=0; x&#60;10; x++)   for (y=0; y&#60;10; y++)     if(Tablero[x,y] == '*')  DibujarMuro(x*dX,y+dY);  
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:

denis1601:
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:

Enko:
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.

denis1601:
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();

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa