Comunidad de diseño web y desarrollo en internet online

FeNtO tetris

Citar            
MensajeEscrito el 23 Ene 2006 06:25 pm
este es un tetris que hice en preparatoria (:cry: hace muchoooo tiempo atras), lo encontre urando en mis archivos, la version original es de 100 lineas unicamente lo demas es paja , es optimizable, pero me da flojera, genera graficos y todo

asi que para que no muera en el olvido lo comparto con ustedes

Pd.- no haban caso a los comentarios "raros" eran para recordarme a mi mismo cosas ;)

Código :

/*

      APUNTES
El corrimiento es de 0 a 1 osea de menor a mayor
se manejan cuatro arreglos dos para el display y dos para la figura
*/

#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <graphics.h>
#include <stdlib.h>

#define ANCHO 10
#define LARGO 20
#define ANCHO_FIG 15
#define LARGO_FIG 15
#define COL_PANT 200
#define FIL_PANT 100
#define XSIG 400
#define YSIG 200
#define LIMITE 10000


#define CIERTO 1
#define FALSO 0


/*variables globales*/

struct matriz_log{
  char lleno;

}mat_log[ANCHO][LARGO],mat_log2[ANCHO][LARGO];
//el largo y el ancho se deben de cambiar en ambos arreglos

struct matriz_fig{
  int lleno;

  /*char col,fil;*/
}fig_log[4][4];

int cuadrado[16]={0,0,0,0,
         0,1,1,0,
         0,1,1,0,
         0,0,0,0};
int vara[16]={0,1,0,0,
         0,1,0,0,
         0,1,0,0,
         0,1,0,0};

int ele[16]={0,1,0,0,
        0,1,0,0,
        0,1,1,0,
        0,0,0,0};
int eleinv[16]={0,0,1,0,
             0,0,1,0,
             0,1,1,0,
             0,0,0,0};
int t[16]={0,0,0,0,
         1,1,1,0,
         0,1,0,0,
         0,0,0,0};
int  z[16]={0,0,0,0,
        1,1,0,0,
        0,1,1,0,
        0,0,0,0};

int s[16]={0,0,0,0,
        0,1,1,0,
        1,1,0,0,
        0,0,0,0};

int sonido[16]={500,450,55,562,
          910,600,400,800,
          200,600,1500,1000,
          500,2000,1000,1500};
//,vara,ele,eleinv,t,z,s;


void *p_image;
int xfig=(ANCHO/2)-2,yfig=-3;//las posiciones son de acuerdo a la matriz no display
int cuenta_lineas=0;
int counter=0,limite=LIMITE;
/*procedimientos*/

void suena(int ret)
{
  int i;

  for (i=0;i<16;i++)
  {
    sound(sonido[i]);
    delay(ret);
  }
  nosound();
}
void FENTO(int x, int y)
{
    //cabeza
  line(x,y,x,y+15);
  //pico
  line(x+5,y,x+10,y+3);
  line(x+10,y+3,x+5,y+6);
  //cuello
  line(x+5,y+8,x+5,y+15);
  //alas izquierda
  line(x-5,y+15,x-15,y+3);

  line(x-15,y+3,x-30,y+3);
  line(x-18,y+8,x-30,y+8);
  line(x-21,y+13,x-30,y+13);

  line(x-21,y+15,x-5,y+28);

  //alas derecha
  line(x+10,y+15,x+20,y+3);

  line(x+20,y+3,x+35,y+3);
  line(x+23,y+8,x+35,y+8);
  line(x+26,y+13,x+35,y+13);

  line(x+26,y+15,x+10,y+28);

  //patas

  line(x,y+20,x-3,y+23);
  line(x,y+20,x+3,y+23);
  line(x,y+20,x,y+23);

  line(x+7,y+20,x+4,y+23);
  line(x+7,y+20,x+10,y+23);
  line(x+7,y+20,x+7,y+23);

  //cola

  line(x-5,y+30,x-8,y+35);
  line(x,y+30,x-3,y+35);
  line(x+3,y+30,x+3,y+35);
  line(x+6,y+30,x+9,y+35);
  line(x+10,y+30,x+13,y+35);

  line(x-10,y+40,x-15,y+50);
  line(x-5,y+40,x-8,y+50);
  line(x,y+40,x,y+50);
  //line(x+3,y+40,x+3,y+50);
  line(x+6,y+40,x+6,y+50);
  line(x+10,y+40,x+15,y+50);
  line(x+15,y+40,x+22,y+50);
  settextstyle(0,0,1);
  outtextxy(x-15,y+55,"FeNtO");


}
void *copia(int x,int y, int x2,int y2)
{
   unsigned size;
   void *auxiliar;

   size = imagesize(x,y,x2,y2);
   auxiliar = malloc(size);
   getimage(x,y,x2,y2,auxiliar);
   return auxiliar;
}

