locked
Juego Parecido a bejeweled RRS feed

  • Pregunta

  • Hola, vengo con una nueva duda no se si han utilizado el juego Bejeweled, pero la idea es la siguiente: digamos que es como una matriz de 10x10 y que esta se llena con numeros aleatorios de 0 a 3, donde se podran encontrar grupos de numeros que sean iguales digamos un maximo de 4 numeros iguales que estan juntos, con esto el usuario podra darle click a uno de esos numeros que estan en grupo y que sean iguales, de tal forma que se eliminen y que los numeros que estan arriba del grupo que se elimino caigan a la posicion de los que se eliminaron, mi duda es que si este juego lo puedo realizar en c# o con xna, porque estoy probando con c# pero yo lo hice todo con botones todas las posiciones de la matriz que son 100 todos son botones, pero a la hora de mandar a llamar un boton uno por uno los tengo que hacer todos separados porque no se puede poner una variable despues de button1 para poder asignarle el numero aleatorio a cada button por ejemplo (" buttonx ") para hacerlo todo en un ciclo, si me pudieran dar una idea de como saldria mejor hacerlo, gracias.
    Dark
    miércoles, 17 de agosto de 2011 0:07

Respuestas

  • Lo de los 100 botones no lo entiendo :S

    Lo que planteas no es complicado, uno de mis primeros pinitos en XNA fué hacer un sudoku que para este caso se puede usar el mismo planteamiento:

    - Una clase Casilla que contenga el valor, una textura y la posición (en pantalla).

    Si son 3 tipos distintos de casilla, prepara textura1, textura2 y textura3. En el método Load le pasas su localización más el valor (por ejemplo: "Imagenes\\textura"+valor). Además de una textura0 (transparente) para el caso de que el valor sea 0 (representa una casilla vacia)

    Hace falta un método que devuelva un Rectángulo colisión.

    - Una clase Tablero que contenga una matriz bidimensional de Casilla.

    No hace falta que el tablero sea de 10x10, al constructor de tablero se le puede pasar el tamaño de la matriz a inicializar.

    En el bucle de la matriz bidimensional, para inicializar las Casillas le vas aumentando la posición (para dibujarlo en pantalla) dependiendo del tamaño de la textura de la Casilla. Por ejemplo, si la Casilla es de 50x50, a cada casilla le aumentas 50 en pos.X y una vez llegues al final de la fila, empiezas desde 0 en pos.X pero con pos.Y + 50 (siguiente columna). Al constructor de Casilla le pasas un valor aleatorio de 0 a 3.

    Ya tienes la clase Tablero compuesto por una matriz bidimensional de Casillas. Creas el cursor y con el método colisión de Casilla devuelves el Rectángulo y compruebas si está en colisión con el cursor, y si clickeas.

    Solo falta:

    - Método mover casilla: guarda la posición en la matriz de la primera casilla seleccionada y de la segunda casilla seleccionada. Comprueba que son contiguas y las intercambian, tanto dentro del array como la posición en pantalla.

    - Método para comprobar que existen 3 o más casillas iguales en una columna o fila, y las elimina.

    - Método que comprueba si una Casilla tiene la posición inferior libre, y en caso afirmativo la mueve.

    Todo esto lo he planteado de forma rápida, pero lo suyo es ponerse con papel y lápiz a plantearlo antes de meterle mano al problema porque puede que exista algún planteamiento mejor.

    Un saludo.










    miércoles, 17 de agosto de 2011 9:24

Todas las respuestas

  • Lo de los 100 botones no lo entiendo :S

    Lo que planteas no es complicado, uno de mis primeros pinitos en XNA fué hacer un sudoku que para este caso se puede usar el mismo planteamiento:

    - Una clase Casilla que contenga el valor, una textura y la posición (en pantalla).

    Si son 3 tipos distintos de casilla, prepara textura1, textura2 y textura3. En el método Load le pasas su localización más el valor (por ejemplo: "Imagenes\\textura"+valor). Además de una textura0 (transparente) para el caso de que el valor sea 0 (representa una casilla vacia)

    Hace falta un método que devuelva un Rectángulo colisión.

    - Una clase Tablero que contenga una matriz bidimensional de Casilla.

    No hace falta que el tablero sea de 10x10, al constructor de tablero se le puede pasar el tamaño de la matriz a inicializar.

    En el bucle de la matriz bidimensional, para inicializar las Casillas le vas aumentando la posición (para dibujarlo en pantalla) dependiendo del tamaño de la textura de la Casilla. Por ejemplo, si la Casilla es de 50x50, a cada casilla le aumentas 50 en pos.X y una vez llegues al final de la fila, empiezas desde 0 en pos.X pero con pos.Y + 50 (siguiente columna). Al constructor de Casilla le pasas un valor aleatorio de 0 a 3.

    Ya tienes la clase Tablero compuesto por una matriz bidimensional de Casillas. Creas el cursor y con el método colisión de Casilla devuelves el Rectángulo y compruebas si está en colisión con el cursor, y si clickeas.

    Solo falta:

    - Método mover casilla: guarda la posición en la matriz de la primera casilla seleccionada y de la segunda casilla seleccionada. Comprueba que son contiguas y las intercambian, tanto dentro del array como la posición en pantalla.

    - Método para comprobar que existen 3 o más casillas iguales en una columna o fila, y las elimina.

    - Método que comprueba si una Casilla tiene la posición inferior libre, y en caso afirmativo la mueve.

    Todo esto lo he planteado de forma rápida, pero lo suyo es ponerse con papel y lápiz a plantearlo antes de meterle mano al problema porque puede que exista algún planteamiento mejor.

    Un saludo.










    miércoles, 17 de agosto de 2011 9:24
  • Gracias por tu ayuda, ya lo estaba empezando hacer como de dijiste pero ahora el Ingeniero que nos da un curso de programacion nos sale que ya no se va hacer con cualquier lenguaje si no que con visual c++, no se si me podrian ayudar con este lenguaje, el problema que tengo en este es que no se como mostrarle al usuario la matriz de 10x10 donde el usuario pueda darle click a una celda se podria decir que es una posicion de la matriz que el usuario vea que hay un grupo de celdas mayor o igual a cuatro que sean iguales o del mismo color , es parecido al juego Bejeweled donde hay grupos de colores distintos y el usuario puede darle click para que se eliminen  y que los que estan arriba de los que se eliminaron bajen a los puestos vacios


    Dark
    jueves, 18 de agosto de 2011 21:37