canal visual basic .net

Recursos Visual Basic.NET, VB.NET, Manuales de programación, Tutoriales, Foros de programación, Comunidad de programadores

Usuarios activos:  58

Foros de programación, recursos, tutoriales, sistemas operativos...

Bienvenido a la zona de foros. Participa en alguno de nuestros foros: Foros de visual basic, foros de visual basic.net foros de Crystal reports, programas gratis, foros de C++ - C# , foros de Java, foros de PHP, foros de ASP.net. Seguro que hay un foro que te servirá de gran utilidad y si no lo encuentras avísanos y crearemos uno nuevo.
Resultados 1 al 11 de 11

Tema: 3 en raya

  1. #1
    Avatar de K0rl3oN
    K0rl3oN está desconectado Senior Member Avanzad@
    Fecha de ingreso
    04 mar, 06
    Ubicación
    Spain
    Mensajes
    200

    Predeterminado



    Hola a todos de nuevo!! Acabo de terminar mi programa 3 en raya (en la consola, sin gráficos) y quiero exponerlo, para que todos aportemos código y hagamos mejor el juego (entre otras cosas: Gráficos e Inteligencia artificial.) Espero que me entendáis y os animéis.


    Código:
    
    
    /*UN SENCILLO JUEGO DE TRES EN RAYA by:K0rl3oN*/
    
    
    #include "stdio.h"
    #include "stdlib.h"
    
    
    char matriz[3] [3]; /*La matriz de tres en raya*/
    
    
    char comprobar(void);
    void inic_matriz(void);
    void obt_mov_jugador(void);
    void obt_mov_computadora(void);
    void mostrar_matriz(void);
    
    
    void main(void)
    {
    char hecho;
    
    
    printf("Este es el juego de tres en raya.\n\n");
    printf("Vd. jugara contra la computadora.\n\n");
    printf("Vd. es \"X\"\n");
    
    
    hecho = ' ';
    
    
    inic_matriz();
    
    
    do {
    mostrar_matriz();
    obt_mov_jugador();
    hecho=comprobar(); /*Ver si gana*/
    if(hecho!=' ') break; /*Ganador*/
    obt_mov_computadora();
    hecho=comprobar(); /*Ganador*/
    } while(hecho==' ');
    
    
    if(hecho=='X') printf("Ha ganado Vd.!!\n\n");
    else printf("Ha ganado la maquina!! You lose!\n");
    
    
    mostrar_matriz(); /*mostrar las posiciones finales*/
    }
    
    
    /*Inicializar la matriz*/
    void inic_matriz(void)
    {
    int i, j;
    
    
    for(i=0; i<3; i++)
    for(j=0; j<3; j++) matriz [j] = ' ';
    }
    
    
    /*Obtener un movimiento del jugador*/
    void obt_mov_jugador(void)
    {
    int x, y; 
    
    
    printf("Introduzca sus coordenadas de su X Y (ej. 2 3): ");
    scanf("%d%d", &x, &y);
    
    
    x--; y--;
    
    
    if(matriz[x] [y] != ' ') {
    printf("Movimiento invalido, pruebe de nuevo.\n\n");
    obt_mov_jugador();
    }
    else matriz[x] [y] = 'X';
    }
    
    
    /*Obtener un movimiento de la computadora*/
    void obt_mov_computadora(void)
    {
    int i, j;
    
    
    for(i=0; i<3; i++) {
    for(j=0; j<3; j++)
    if(matriz [j]==' ') break;
    if(matriz [j]==' ') break;
    }
    
    
    if(i*j==9) {
    printf ("Tablas.\n");
    exit(0);
    }
    else
    matriz [j] = 'O';
    }
    
    
    /*Mostrar la matriz en la pantalla*/
    
    
    void mostrar_matriz(void)
    {
    int t;
    
    
    for(t=0; t<3; t++) {
    printf(" %c | %c | %c ", matriz[t] [0],
    matriz[t] [1], matriz[t] [2]);
    if(t!=2) printf("\n---|---|---\n");
    }
    printf("\n");
    }
    
    
    /*Ver si hay un ganador*/
    
    
    char comprobar(void)
    {
    int i;
    
    
    for(i=0; i<3; i++) /*Comprobar filas*/
    if(matriz [0]==matriz [1] &&
    matriz [0] ==matriz [2]) return matriz [0];
    
    
    for(i=0; i<3; i++) /*Comprobar columnas*/
    
    
    if(matriz[0] ==matriz[1] &&
    matriz[0] ==matriz[2] ) return matriz[0] ;
    
    
    /*Comprobar diagonales*/
    
    
    if(matriz[0] [0]==matriz[1] [1] &&
    matriz[1] [1]==matriz[2][2])
    return matriz[0] [0];
    
    
    if(matriz[0] [2]==matriz[1] [1] &&
    matriz[1] [1]==matriz[2] [0])
    return matriz[0] [2];
    
    
    return ' ';
    }

    P.D: El programa lo hice en Code::Blocks, en la sección C++, utilizando código C (porque estoy acostumbrado)


    Salu2...Edited by: K0rl3oN
    The death arrives so slow that it gives us an entire life to be able to reach it (La muerte llega tan lenta que nos da toda una vida para poder alcanzarla)

  2. #2
    Vanchi está desconectado Moderador Veteran@
    Fecha de ingreso
    09 dic, 05
    Mensajes
    740

    Predeterminado

    Hola Korleon,

    Te cuento que no me he puesto detenidamente a ver cómo funciona, pero pegué el código en C::B (compilador gcc) y NO compiló.

    Mirando rápidamente descubrí lo siguiente:
    Código:
    char matriz[3] [3]; /*La matriz de tres en raya*/
    ... pero luego
    Código:
    (matriz[0] ==matriz[1] &&
    matriz[0] ==matriz[2] )
    Vale decir que definís la matriz como bidimensional, pero en unos lugares la utilizás como unidimensional.

    Si bien podría bien trabajando la matriz como punteros se puede transformar una matriz n-dimensional en unidimensional, es una práctica muy poco recomendable. (y mucho menos mezclando las formas)

    Iván (Vanchi) La Malfa
    OpenOffice.org
    .Free as in Freedom.

  3. #3
    Vanchi está desconectado Moderador Veteran@
    Fecha de ingreso
    09 dic, 05
    Mensajes
    740

    Predeterminado

    Hola Korleon,

    Me llevé tu código a mi casa para estudiarlo mas tranquilo...

    Si no te molesta, le puedo transformar en C++ (vale decir: utilizando objetos) y ponerle una interfaz gráfica (con WxWidgets)

    Saludos.

    Iván (Vanchi) La Malfa
    OpenOffice.org
    .Free as in Freedom.

  4. #4
    Avatar de K0rl3oN
    K0rl3oN está desconectado Senior Member Avanzad@
    Fecha de ingreso
    04 mar, 06
    Ubicación
    Spain
    Mensajes
    200

    Predeterminado



    No-problem.


    Salu2...Edited by: K0rl3oN
    The death arrives so slow that it gives us an entire life to be able to reach it (La muerte llega tan lenta que nos da toda una vida para poder alcanzarla)

  5. #5
    Avatar de K0rl3oN
    K0rl3oN está desconectado Senior Member Avanzad@
    Fecha de ingreso
    04 mar, 06
    Ubicación
    Spain
    Mensajes
    200

    Predeterminado



    Lo unico, que copies aquí el codigo final.


    Salu2...
    The death arrives so slow that it gives us an entire life to be able to reach it (La muerte llega tan lenta que nos da toda una vida para poder alcanzarla)

  6. #6
    Vanchi está desconectado Moderador Veteran@
    Fecha de ingreso
    09 dic, 05
    Mensajes
    740

    Predeterminado

    Hola Korleon,

    Justamente ese es el problema de por que no lo he puesto antes...

    El código ya está terminado con interfaz gráfica y todo (en WxWidgets), pero los archivos ahora son 6 de código (3 de implementación y 3 de cabeceras), 1 de interfaz, 1 de recursos, 1 para trabajarlo desde el WxDev-Cpp.

    Lo voy a subir a algún lado y luego pego el link.

    Saludos

    Iván (Vanchi) La Malfa
    OpenOffice.org
    .Free as in Freedom.

  7. #7
    Avatar de K0rl3oN
    K0rl3oN está desconectado Senior Member Avanzad@
    Fecha de ingreso
    04 mar, 06
    Ubicación
    Spain
    Mensajes
    200

    Predeterminado



    Ok, gracias amigo Vanchi.


    Por cierto, ¿tú que compilador utilizas? Yo utilizo code::blocks, pero cuando voy a incluir el archivo de cabecera graphics.h me dice:


    Código:
    graphics.h: No such file or directory

    Salu2...Edited by: K0rl3oN
    The death arrives so slow that it gives us an entire life to be able to reach it (La muerte llega tan lenta que nos da toda una vida para poder alcanzarla)

  8. #8
    Vanchi está desconectado Moderador Veteran@
    Fecha de ingreso
    09 dic, 05
    Mensajes
    740

    Predeterminado

    Hola Korleon,

    Mirá, ni siquiera me he puesto a buscar espacio y no creo que lo haga por ahora...

    Si te interesa el código mandame un mensaje privado con tu mail y te lo envío.

    NOTA: C::B no es un compilador... es una IDE. Por los mensajes que vos has posteado tu compilador es el GCC (GNU Compiler Collection).

    Yo utilizo el mismo compilador y la misma IDE, pero para este proyecto en particular utilicé la IDE wxDev C++. (También bajo licencia GNU)

    Saludos


    Iván (Vanchi) La Malfa
    OpenOffice.org
    .Free as in Freedom.

  9. #9
    Avatar de K0rl3oN
    K0rl3oN está desconectado Senior Member Avanzad@
    Fecha de ingreso
    04 mar, 06
    Ubicación
    Spain
    Mensajes
    200

    Predeterminado



    Ahhhhh ok, ahora me quedó claro.


    Intenta responder mis temas en los foros de VB, que nadie sabe, tú seguro que sí.


    Espero respuestas.


    Salu2...
    The death arrives so slow that it gives us an entire life to be able to reach it (La muerte llega tan lenta que nos da toda una vida para poder alcanzarla)

  10. #10
    Vanchi está desconectado Moderador Veteran@
    Fecha de ingreso
    09 dic, 05
    Mensajes
    740

    Predeterminado

    Hola Korleon,

    Alagarme no te servirá de nada...

    Yo ayudo cuando puedo en lo que se y sobre todo cuando creo que la persona que pregunta tiene interés en aprender y no que le hagan la tarea de clase.

    Vos has demostrado con creces que tu intención es aprender por lo que siempre que pueda te voy a contestar.

    Además, no siempre puedo contestar ya que sólo me meto en el foro cuando he dejado mis programas corriendo (suelen tardar de 10 minutos a 2 hs) por lo que me hago un tiempito para responder... pero no siempre debo hacer esas corridas tan largas. Ergo no siempre tengo tiempo.

    Saludos

    Iván (Vanchi) La Malfa
    OpenOffice.org
    .Free as in Freedom.

  11. #11
    Avatar de K0rl3oN
    K0rl3oN está desconectado Senior Member Avanzad@
    Fecha de ingreso
    04 mar, 06
    Ubicación
    Spain
    Mensajes
    200

    Predeterminado



    jeje ok.

    Gracias amigo.

    Salu2...
    The death arrives so slow that it gives us an entire life to be able to reach it (La muerte llega tan lenta que nos da toda una vida para poder alcanzarla)

Temas similares

  1. Programar 3 en raya!!- ayuda!
    Por initialjhon en el foro Visual Basic 6.0
    Respuestas: 1
    Último mensaje: 01/07/2008, 20:01
  2. Programar Tres en Raya
    Por initialjhon en el foro Visual Basic .NET
    Respuestas: 0
    Último mensaje: 26/06/2008, 16:32
  3. JUEGO TRES EN RAYA
    Por CENTAURI en el foro Visual Basic 6.0
    Respuestas: 1
    Último mensaje: 22/10/2006, 17:39
  4. juego_tres en raya
    Por en el foro Visual Basic 6.0
    Respuestas: 0
    Último mensaje: 01/01/1970, 01:00

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Visual Studio .VisualBasic.net .ADO.NET .ASP.NET .Framework .Crystal report
[Visual Basic .NET · Información legal · Condiciones de uso · Publicidad · Contacto · RSS novedades Foro · Inicio]
Un sitio web de Internelia (Ontecnia) © Copyright 2013 canalvisualbasic.net. Todos los derechos reservados