void baja(int x,int y, int x2, int y2)
{
   setcolor(8);
   line(x,y,x2,y);
   line(x,y,x,y2);
   setcolor(15);
   line(x,y2,x2,y2);
   line(x2,y,x2,y2);
}

void alza(int x,int y, int x2, int y2)
{
   setcolor(15);
   line(x,y,x2,y);
   line(x,y,x,y2);
   setcolor(8);
   line(x,y2,x2,y2);
   line(x2,y,x2,y2);
}
void boton(int x,int y)
{
   setfillstyle(1,7);
   bar(x,y,x+ANCHO_FIG-1,y+LARGO_FIG-1);
   alza(x,y,x+ANCHO_FIG-1,y+LARGO_FIG-1);



}
void boton_car(int x,int y,int x2,int y2)
{
   setfillstyle(1,7);
   bar(x,y,x2,y2);
   alza(x,y,x2,y2);


}
void caratula( int x,int y )
{
   int ancho=70,largo=70;

  //boton_car(x,y,x+ancho,y+largo);
  setlinestyle(0,0,2);
  setbkcolor(3);
  baja(XSIG-5,YSIG-5,XSIG+ancho-10,YSIG+largo-10);
  setlinestyle(0,0,1);

  //TEXTO

  settextstyle(5,0,2);
  outtextxy(XSIG,YSIG+largo-10,"Siguiente");
  baja(60,180,120,205);
  outtextxy(60,200,"Velocidad");//las coord para vel 70 175
  outtextxy(70,175,"0");
  baja(60,280,120,305);
  outtextxy(60,300,"Lineas");//las coordenadas pra las lineas es 80,275
  outtextxy(70,275,"0");
  FENTO(290,10);
  settextstyle(0,0,1);
  outtextxy(200,420,"[email protected]");
  settextstyle(5,1,1);
  outtextxy(600,50,"Jorge Fernando Ramirez Huerta");

}
void pausa(void)
{
  void *temporal;

  temporal =copia(COL_PANT,FIL_PANT,COL_PANT+(ANCHO*ANCHO_FIG),FIL_PANT+(LARGO*LARGO_FIG));
  boton_car(COL_PANT,FIL_PANT,COL_PANT+(ANCHO*ANCHO_FIG),FIL_PANT+(LARGO*LARGO_FIG));
  setcolor(11);
  settextstyle(5,0,2);
  outtextxy(COL_PANT+(((ANCHO/2)-3)*ANCHO_FIG),FIL_PANT+(((LARGO/2)-2)*LARGO_FIG),"Pausa");
  getch();
  putimage(COL_PANT,FIL_PANT,temporal,COPY_PUT);

  free(temporal);
  /*#define ANCHO 10
#define LARGO 20
#define ANCHO_FIG 15
#define LARGO_FIG 15
#define COL_PANT 200
#define FIL_PANT 100*/
}
void muestra_lineas()
{
   char string[25];


   itoa(cuenta_lineas, string, 10);
   settextstyle(5,0,2);
  outtextxy(70,275,string);
}
void muestra_vel()
{
 char string[25];
 int temporal;

  temporal=(LIMITE-limite);

  if (temporal!=0)
   temporal/=500;
   itoa(temporal, string, 10);
   settextstyle(5,0,2);
  outtextxy(70,175,string);
}
/*se supone que el display ya funciona falta checarlo al final*/
/*por cierto el display toma como base la matriz logica */
void display(int x, int y)
{
   int col,fil;

   for (fil=0; fil<LARGO; fil++)
     for (col=0;col<ANCHO;col++)
      if (mat_log[col][fil].lleno!=mat_log2[col][fil].lleno)
      {
       putimage(x+(col*ANCHO_FIG),y+(fil*LARGO_FIG),p_image,XOR_PUT);//checar po que es aqui como se va a desplegar
       mat_log2[col][fil].lleno=mat_log[col][fil].lleno;
      }

}
/*se hace el borrado de la fila en la matriz normal
y en corrimiento se bacia la fila anterior*/


