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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 3 [4] 5 Ir Abajo Respuesta Imprimir
Autor Tema: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]  (Leído 13,791 veces)
dragonlady

Desconectado Desconectado

Mensajes: 37



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #30 en: 4 Junio 2015, 22:29 pm »

Hola! Pensé que me estaba contestando otra persona al principio porque cambias mucho la imagen jaja (Mushishi está genial!).

Entendí si, gracias por explicar tan pacientemente, me cuesta mucho entrar en la lógica del tablero, osea ahora que me lo dices lo entiendo pero irme dando cuenta sola del tema de los índices no iba a pasar :|

El juego lo tengo que entregar hasta el lunes a la medianoche. Pero este fin de semana me lo voy a dedicar entero a eso, para que quede bien.

Algo que está mal me parece es el if que me planteas:

Citar
Luego para que no se genere una X en esas posiciones:
Código

   
Código
  1. if( bosque[i][j]!='X' && bosque[i][j]!='1' && && bosque[i][j]!='2'){ //verifica que no haya X en esa posicion}

Me sale un error que se espera un identificador antes del &&, supongo que por poner 2 && juntos.

Voy a seguir tratando de ir arreglandolo con lo que me has planteado y cuando tenga más lo subo.

Gracias :)


En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #31 en: 5 Junio 2015, 01:21 am »

Ah no me dí cuenta que puse 2 & de más.  :P


En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
dragonlady

Desconectado Desconectado

Mensajes: 37



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #32 en: 5 Junio 2015, 13:44 pm »

Buenas, hastá acá fui tratando de hacer, aunque hasta que corrija los errores no me lo deja probar (no se si porque estoy en Linux -estoy en clase-, porque en windows me lo deja probar)

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. //prototipos
  6. void menu();
  7. int ingrese_opcion();
  8. char jugar();
  9. void reglas();
  10. void bosques();
  11. void error();
  12. void pausa();
  13. void turno_jugador1();
  14. void turno_jugador2();
  15. void flechazos();
  16. int ganador();
  17. char fin_juego();
  18.  
  19.  
  20. int main()
  21. {
  22.     int opcion;
  23.  
  24.        do
  25.        {
  26.            menu();
  27.            opcion=ingrese_opcion();
  28.            switch (opcion)
  29.            {
  30.               case 1:
  31.                   jugar();
  32.                   break;
  33.               case 2:
  34.                   reglas();
  35.                   break;
  36.               case 3:
  37.                    fin_juego();
  38.  
  39.                default:
  40.                   error();
  41.            }
  42.        }
  43.        while (opcion!=3);
  44.    return 0;
  45. }
  46.  
  47. void menu()
  48. {
  49.    printf("______ARQUEROS EN EL BOSQUE_______\n");
  50.    printf("____________OOOOOO________________\n");
  51.    printf("_________OOOOOOOOOOOOO____________\n");
  52.    printf("_____OOOOOOOOOOOOOOOOOOOO_________\n");
  53.    printf("___OOOOOOOOOOOOOOOOOOOOOOOO_______\n");
  54.    printf("___OOOOOOOOOOOOOOOOOOOOOOOO_______\n");
  55.    printf("_____OOOOOOOOOOOOOOOOOOOO_________\n");
  56.    printf("______OOOOOOOOOOOOOOOOOO__________\n");
  57.    printf("_________OOOOOOOOOOOO_____________\n");
  58.    printf("__<----____OOOOOOOO_______________\n");
  59.    printf("_____________OOOO_________________\n");
  60.    printf("_____________OOOO_______---->_____\n");
  61.    printf("_____________OOOO_________________\n");
  62.    printf("_____________OOOO_________________\n");
  63.    printf("\n");
  64.    printf("MENU PRINCIPAL\n");
  65.    printf("><><><><><><><\n");
  66.    printf("Ingrese una de las opciones: \n");
  67.    printf("1. Jugar\n");
  68.    printf("2.Ver reglas\n");
  69.    printf("\n");
  70. }
  71.  
  72. int ingrese_opcion()
  73. {
  74.    int opcion;
  75.    scanf(" %d",&opcion);
  76.    return opcion;
  77. }
  78.  
  79. char jugar()
  80. {
  81.    system("clear");
  82.    bosques();
  83.    pausa();
  84.  
  85.    return 0;
  86. }
  87.  
  88. void reglas() //aca muestro las reglas. tiene que poder volver al menu anterior
  89. {
  90.    system("clear");
  91.    printf("El juego consiste en eliminar al arquero del extremo opuesto. \n");
  92.    printf("Cada turno puede elegir moverse una casilla en sentido horizontal o vertical o lanzar un flechazo. \n");
  93.    printf("Los flechazos se mueven en linea recta, maximo cinco lugares.\n");
  94.    printf("Ni los jugadores ni los flechazos pueden atravezar los arboles(X)");
  95.    printf(" Al recibir un flechazo el jugador pierde el round, las partidas se componen de 3 round y las gana el que gane 2 de ellos.\n");
  96.    printf("Jugador primero sera identificado como 1 y jugador segundo como 2.\n");
  97.    printf("\n");
  98.    pausa();
  99.  
  100. }
  101.  
  102. void bosques()
  103. {
  104.   int tam=1;
  105.  
  106.   printf("Ingrese tamanio(6,8,10,14 o 18): ");
  107.   scanf(" %d", &tam);
  108.  
  109.   char bosque[tam][tam];
  110.  
  111.   //mostrar jugadores 1 y 2
  112.        bosque[0][0]='1';
  113.        bosque[tam-1][tam-1]='2';
  114.  
  115.   int i,j;
  116.  
  117.   //Iniciando los valores del bosque a ' '
  118.   for(i=0;i<tam;i++)
  119.       for(j=0;j<tam;j++)
  120.           bosque[i][j]=' ';
  121.  
  122.  
  123.  
  124.   //generando las 3 X aleatoriamente
  125.   srand (time(NULL));
  126.   int Xnum=0; //contador
  127.   while(Xnum<tam/2)//hasta que aparezcan la cantidad de X
  128.  
  129.    {
  130.       i=rand()%tam;
  131.       j=rand()%tam;
  132.  
  133.    if(bosque[i][j]!='X' && bosque[i][j]!='1' && bosque[i][j]!='2')//verifica que no haya X en esa posicion
  134.       {
  135.           bosque[i][j]='X';   //dibuja una X
  136.           Xnum++; //para no dibujar mas X de las que deben ser
  137.       }
  138.  
  139.   }
  140.  
  141.   //mostrar bosque
  142.   printf("\n  ");
  143.  
  144.   for (j=0;j<tam;j++) //filas alfabeticas
  145.       printf("  %c", 'a'+j);
  146.   printf("\n");
  147.  
  148.   for (i=0;i<tam;i++) //columnas numeradas
  149.    {
  150.       printf(" %d", i);
  151.  
  152.       for (j=0;j<tam;j++)
  153.        {
  154.          printf("| %c", bosque[i][j]);
  155.        }
  156.       printf("| \n");
  157.     }
  158.  
  159. }
  160.  
  161. void error()
  162. {
  163.    printf("El tamaño elegido no es correcto.\n");
  164.    pausa();
  165. }
  166.  
  167. void pausa()
  168. {
  169.    char p;
  170.    printf ("Presiona cualquier tecla y enter para volver al menu");
  171.    scanf (" %c",&p);
  172. }
  173.  
  174. void mover_jugadores()
  175. {
  176.        int jugador, jugadas, turno;
  177.    printf("Elige quien empieza (jugador 1 o 2): ");
  178.  
  179.    switch(jugadas)
  180.    {
  181.        case 1:
  182.          jugador=1;
  183.          turno=0;
  184.               do
  185.                {
  186.                    turno++;
  187.                    if (jugador)
  188.                    {
  189.                        turno_jugador1();
  190.                    }
  191.                        else
  192.                            turno_jugador2();
  193.  
  194.                }
  195.           while ((!ganador())&&(turno<=3));
  196.    }
  197. }
  198.  
  199. void turno_jugador1() //movimientos de jugador 1
  200. {
  201.    char accion;
  202.  
  203.    printf("Moverte o tirar flecha? (m o t)");
  204.    scanf(" %c", &accion);
  205.  
  206.    //para saber lo que ha ingresado
  207.    if(accion == 'm')
  208.    {
  209.         //moverse
  210.        int o_i,o_j; //coordenadas origen
  211.        int d_i,d_j; //coordenadas destino
  212.  
  213.  
  214.  
  215.        printf("Ingresa coordenada i origen: ");
  216.        scanf("%d \n", &o_i);
  217.        printf("Ingresa coordenada j origen: ");
  218.        scanf("%d \n", &o_j);
  219.        /*x ej el jugador ingresó: o_i  = 0, o_j = 0*/
  220.  
  221.        printf("Ingresa coordenada i destino: ");
  222.        scanf("%d \n", &d_i);
  223.        printf("Ingresa coordenada j destino: ");
  224.        scanf("%d \n", &d_j);
  225.        /*x ej el jugador ingresó: o_i  = 0, o_j = 1*/
  226.  
  227.        //Entonces:
  228.        bosque[o_i][o_j]= ' '; //hacemos que en la posicion origen no haya nada
  229.        bosque[d_i][d_j]= '1'; //Movemos el jugador a la posicion destino
  230.  
  231.    }
  232.        else if(accion == 't')
  233.        {
  234.            do
  235.            {
  236.               bosque[d_i][d_j]='t';
  237.            }
  238.                while(bosque[d_i][d_j]!='X');
  239.  
  240.        }
  241.            else
  242.            {
  243.                printf("Accion incorrecta \n");
  244.            }
  245.  
  246.     bosques();
  247. }
  248.  
  249. void turno_jugador2() //movimientos de jugador 1
  250. {
  251.  
  252.    char accion;
  253.  
  254.    printf("Moverte o tirar flecha? (m o t)");
  255.    scanf(" %c", &accion);
  256.  
  257.    //para saber lo que ha ingresado
  258.    if(accion == 'm')
  259.    {
  260.         //moverse
  261.        int o_i,o_j; //coordenadas origen
  262.        int d_i,d_j; //coordenadas destino
  263.  
  264.  
  265.  
  266.        printf("Ingresa coordenada i origen: ");
  267.        scanf("%d \n", &o_i);
  268.        printf("Ingresa coordenada j origen: ");
  269.        scanf("%d \n", &o_j);
  270.        /*x ej el jugador ingresó: o_i  = 0, o_j = 0*/
  271.  
  272.        printf("Ingresa coordenada i destino: ");
  273.        scanf("%d \n", &d_i);
  274.        printf("Ingresa coordenada j destino: ");
  275.        scanf("%d \n", &d_j);
  276.        /*x ej el jugador ingresó: o_i  = 0, o_j = 1*/
  277.  
  278.        //Entonces:
  279.        bosque[o_i][o_j]= ' '; //hacemos que en la posicion origen no haya nada
  280.        bosque[d_i][d_j]= '2'; //Movemos el jugador a la posicion destino
  281.  
  282.    }
  283.        else if(accion == 't')
  284.        {
  285.            do
  286.            {
  287.               bosque[d_i][d_j]='t';
  288.            }
  289.                while(bosque[d_i][d_j]!='X');
  290.  
  291.        }
  292.            else
  293.            {
  294.                printf("Accion incorrecta \n");
  295.            }
  296.  
  297.     bosques();
  298. }
  299.  
  300.  
  301. int ganador()
  302. {
  303.   jugar();
  304.   return 0;
  305. }
  306.  
  307.  
  308. char fin_juego()
  309. {
  310.   char salir;
  311.  
  312.   do
  313.   {
  314.      printf("Desea salir del programa (s/n)?:");
  315.      scanf(" %c", &salir);
  316.   }
  317.        while((salir != 's') || (salir != 'S'));
  318.  
  319.   return 0;
  320. }
  321.  