/*hasta aqui empieza las rutinas por que lo anterior solo es paja*/

void asigna_figura(int *op)
{

  //int op;
  int col,fil;



  for (fil=0; fil<4; fil++)
  {
     for (col=0;col<4;col++)
     {
   switch (*op){

     case 0:
      fig_log[col][fil].lleno=z[(fil*4)+col];
      break;
     case 1:
      fig_log[col][fil].lleno=s[(fil*4)+col];
      break;
     case 2:
      fig_log[col][fil].lleno=t[(fil*4)+col];
      break;
     case 3:
      fig_log[col][fil].lleno=ele[(fil*4)+col];
      break;
     case 4:
      fig_log[col][fil].lleno=eleinv[(fil*4)+col];
      break;
     case 5:
      fig_log[col][fil].lleno=cuadrado[(fil*4)+col];
      break;
     case 6:
      fig_log[col][fil].lleno=vara[(fil*4)+col];
      break;
     }
     }

   }
   *op=random(7);


}
/*por medio de esto te regresa cierto si el movimiento es posible
y te regresa falso si el movimiento no es posible*/

char checar_mov(void)
{
 int col,fil;

 for (fil=yfig;fil<yfig+4;fil++)
      for(col=xfig;col<xfig+4;col++)
    /*if ( ((fig_log[col-xfig][fil-yfig].lleno==CIERTO)&&(
      mat_log[col][fil].lleno==CIERTO))||
         (col>ANCHO)||(col<1)||(fil>LARGO)
       )*/
       if (((fig_log[col-xfig][fil-yfig].lleno==CIERTO)&&
       (mat_log[col][fil].lleno==CIERTO)
      )||
      ((fig_log[col-xfig][fil-yfig].lleno==CIERTO)&&
       (
       (col>ANCHO-1)||
       (col<0)
       )
      )||
      ((fig_log[col-xfig][fil-yfig].lleno==CIERTO)&&
       (fil>LARGO-1)
      )
          )

       return FALSO;
 return CIERTO;
}

/*la asignacion de las figuras ya funciona ahora viene el rotamiento*/
/*el rotamiento no incluye el display debes checar si depsues hace falta aqui*/

void rota_fig(void)
{
   matriz_fig auxiliar[4][4],auxiliar2[4][4];


   int col,fil;
   int col_aux,fil_aux;
   char bandera=CIERTO;
   int i,j;
   int xtmp;
   char bandera_corre=FALSO;

   xtmp=xfig;

      /*rotamiento*/
      //almacenamiento de los valores primero auxiliar el segubbdo rotado

   for (fil=0;fil<4;fil++)
      for(col=0;col<4;col++)
      {
   auxiliar[col][fil].lleno=fig_log[col][fil].lleno;
    auxiliar2[3-fil][col].lleno=fig_log[col][fil].lleno;

      }

   for (fil=0;fil<4;fil++)
      for(col=0;col<4;col++)
    fig_log[col][fil].lleno=auxiliar2[col][fil].lleno;
    //checa las posiciones posibles para una posible corrimiento


   //if (xfig<0)
      for (;xfig<=0; xfig++)
       if (checar_mov()==CIERTO)
       {
    xtmp=xfig;
    xfig=1;
       }

       for (;xfig>=(ANCHO-4); xfig--)
       if (checar_mov()==CIERTO)
       {
    xtmp=xfig;
    xfig=(ANCHO-5);
       }

       xfig=xtmp;
   //else

   if (checar_mov()==FALSO)
   {
    for (fil=0;fil<4;fil++)
      for(col=0;col<4;col++)
    fig_log[col][fil].lleno=auxiliar[col][fil].lleno;
   }
   /*else
   {

    for (fil=0;fil<4;fil++)
       for(col=0;col<4;col++)
      fig_log[col][fil].lleno=auxiliar2[col][fil].lleno;
   }*/



}

void borrado(int fil)
{
 int i;

 for (i=0;i<ANCHO;i++)
 {
     mat_log[i][fil].lleno=FALSO;
     display(COL_PANT,FIL_PANT);
     delay(10);
 }
}


/*el corrimeitto aun no esta terminado asi que ojno*/


void corrimiento(int fil)
{
  int i,j;

  for (i=fil;i>0;i--)
     for (j=0;j<ANCHO;j++)
    mat_log[j][i].lleno=mat_log[j][i-1].lleno;

  for (j=0;j<ANCHO;j++)
    mat_log[j][0].lleno=FALSO;
}

/*vacia la matriz principal*/
/*recuerda que los procedimientos no muestran resultados cisuales
solo hacen lo que deben de hacer*/

void vacia_mat(void)
{
 int fil,col;

 for (fil=0;fil<LARGO;fil++)
      for(col=0;col<ANCHO;col++)
      {
    mat_log[col][fil].lleno=FALSO;
    display(COL_PANT,FIL_PANT);
    delay(5);
      }
}
void llena_mat(void)
{
 int fil,col;

 for (fil=0;fil<LARGO;fil++)
      for(col=0;col<ANCHO;col++)
      {
    mat_log[col][fil].lleno=CIERTO;
    display(COL_PANT,FIL_PANT);
    delay(5);
      }
}
/*esta hacioendo el chequeo de que no haya nonguna fila completa por que
hace los corrimeitnos y borrados*/

void checa(void)
{
  int col,fil;
  char bandera,bandera_fin=FALSO;


  for (fil=0;fil<LARGO;fil++)
  {
    bandera=CIERTO;
    bandera_fin=FALSO;

    for (col=0;col<ANCHO;col++)
      if (mat_log[col][fil].lleno==FALSO)
      {
   bandera=FALSO;
   bandera_fin=CIERTO;
       }
    if (bandera==CIERTO)
    {
       borrado(fil);
       //display(COL_PANT,FIL_PANT);
       delay(100);
       suena(5);//ojo aqui va el sonido
       corrimiento(fil);
       display(COL_PANT,FIL_PANT);
       delay(100);
       fil=0;
       setcolor(0);
       muestra_lineas();
       cuenta_lineas++;
       setcolor(15);
       muestra_lineas();
       if ((cuenta_lineas%3)==0)
       {
     setcolor(0);
     muestra_vel();
     limite-=500;
     setcolor(15);
     muestra_vel();
     //aqui se debe de hacer el despliegue del nivel
     //y aqui el despliegue de las lineas echas
       }

    }
    /*if ((fil<1)&&(bandera_fin==CIERTO))
       {
     vacia_mat();
     display(COL_PANT,FIL_PANT);
       }*/
  }

}

/*quita los valores de la figura de la matriz principal*/
void quita_fig(void)
{
 int fil,col;

 for (col=xfig;col<xfig+4;col++)
      for(fil=yfig;fil<yfig+4;fil++)
   if (fil>=0)
     if (fig_log[col-xfig][fil-yfig].lleno==CIERTO)
        mat_log[col][fil].lleno=FALSO;
}
/*pone los valores de la figura en la matriz principal*/
void pon_fig(void)
{
 int fil,col;

 for (col=xfig;col<xfig+4;col++)
      for(fil=yfig;fil<yfig+4;fil++)
    if (fil>=0)
      if (fig_log[col-xfig][fil-yfig].lleno==CIERTO)
      mat_log[col][fil].lleno=CIERTO;//fig_log[col-xfig][fil-yfig].lleno;
}