Y los errores:

228|error: ‘bosque’ no se declaró aquí (primer uso en esta función)|
228|nota: cada identificador sin declarar se reporta sólo una vez para cada función en el que aparece|
236|error: ‘d_i’ no se declaró aquí (primer uso en esta función)|
236|error: ‘d_j’ no se declaró aquí (primer uso en esta función)|
279|error: ‘bosque’ no se declaró aquí (primer uso en esta función)|
287|error: ‘d_i’ no se declaró aquí (primer uso en esta función)|
287|error: ‘d_j’ no se declaró aquí (primer uso en esta función)|
||=== Build finished: 7 errors, 0 warnings ===|

« Última modificación: 5 Junio 2015, 13:54 pm por dragonlady » En línea

dragonlady

Desconectado Desconectado

Mensajes: 37



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #33 en: 5 Junio 2015, 14:41 pm »

Malas noticias, mi profesor me rezongó que hiciera un solo bosque por un tema que la variable bosque la tenia que hacer global y char bosque[tam][tam] no me la permitia usar global (aun definiendo tam=1 globalmente)
asique me hizo hacer 5 bosques:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. //prototipos
  6. void menu();
  7. int ingrese_opcion();
  8. void mover_jugadores();
  9. void jugar();
  10. void reglas();
  11. void arboles();
  12. void mostrar_bosques();
  13. void bosque_1();
  14. void bosque_2();
  15. void bosque_3();
  16. void bosque_4();
  17. void bosque_5();
  18. void pausa();
  19. void turno_jugador1();
  20. void turno_jugador2();
  21. void flechazos();
  22. int ganador();
  23. char fin_juego();
  24.  
  25. //variables globales
  26. char bosque[1][1];
  27. int opcion;
  28. int jugadas;
  29.  
  30. int main()
  31. {
  32.     do
  33.        {
  34.            menu();
  35.            opcion=ingrese_opcion();
  36.            switch (opcion)
  37.            {
  38.               case 1:
  39.                   jugar();
  40.                   getchar();
  41.                   break;
  42.               case 2:
  43.                   reglas();
  44.                   break;
  45.               case 3:
  46.                    fin_juego();
  47.  
  48.  
  49.  
  50.            }
  51.        }
  52.        while (opcion!=3);
  53.    return 0;
  54. }
  55.  
  56. void menu()
  57. {
  58.    printf("______ARQUEROS EN EL BOSQUE_______\n");
  59.    printf("____________OOOOOO________________\n");
  60.    printf("_________OOOOOOOOOOOOO____________\n");
  61.    printf("_____OOOOOOOOOOOOOOOOOOOO_________\n");
  62.    printf("___OOOOOOOOOOOOOOOOOOOOOOOO_______\n");
  63.    printf("___OOOOOOOOOOOOOOOOOOOOOOOO_______\n");
  64.    printf("_____OOOOOOOOOOOOOOOOOOOO_________\n");
  65.    printf("______OOOOOOOOOOOOOOOOOO__________\n");
  66.    printf("_________OOOOOOOOOOOO_____________\n");
  67.    printf("__<----____OOOOOOOO_______________\n");
  68.    printf("_____________OOOO_________________\n");
  69.    printf("_____________OOOO_______---->_____\n");
  70.    printf("_____________OOOO_________________\n");
  71.    printf("_____________OOOO_________________\n");
  72.    printf("\n");
  73.    printf("MENU PRINCIPAL\n");
  74.    printf("><><><><><><><\n");
  75.    printf("Ingrese una de las opciones: \n");
  76.    printf("1. Jugar\n");
  77.    printf("2.Ver reglas\n");
  78.    printf("\n");
  79. }
  80.  
  81. int ingrese_opcion()
  82. {
  83.    int opcion;
  84.    scanf(" %d",&opcion);
  85.    return opcion;
  86. }
  87.  
  88. void jugar()
  89. {
  90.    system("clear");
  91.  
  92.    do
  93.    {
  94.  
  95.    int elije_bosque;
  96.    printf("*        Ingresa una opcion:        *\n\n");
  97.    printf("*        1- Bosque de 6 x 6         *\n");
  98.    printf("*        2- Bosque de 8 x 8         *\n");
  99.    printf("*        3- Bosque de 10 x 10       *\n");
  100.    printf("*        4- Bosque de 14 x 14       *\n");
  101.    printf("*        5- Bosque de 18 x 18       *\n");
  102.    scanf(" %d", &elije_bosque);
  103.  
  104.    system("clear");
  105.        switch (opcion)
  106.            {
  107.               case 1:
  108.                   bosque_1();
  109.                   break;
  110.               case 2:
  111.                   bosque_2();
  112.                   break;
  113.               case 3:
  114.                    bosque_3();
  115.                    break;
  116.                case 4:
  117.                   bosque_4();
  118.                   break;
  119.               case 5:
  120.                   bosque_5();
  121.                   break;
  122.  
  123.               default:
  124.                   fin_juego();
  125.            }
  126.  
  127.    }
  128.    while (opcion!=5);
  129.  
  130.    mover_jugadores();
  131.  
  132. }
  133.  
  134. void reglas() //aca muestro las reglas. tiene que poder volver al menu anterior
  135. {
  136.    system("clear");
  137.    printf("El juego consiste en eliminar al arquero del extremo opuesto. \n");
  138.    printf("Cada turno puede elegir moverse una casilla en sentido horizontal o vertical o lanzar un flechazo. \n");
  139.    printf("Los flechazos se mueven en linea recta, maximo cinco lugares.\n");
  140.    printf("Ni los jugadores ni los flechazos pueden atravezar los arboles(X)");
  141.    printf(" Al recibir un flechazo el jugador pierde el round, las partidas se componen de 3 round y las gana el que gane 2 de ellos.\n");
  142.    printf("Jugador primero sera identificado como 1 y jugador segundo como 2.\n");
  143.    printf("\n");
  144.    pausa();
  145.  
  146. }
  147.  
  148. void arboles(int a)
  149. {
  150.   //generando las 3 X aleatoriamente
  151.   srand (time(NULL));
  152.  
  153.   int Xnum=0; //contador
  154.   int i, j;
  155.   a=0;
  156.  
  157.   while(Xnum<a/2)//hasta que aparezcan la cantidad de X
  158.    {
  159.       i=rand()%a;
  160.       j=rand()%a;
  161.  
  162.    if(bosque[i][j]==' ')//verifica que no haya X en esa posicion
  163.       {
  164.           bosque[i][j]='X';   //dibuja una X
  165.           Xnum++; //para no dibujar mas X de las que deben ser
  166.       }
  167.  
  168.   }
  169.  
  170. }
  171.  
  172. void mostrar_bosques(int tam)
  173. {
  174.    int i,j;
  175.    //mostrar bosque
  176.   printf("\n  ");
  177.  
  178.   for (j=0;j<tam;j++) //filas alfabeticas
  179.       printf("  %c", 'a'+j);
  180.   printf("\n");
  181.  
  182.   for (i=0;i<tam;i++) //columnas numeradas
  183.    {
  184.       printf(" %d", i);
  185.  
  186.       for (j=0;j<tam;j++)
  187.        {
  188.          printf("| %c", bosque[i][j]);
  189.        }
  190.       printf("| \n");
  191.     }
  192. }
  193.  
  194.  
  195. void bosque_1()
  196. {
  197.    system("clear");
  198.  
  199.   int i,j;
  200.  
  201.   //Iniciando los valores del bosque a ' '
  202.   for(i=0;i<6;i++)
  203.       for(j=0;j<6;j++)
  204.           bosque[i][j]=' ';
  205.  
  206. //mostrar jugadores 1 y 2
  207.        bosque[0][0]='1';
  208.        bosque[5][5]='2';
  209. }
  210.  
  211. void bosque_2()
  212. {
  213.    system("clear");
  214.  
  215.   //mostrar jugadores 1 y 2
  216.        bosque[0][0]='1';
  217.        bosque[7][7]='2';
  218.  
  219.   int i,j;
  220.  
  221.   //Iniciando los valores del bosque a ' '
  222.   for(i=0;i<8;i++)
  223.       for(j=0;j<8;j++)
  224.           bosque[i][j]=' ';
  225. }
  226.  
  227. void bosque_3()
  228. {
  229.    system("clear");
  230.  
  231.   //mostrar jugadores 1 y 2
  232.        bosque[0][0]='1';
  233.        bosque[9][9]='2';
  234.  
  235.   int i,j;
  236.  
  237.   //Iniciando los valores del bosque a ' '
  238.   for(i=0;i<10;i++)
  239.       for(j=0;j<10;j++)
  240.           bosque[i][j]=' ';
  241. }
  242.  
  243. void bosque_4()
  244. {
  245.    system("clear");
  246.  
  247.   //mostrar jugadores 1 y 2
  248.        bosque[0][0]='1';
  249.        bosque[13][13]='2';
  250.  
  251.   int i,j;
  252.  
  253.   //Iniciando los valores del bosque a ' '
  254.   for(i=0;i<14;i++)
  255.       for(j=0;j<14;j++)
  256.           bosque[i][j]=' ';
  257. }
  258.  
  259. void bosque_5()
  260. {
  261.    system("clear");
  262.  
  263.   //mostrar jugadores 1 y 2
  264.        bosque[0][0]='1';
  265.        bosque[17][17]='2';
  266.  
  267.   int i,j;
  268.  
  269.   //Iniciando los valores del bosque a ' '
  270.   for(i=0;i<18;i++)
  271.       for(j=0;j<18;j++)
  272.           bosque[i][j]=' ';
  273. }
  274.  
  275. void pausa()
  276. {
  277.    char p;
  278.    printf ("Presiona cualquier tecla y enter para volver al menu");
  279.    scanf (" %c",&p);
  280. }
  281.  
  282. void mover_jugadores()
  283. {
  284.    int jugador;
  285.    int turno;
  286.  
  287.    printf("Elige quien empieza (jugador 1 o 2): ");
  288.  
  289.    switch(jugadas)
  290.    {
  291.        case 1:
  292.          jugador=1;
  293.          turno=0;
  294.               do
  295.                {
  296.                    turno++;
  297.                    if (jugador)
  298.                    {
  299.                        turno_jugador1();
  300.                    }
  301.                        else
  302.                            turno_jugador2();
  303.  
  304.                }
  305.           while ((!ganador())&&(turno<=3));
  306.    }
  307. }
  308.  
  309. void turno_jugador1() //movimientos de jugador 1
  310. {
  311.    char accion;
  312.  
  313.     //moverse
  314.    int o_i,o_j; //coordenadas origen
  315.    int d_i,d_j; //coordenadas destino
  316.  
  317.    printf("Moverte o tirar flecha? (m o t)");
  318.    scanf(" %c", &accion);
  319.  
  320.    //para saber lo que ha ingresado
  321.    if(accion == 'm')
  322.    {
  323.  
  324.        printf("Ingresa coordenada i origen: ");
  325.        scanf("%d \n", &o_i);
  326.        printf("Ingresa coordenada j origen: ");
  327.        scanf("%d \n", &o_j);
  328.        /*x ej el jugador ingresó: o_i  = 0, o_j = 0*/
  329.  
  330.        printf("Ingresa coordenada i destino: ");
  331.        scanf("%d \n", &d_i);
  332.        printf("Ingresa coordenada j destino: ");
  333.        scanf("%d \n", &d_j);
  334.        /*x ej el jugador ingresó: o_i  = 0, o_j = 1*/
  335.  
  336.        //Entonces:
  337.        bosque[o_i][o_j]= ' '; //que en la posicion origen no haya nada
  338.        bosque[d_i][d_j]= '1'; //Mover el jugador a la posicion destino
  339.  
  340.    }
  341.        else if(accion == 't')
  342.        {
  343.  
  344.            do
  345.            {
  346.               bosque[d_i][d_j]='t';
  347.            }
  348.                while(bosque[d_i][d_j]!='X');
  349.  
  350.        if (bosque[d_i][d_j]=='2')
  351.        {
  352.  
  353.        }
  354.  
  355.        }
  356.            else
  357.            {
  358.                printf("Accion incorrecta \n");
  359.            }
  360. }
  361.  
  362. void turno_jugador2() //movimientos de jugador 1
  363. {
  364.  
  365.    char accion;
  366.    //moverse
  367.    int o_i,o_j; //coordenadas origen
  368.    int d_i,d_j; //coordenadas destino
  369.  
  370.    printf("Moverte o tirar flecha? (m o t)");
  371.    scanf(" %c", &accion);
  372.  
  373.    //para saber lo que ha ingresado
  374.    if(accion == 'm')
  375.    {
  376.        printf("Ingresa coordenada i origen: ");
  377.        scanf("%d \n", &o_i);
  378.        printf("Ingresa coordenada j origen: ");
  379.        scanf("%d \n", &o_j);
  380.        /*x ej el jugador ingresó: o_i  = 0, o_j = 0*/
  381.  
  382.        printf("Ingresa coordenada i destino: ");
  383.        scanf("%d \n", &d_i);
  384.        printf("Ingresa coordenada j destino: ");
  385.        scanf("%d \n", &d_j);
  386.        /*x ej el jugador ingresó: o_i  = 0, o_j = 1*/
  387.  
  388.        //Entonces:
  389.        bosque[o_i][o_j]= ' '; //hacemos que en la posicion origen no haya nada
  390.        bosque[d_i][d_j]= '2'; //Movemos el jugador a la posicion destino
  391.  
  392.    }
  393.        else if(accion == 't')
  394.        {
  395.            do
  396.            {
  397.               bosque[d_i][d_j]='t';
  398.            }
  399.                while(bosque[d_i][d_j]!='X');
  400.  
  401.        }
  402.            else
  403.            {
  404.                printf("Accion incorrecta \n");
  405.            }
  406.  
  407. }
  408.  
  409.  
  410. int ganador()
  411. {
  412.   jugar();
  413.   return 0;
  414. }
  415.  
  416.  
  417. char fin_juego()
  418. {
  419.   char salir;
  420.  
  421.   do
  422.   {
  423.      printf("Desea salir del programa (s/n)?:");
  424.      scanf(" %c", &salir);
  425.   }
  426.        while((salir != 's') || (salir != 'S'));
  427.  
  428.   return 0;
  429. }
  430.  