/* este es el procedimiento que proporciona el tiempo reuqerido*/
/*char timer(int time)
{

  gettime
}*/
void figura_next(int op)
{

  int col,fil;



  for (fil=0; fil<4; fil++)
  {
     for (col=0;col<4;col++)
     {
   switch (op){

     case 0:
      if (z[(fil*4)+col]==CIERTO)
         putimage(XSIG+(col*ANCHO_FIG),YSIG+(fil*LARGO_FIG),p_image,XOR_PUT);
      break;
     case 1:
      if (s[(fil*4)+col]==CIERTO)
         putimage(XSIG+(col*ANCHO_FIG),YSIG+(fil*LARGO_FIG),p_image,XOR_PUT);
      break;
     case 2:
      if (t[(fil*4)+col]==CIERTO)
         putimage(XSIG+(col*ANCHO_FIG),YSIG+(fil*LARGO_FIG),p_image,XOR_PUT);
      break;
     case 3:
      if (ele[(fil*4)+col]==CIERTO)
         putimage(XSIG+(col*ANCHO_FIG),YSIG+(fil*LARGO_FIG),p_image,XOR_PUT);
      break;
     case 4:
      if (eleinv[(fil*4)+col]==CIERTO)
         putimage(XSIG+(col*ANCHO_FIG),YSIG+(fil*LARGO_FIG),p_image,XOR_PUT);
      break;
     case 5:
      if (cuadrado[(fil*4)+col]==CIERTO)
         putimage(XSIG+(col*ANCHO_FIG),YSIG+(fil*LARGO_FIG),p_image,XOR_PUT);
      break;
     case 6:
      if (vara[(fil*4)+col]==CIERTO)
         putimage(XSIG+(col*ANCHO_FIG),YSIG+(fil*LARGO_FIG),p_image,XOR_PUT);
      break;
     }
     }

   }
}
void main()
{

 int gdriver = DETECT, gmode, errorcode;

   /* initialize graphics mode */
   initgraph(&gdriver, &gmode, "");

   /* read result of initialization */
   errorcode = graphresult();

   if (errorcode != grOk)  /* an error occurred */
   {
      printf("Graphics error: %s\n", grapherrormsg(errorcode));
      printf("Press any key to halt:");
      getch();
      exit(1);             /* return with error code */
   }


   //int col,fil;
   //int x=200,y=1;
   int op;
   char bandera=CIERTO;
   char tecla;




   //matriz_fig figura;


   /*procedimientos de inicializacion*/
   randomize();
   boton(1,1);
   p_image=copia(1,1,1+ANCHO_FIG-1,1+LARGO_FIG-1);

   op=random(7);

   cleardevice();
   alza(COL_PANT,FIL_PANT,COL_PANT+(ANCHO_FIG*ANCHO),FIL_PANT+(LARGO_FIG*LARGO));

   asigna_figura(&op);//hasta aqui la asignacion ya esta validada y funciona bien

   //rota_figura(); la rotacion de la figura ya funciona correctamente

   /*for (fil=0; fil<4; fil++)
   {
     for (col=0;col<4;col++)
     {
   if (fig_log[col][fil].lleno==CIERTO)
      putimage(x+(col*ANCHO_FIG),y+(fil*LARGO_FIG),p_image,XOR_PUT);//checar po que es aqui como se va a desplegar

     }

   } */

   /*los procedimiento que se tienen pensados es asi

   mientras no bandera hacer

   si tiempo transcurrido
      avanza
      si avanza tope
         nueva figura
   si no
   si tecla presionada
      caso de tecla sea
         derecha
            incrementar columna
         izquierda
            decrementatar columna
         abajo
            inclementar fila
         enter
            rotafigura
   */
   caratula(400,10);
   pon_fig();
   figura_next(op);
   while (bandera!=FALSO)
   {
     //se supone que aqui va la condicion del tiempo
     //if .....
     //pon_fig();
     if (kbhit())
     {
   //suena(2);
   tecla=getch();
   quita_fig();
   display(COL_PANT,FIL_PANT);
   switch(tecla){

    case 80 :

      yfig++;
      if (checar_mov()==FALSO)
         yfig--;
      break;
    case 75 :
      xfig--;
      if (checar_mov()==FALSO)
         xfig++;
      break;
    case 77 :
      xfig++;
      if (checar_mov()==FALSO)
         xfig--;
      break;
    case 13 :
      rota_fig();
      break;
    case 32:
      pausa();
      break;
    case 27:
      bandera=FALSO;
      break;

   }
   pon_fig();
   display(COL_PANT,FIL_PANT);

     }

     if (counter>limite)
     {

       display(COL_PANT,FIL_PANT);

   quita_fig();

   yfig++;

   if (checar_mov()==FALSO)
   {
      if (yfig<1)
      {
          llena_mat();
          vacia_mat();
          getch();
          bandera=FALSO;//aqui es donde se hace la encriptacion del archivo

      }
      else
      {
      yfig--;
      pon_fig();
      display(COL_PANT,FIL_PANT);
      checa();

      yfig=-1;
      xfig=(ANCHO/2)-2;
      figura_next(op);
      asigna_figura(&op);
      figura_next(op);
      pon_fig();
      display(COL_PANT,FIL_PANT);

      }

   }
   pon_fig();
     //display();
   counter=0;
     }

     counter++;


   }

   closegraph();
}