Yo se que el profesor nos enseñó que las matrices tienen que ser fijas (por lo menos este 1er año) pero me enlió peor :|
« Última modificación: 5 Junio 2015, 16:50 pm por dragonlady » En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #34 en: 6 Junio 2015, 01:43 am »

jeje perdona la demora pero vi tu mensaje 6 horas depués de que lo publicaste.

mm, la verdad es que será muy difícil que te diga cómo corregir lo que ya tienes, asi que te doy un nitro:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. /*Prototipos*/
  6. void menu();
  7. void reglas();
  8. void fin_juego();
  9.  
  10. void Select_Bosque();
  11. void Iniciar_Bosque();
  12. void Actualizar_Juego();
  13. void Bucle_Juego();
  14.  
  15. void Mov_Attack(int);
  16.  
  17. /*Variables globales*/
  18. char bosque6x6[6][6];
  19. char bosque8x8[8][8];
  20. char bosque10x10[10][10];
  21. char bosque14x14[14][14];
  22. char bosque18x18[18][18];
  23.  
  24. int opcion = 0;
  25. int tam_bosque = 0;
  26.  
  27. int main()
  28. {
  29.    while(opcion != 3)
  30.    {  
  31.        menu();
  32.        scanf("%d",&opcion);
  33.  
  34.        switch(opcion){
  35.            case 1: Select_Bosque(); break;
  36.            case 2: reglas();        break;
  37.            case 3: fin_juego();     break;
  38.        }
  39.  
  40.     }
  41.  
  42.   return 0;
  43. }
  44.  
  45. void menu()
  46. {
  47.   printf("______ARQUEROS EN EL BOSQUE_______\n");
  48.   printf("____________OOOOOO________________\n");
  49.   printf("_________OOOOOOOOOOOOO____________\n");
  50.   printf("_____OOOOOOOOOOOOOOOOOOOO_________\n");
  51.   printf("___OOOOOOOOOOOOOOOOOOOOOOOO_______\n");
  52.   printf("___OOOOOOOOOOOOOOOOOOOOOOOO_______\n");
  53.   printf("_____OOOOOOOOOOOOOOOOOOOO_________\n");
  54.   printf("______OOOOOOOOOOOOOOOOOO__________\n");
  55.   printf("_________OOOOOOOOOOOO_____________\n");
  56.   printf("__<----____OOOOOOOO_______________\n");
  57.   printf("_____________OOOO_________________\n");
  58.   printf("_____________OOOO_______---->_____\n");
  59.   printf("_____________OOOO_________________\n");
  60.   printf("_____________OOOO_________________\n");
  61.   printf("\n");
  62.   printf("MENU PRINCIPAL\n");
  63.   printf("><><><><><><><\n");
  64.   printf("Ingrese una de las opciones: \n");
  65.   printf("1. Jugar\n");
  66.   printf("2.Ver reglas\n");
  67.   printf("3.Salir del juego\n");
  68.   printf("\n");
  69. }
  70.  
  71. void reglas() //aca muestro las reglas. tiene que poder volver al menu anterior
  72. {
  73.   system("clear");
  74.   printf("El juego consiste en eliminar al arquero del extremo opuesto. \n");
  75.   printf("Cada turno puede elegir moverse una casilla en sentido horizontal o vertical o lanzar un flechazo. \n");
  76.   printf("Los flechazos se mueven en linea recta, maximo cinco lugares.\n");
  77.   printf("Ni los jugadores ni los flechazos pueden atravezar los arboles(X)");
  78.   printf(" Al recibir un flechazo el jugador pierde el round, las partidas se componen de 3 round y las gana el que gane 2 de ellos.\n");
  79.   printf("Jugador primero sera identificado como 1 y jugador segundo como 2.\n");
  80.   printf("\n");
  81.   char p;
  82.   printf ("Presiona cualquier tecla y enter para volver al menu ");
  83.   scanf (" %c",&p);
  84. }
  85.  
  86. void fin_juego()
  87. {
  88.    system("clear");
  89.    printf("\n\n\n\t\t!!GRACIAS POR JUGAR!!!\n\n\n");
  90. }
  91.  
  92. void Select_Bosque()
  93. {
  94.  
  95.   system("clear");
  96.   int elije_bosque;
  97.   printf("*        Ingresa una opcion:        *\n\n");
  98.   printf("*        1- Bosque de 6 x 6         *\n");
  99.   printf("*        2- Bosque de 8 x 8         *\n");
  100.   printf("*        3- Bosque de 10 x 10       *\n");
  101.   printf("*        4- Bosque de 14 x 14       *\n");
  102.   printf("*        5- Bosque de 18 x 18       *\n");
  103.   scanf(" %d", &elije_bosque);
  104.  
  105.   system("clear");
  106.  
  107.   switch(elije_bosque){
  108.       case 1: tam_bosque = 6;
  109.               Iniciar_Bosque();
  110.               Bucle_Juego();  
  111.               break;
  112.       case 2: tam_bosque = 8;
  113.               Iniciar_Bosque();
  114.               Bucle_Juego();  
  115.               break;
  116.       case 3: tam_bosque = 10;
  117.               Iniciar_Bosque();
  118.               Bucle_Juego();
  119.               break;
  120.       case 4: tam_bosque = 14;
  121.               Iniciar_Bosque();
  122.               Bucle_Juego();
  123.               break;
  124.       case 5: tam_bosque = 18;
  125.               Iniciar_Bosque();
  126.               Bucle_Juego();
  127.               break;
  128.   }
  129.  
  130. }
  131. /*Ponemos los valores iniciales para el bosque*/
  132. void Iniciar_Bosque()
  133. {
  134.    srand (time(NULL));
  135.  
  136.    int Xnum = 0;
  137.    int i, j;
  138.  
  139.    if(tam_bosque == 6)
  140.    {
  141.        for(i = 0; i < tam_bosque;i++)
  142.            for(j = 0; j < tam_bosque;j++)
  143.                bosque6x6[i][j] = ' ';
  144.  
  145.        bosque6x6[0][0] = '1';
  146.        bosque6x6[5][5] = '2';
  147.  
  148.        while(Xnum < tam_bosque/2 )
  149.        {
  150.            i = (rand() % tam_bosque);
  151.            j = (rand() % tam_bosque);
  152.  
  153.            if(bosque6x6[i][j] == ' ')
  154.            {
  155.                bosque6x6[i][j] = 'X';
  156.                Xnum++;
  157.            }
  158.  
  159.        }    
  160.    }
  161.  
  162.    else if(tam_bosque == 8)
  163.    {
  164.        for(i = 0; i < tam_bosque;i++)
  165.            for(j = 0; j < tam_bosque;j++)
  166.                bosque8x8[i][j] = ' ';
  167.  
  168.        bosque8x8[0][0] = '1';
  169.        bosque8x8[7][7] = '2';
  170.  
  171.        while(Xnum < tam_bosque/2 )
  172.        {
  173.            i = rand() % tam_bosque;
  174.            j = rand() % tam_bosque;
  175.  
  176.            if(bosque8x8[i][j] == ' ')
  177.            {
  178.                bosque8x8[i][j] = 'X';
  179.                Xnum++;
  180.            }
  181.  
  182.        }    
  183.    }
  184.    else if(tam_bosque == 10)
  185.    {
  186.        for(i = 0; i < tam_bosque;i++)
  187.            for(j = 0; j < tam_bosque;j++)
  188.                bosque10x10[i][j] = ' ';
  189.  
  190.        bosque10x10[0][0] = '1';
  191.        bosque10x10[9][9] = '2';
  192.  
  193.        while(Xnum < tam_bosque/2 )
  194.        {
  195.            i = rand() % tam_bosque;
  196.            j = rand() % tam_bosque;
  197.  
  198.            if(bosque10x10[i][j] == ' ')
  199.            {
  200.                bosque10x10[i][j] = 'X';
  201.                Xnum++;
  202.            }
  203.  
  204.        }    
  205.    }
  206.    else if(tam_bosque == 14)
  207.    {
  208.        for(i = 0; i < tam_bosque;i++)
  209.            for(j = 0; j < tam_bosque;j++)
  210.                bosque14x14[i][j] = ' ';
  211.  
  212.        bosque14x14[0][0] = '1';
  213.        bosque14x14[13][13] = '2';
  214.  
  215.        while(Xnum < tam_bosque/2 )
  216.        {
  217.            i = rand() % tam_bosque;
  218.            j = rand() % tam_bosque;
  219.  
  220.            if(bosque14x14[i][j] == ' ')
  221.            {
  222.                bosque14x14[i][j] = 'X';
  223.                Xnum++;
  224.            }
  225.  
  226.        }    
  227.    }
  228.    else if(tam_bosque == 18)
  229.    {
  230.        for(i = 0; i < tam_bosque;i++)
  231.            for(j = 0; j < tam_bosque;j++)
  232.                bosque18x18[i][j] = ' ';
  233.  
  234.        bosque18x18[0][0] = '1';
  235.        bosque18x18[17][17] = '2';
  236.  
  237.        while(Xnum < tam_bosque/2 )
  238.        {
  239.            i = rand() % tam_bosque;
  240.            j = rand() % tam_bosque;
  241.  
  242.            if(bosque18x18[i][j] == ' ')
  243.            {
  244.                bosque18x18[i][j] = 'X';
  245.                Xnum++;
  246.            }
  247.  
  248.        }    
  249.    }
  250.  
  251. }
  252. /*Dibuja cuando sea necesario*/
  253. void Actualizar_Juego()
  254. {
  255.    system("clear");
  256.  
  257.    if( tam_bosque == 6)
  258.    {
  259.        int i,j;
  260.        printf("\n  ");
  261.  
  262.        for (j = 0; j < tam_bosque;j++) //filas alfabeticas
  263.            printf("  %c", 'a'+j);
  264.        printf("\n");
  265.  
  266.        for (i = 0;i < tam_bosque;i++) //columnas numeradas
  267.        {
  268.            printf(" %2d", i);
  269.  
  270.            for (j = 0;j < tam_bosque;j++)
  271.            {
  272.                printf("| %c", bosque6x6[i][j]);
  273.            }
  274.            printf("| \n");
  275.        }
  276.    }
  277.    else if( tam_bosque == 8)
  278.    {
  279.        int i,j;
  280.        printf("\n  ");
  281.  
  282.        for (j = 0;j < tam_bosque;j++) //filas alfabeticas
  283.            printf("  %c", 'a'+j);
  284.        printf("\n");
  285.  
  286.        for (i = 0;i < tam_bosque;i++) //columnas numeradas
  287.        {
  288.            printf(" %2d", i);
  289.  
  290.            for (j = 0;j < tam_bosque;j++)
  291.            {
  292.                printf("| %c", bosque8x8[i][j]);
  293.            }
  294.            printf("| \n");
  295.        }
  296.    }
  297.    else if( tam_bosque == 10)
  298.    {
  299.        int i,j;
  300.        printf("\n  ");
  301.  
  302.        for (j = 0;j < tam_bosque;j++) //filas alfabeticas
  303.            printf("  %c", 'a'+j);
  304.        printf("\n");
  305.  
  306.        for (i = 0;i < tam_bosque;i++) //columnas numeradas
  307.        {
  308.            printf(" %2d", i);
  309.  
  310.            for (j = 0;j < tam_bosque;j++)
  311.            {
  312.                printf("| %c", bosque10x10[i][j]);
  313.            }
  314.            printf("| \n");
  315.        }
  316.    }
  317.    else if( tam_bosque == 14)
  318.    {
  319.        int i,j;
  320.        printf("\n  ");
  321.  
  322.        for (j = 0;j < tam_bosque;j++) //filas alfabeticas
  323.            printf("  %c", 'a'+j);
  324.        printf("\n");
  325.  
  326.        for (i = 0;i < tam_bosque;i++) //columnas numeradas
  327.        {
  328.            printf(" %2d", i);
  329.  
  330.            for (j = 0;j < tam_bosque;j++)
  331.            {
  332.                printf("| %c", bosque14x14[i][j]);
  333.            }
  334.            printf("| \n");
  335.        }
  336.    }
  337.    else if( tam_bosque == 18)
  338.    {
  339.        int i,j;
  340.        printf("\n  ");
  341.  
  342.        for (j = 0;j < tam_bosque;j++) //filas alfabeticas
  343.            printf("  %c", 'a'+j);
  344.        printf("\n");
  345.  
  346.        for (i = 0;i < tam_bosque;i++) //columnas numeradas
  347.        {
  348.            printf(" %2d", i);
  349.  
  350.            for (j = 0;j < tam_bosque;j++)
  351.            {
  352.                printf("| %c", bosque18x18[i][j]);
  353.            }
  354.            printf("| \n");
  355.        }
  356.    }
  357.  
  358. }
  359.  
  360. /****BUCLE DEL JUEGO****/
  361. void Bucle_Juego()
  362. {
  363.    int ganador = 0;
  364.    int turno = 1; //empieza jugador 1
  365.  
  366.    while(ganador == 0){ //que se repita mientras no haya ningun ganador
  367.  
  368.        Actualizar_Juego(); //Actualiza el juego
  369.  
  370.        Mov_Attack(turno); //mueve o ataca  
  371.  
  372.        /*Falta un codigo para comprobar si alguien ya ha ganado*/
  373.  
  374.        /*Cambiando los turnos*/
  375.        if(turno == 1)
  376.            turno = 2;
  377.        else
  378.            turno = 1;
  379.    }
  380.  
  381.    /*cuando se termine el bucle comprobamos quien ha ganado*/
  382.    if(ganador == 1){
  383.        printf("Ha Ganado el jugador 1");
  384.    }
  385.    else if(ganador == 2)
  386.        printf("Ha Ganado el jugador 2");
  387.  
  388. }
  389.  
  390. void Mov_Attack(int turno)
  391. {
  392.    char imagen_jugador; //para dibujar un '1' o un '2' dependiendo del turno
  393.  
  394.    if(turno == 1)
  395.    {
  396.        imagen_jugador = '1';
  397.        printf("Es el turno del jugador 1\n");
  398.    }
  399.    else
  400.    {
  401.        imagen_jugador = '2';
  402.        printf("Es el turno del jugador 2\n");
  403.    }  
  404.  
  405.   char accion;
  406.  
  407.    //moverse
  408.   int o_i,d_i; //coordenadas origen(enteros)
  409.   char o_j,d_j;  //coordenadas destino(letras)
  410.  
  411.   printf("Moverte o tirar flecha? (m o t)");
  412.   scanf(" %c", &accion);
  413.  
  414.   //para saber lo que ha ingresado
  415.   if(accion == 'm')
  416.   {
  417.       printf("Ingresa coordenada vertical origen(numero): ");
  418.       scanf(" %d", &o_i); //pedimos un entero
  419.       printf("Ingresa coordenada horizontal origen(letra): ");
  420.       scanf(" %c", &o_j); //depimos un char
  421.  
  422.       printf("Ingresa coordenada vertical destino(numero): ");
  423.       scanf(" %d", &d_i); //pedimos un entero
  424.       printf("Ingresa coordenada horizontal destino(letra): ");
  425.       scanf(" %c", &d_j); //pedimos un char
  426.  
  427.       /*Dependiendo del tamaño del bosque*/
  428.       if( tam_bosque == 6)
  429.       {
  430.           bosque6x6[o_i][o_j - 97]= ' ';
  431.           bosque6x6[d_i][d_j - 97]= imagen_jugador;
  432.       }
  433.       else if( tam_bosque == 8)
  434.       {
  435.           bosque8x8[o_i][o_j - 97]= ' ';
  436.           bosque8x8[d_i][d_j - 97]= imagen_jugador;
  437.       }
  438.       else if( tam_bosque == 10)
  439.       {
  440.           bosque10x10[o_i][o_j - 97]= ' ';
  441.           bosque10x10[d_i][d_j - 97]= imagen_jugador;
  442.       }
  443.       else if( tam_bosque == 14)
  444.       {
  445.           bosque14x14[o_i][o_j - 97]= ' ';
  446.           bosque14x14[d_i][d_j - 97]= imagen_jugador;
  447.       }
  448.       else if( tam_bosque == 18)
  449.       {
  450.           bosque18x18[o_i][o_j - 97]= ' ';
  451.           bosque18x18[d_i][d_j - 97]= imagen_jugador;
  452.       }
  453.  
  454.   }
  455.   else if(accion == 't')
  456.   {
  457.       /*ALGORITMO PARA TIRAR FLECHAZO*/
  458.   }
  459.   else
  460.   {
  461.        printf("Accion incorrecta \n");
  462.   }
  463.  
  464. }
  465.  
  466.  


solo falta hacer el algoritmo para tirar flechas
« Última modificación: 6 Junio 2015, 04:22 am por 0xFer » En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
dragonlady

Desconectado Desconectado

Mensajes: 37



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #35 en: 6 Junio 2015, 02:28 am »

Gracias por toda la ayuda la verdad, que el día de hoy había sido muy desalentador, después de todo lo que había hecho me hicieron cambiar casi todo.
Voy a revisar todo bien, entender y ahí agarrar para terminarlo.
Se que había quedado muy a medias, lo fuí subiendo a medida que estaba en clase, estaba desesperando porque se me armó un lio tremendo, consulté unas cosas pero fue peor jaja Así que tengo varias versiones del juego a medio terminar.

Gracias por la ayuda, de nuevo. Cuando lo termine, muestro el resultado :)
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #36 en: 6 Junio 2015, 02:40 am »

De nada, para eso estamos.
En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
dragonlady

Desconectado Desconectado

Mensajes: 37



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #37 en: 6 Junio 2015, 02:43 am »

Una pregunta de curiosidad, para que usas %i? es funcional remplazarlo por %d? Solo uso regularmente %d, %c y %f. Y lo googlié y pareciera que es lo mismo usar i q d?
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #38 en: 6 Junio 2015, 02:56 am »