Xaludos ^^

Por FeNtO

BOFH

5091 de clabLevel

18 tutoriales

1 ejemplo

  Bastard Operators From Hell

FeNtO DataCenter

clabbrowser
Citar            
MensajeEscrito el 23 Ene 2006 06:40 pm
*sigh* ... self Borlad-style code ... porque no lo portas a DirectX? sería chido... :P

Por Aoyama

BOFH

6224 de clabLevel

6 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Bastard Operators From Hell

Webdesigner & Developer, en mis ratos libres bebo café por litros.

firefox
Citar            
MensajeEscrito el 23 Ene 2006 06:42 pm
nuna habia cruzado por mi mente esa opcion :?

aoyama alguna referencia para poder pasarlo ? ^^

Por FeNtO

BOFH

5091 de clabLevel

18 tutoriales

1 ejemplo

  Bastard Operators From Hell

FeNtO DataCenter

clabbrowser
Citar            
MensajeEscrito el 23 Ene 2006 06:43 pm
see... http://www.códigoverde.com ... el mejor tutorial de DirectX 9 que te podrás encontrar y en español...

Por Aoyama

BOFH

6224 de clabLevel

6 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Bastard Operators From Hell

Webdesigner & Developer, en mis ratos libres bebo café por litros.

firefox
Citar            
MensajeEscrito el 23 Ene 2006 06:46 pm
gracias aoyama ^^

http://www.codigoverde.com/ link correcto , el acento me manda a otras paginas ^^ gracias vere que se puede hacer

Por FeNtO

BOFH

5091 de clabLevel

18 tutoriales

1 ejemplo

  Bastard Operators From Hell

FeNtO DataCenter

clabbrowser
Citar            
MensajeEscrito el 23 Ene 2006 06:54 pm
Argh... :ownz: méndigo acento... XD .. bueno espero te sirva, a mi me ha ayudado mucho esa página, tiene todo muy bien documentado y comentado...

Por Aoyama

BOFH

6224 de clabLevel

6 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Bastard Operators From Hell

Webdesigner & Developer, en mis ratos libres bebo café por litros.

firefox
Citar            
MensajeEscrito el 24 Ene 2006 01:25 am
wow, que usaste para compilarlo?


(y)



[traté con turbo C pero manda varios errores y advertencias del inicializador gráfico]

Por gabovanlugo

651 de clabLevel



Genero:Masculino  

Code Designer

firefox
Citar            
MensajeEscrito el 24 Ene 2006 02:08 am
Pues no tiene la dirección de los graficos ponsela esta enla linea 629! :p

Por Wanaya

Claber

1115 de clabLevel

4 tutoriales

 

La Unión Sovietica U_U

firefox
Citar            
MensajeEscrito el 24 Ene 2006 04:52 pm
la compile en la carpeta de los controladores graficos asi que por eso no tiene ruta ^^

y revisandolo bien es un aporqueria de logica , jhasta verguenza me da :S, pero bueno fueron mis primeros pininos en programacion ^^

Por FeNtO

BOFH

5091 de clabLevel

18 tutoriales

1 ejemplo

  Bastard Operators From Hell

FeNtO DataCenter

clabbrowser
Citar            
MensajeEscrito el 24 Ene 2006 05:27 pm
Tranki, tranki... conozco muchos que aún programan así... U_U

Por Aoyama

BOFH

6224 de clabLevel

6 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Bastard Operators From Hell

Webdesigner & Developer, en mis ratos libres bebo café por litros.

firefox
Citar            
MensajeEscrito el 24 Ene 2006 05:47 pm
aaa que tiempos aquellos :cry: y tannnn lejanos,

hace 25 kilos menos :cry:

:roll:

Por FeNtO

BOFH

5091 de clabLevel

18 tutoriales

1 ejemplo

  Bastard Operators From Hell

FeNtO DataCenter

clabbrowser
Citar            
MensajeEscrito el 24 Ene 2006 06:00 pm

FeNtO escribió:

aaa que tiempos aquellos :cry: y tannnn lejanos,

hace 25 kilos menos :cry:

:roll:


:roll: Si claro, que modesto........... aceptalo ya perdiste la cuenta ;)

Por Jorgelig

Claber

3035 de clabLevel

12 tutoriales

 

Monterrey, Nuevo Leon, MX

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.