Con el printf no hay diferencias, pero si con scanf, el %d es para decimal, el %i funcional igual además de soportar números hexadecimanles y octales, cuando utilizas el %i creo que hay más código de por medio en el ejecutable(no estoy seguro), asi que lo correcto es utilizar el %d si sabes de ante mano que estas trabajando solo con enteros.

jaja yo siempre suelo utilizar el %i pero no es correcto, es mejor utilizar el %d, siempre y cuando no estes trabajando con hexa u octal.
En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
dragonlady

Desconectado Desconectado

Mensajes: 37



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #39 en: 8 Junio 2015, 19:39 pm »

Hola, yo de nuevo. Tengo 2 dudas,

Esta parte la quise cambiar para poder elegir quien empieza:

Código
  1. void mover_tirarflecha(int turno)
  2. {
  3.    char imagen_jugador; //dibuja 1' o '2' dependiendo del turno
  4.  
  5.    printf("Que jugador empieza?: ");
  6.    scanf(" %d", turno);
  7.  
  8.    if(turno == 1)
  9.    {
  10.        imagen_jugador = '1';
  11.        printf("Es el turno del jugador 1\n");
  12.    }
  13.    else
  14.    {
  15.        imagen_jugador = '2';
  16.        printf("Es el turno del jugador 2\n");
  17.    }
  18.  

Pero me dice un error  |warning: format '%d' expects argument of type 'int *', but argument 2 has type 'int' [-Wformat]|

Denitivamente tengo problemas con los parámetros :|

Y después estoy tratando de hacer los flechazos:

Código
  1. else if(accion == 't') //para disparar flecha. Se mueven arriba,abajo,izq,derecha
  2.   {
  3.       if (tam_bosque==6)
  4.       {
  5.           int limite=0, arriba=0, abajo=0, izq=0, derecha=0;
  6.           int i=d_i;
  7.           int j=d_j;
  8.  
  9.           while((limite<5) && (arriba<6) && (bosque6x6!='X'))//para arriba
  10.           {
  11.               if (bosque6x6[i][j]=='2')
  12.                  {
  13.                        arriba++;
  14.                        j++;
  15.                        printf("GAME OVER: Jugador 2");
  16.                  }
  17.                        else printf("Fallaste!\n");
  18.  

Bueno y así con abajo, derecha e izquierda. Acá el error es: warning: comparison between pointer and integer [enabled by default]|
En línea

Páginas: 1 2 3 [4] 5 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Duda]Problema de tamaños
ASM
YST 3 3,422 Último mensaje 25 Junio 2009, 22:24 pm
por YST
Tablero java
Java
lulu2704 1 4,927 Último mensaje 23 Abril 2011, 05:11 am
por Castiblanco
tamaños swap
GNU/Linux
linuxos 4 2,582 Último mensaje 24 Octubre 2011, 17:54 pm
por orvtech
Detectar movimientos de piezas en tablero de ajedrez. « 1 2 »
Programación Visual Basic
E2E4 12 10,939 Último mensaje 4 Junio 2012, 09:29 am
por BlackZeroX
Más de 400.000 barcos de todos los tamaños vulnerables a ataques de ....
Noticias
wolfbcn 0 1,366 Último mensaje 27 Marzo 2014, 21:42 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines