Juego de mesa en Java

Guismos Mensajes publicados 18 Estado Miembro -  
Eltorosam137 Mensajes publicados 33 Estado Miembro -
Hola,

Quiero hacer un pequeño juego de mesa en lenguaje Java. ¿Tienes algunos consejos para mí para comenzar? Me gustaría saber cómo organizar mis clases (poner qué tipos de clases juntas, etc. por ejemplo, para los botones, para la interfaz del tablero, ...). ¿Por dónde debería empezar? ¿Es más interesante implementar primero la interfaz o primero las funcionalidades? En fin, si alguien tiene buenos consejos para mí (sitios donde pueda ver, ...) sería genial, gracias :)
Configuración: Windows XP Internet Explorer 7.0

4 respuestas

kij_82 Mensajes publicados 4102 Fecha de registro   Estado Colaborador Última intervención   857
 
Hola,

Ya has entendido bien que hay que disociar el lado gráfico del motor de tu futura aplicación, es una buena cosa.

En cuanto a la organización de tus clases, efectivamente lo mejor es agruparlas en paquetes relacionados con su funcionalidad. Un (o varios) paquetes / subpaquetes para todo lo que se refiere a la interfaz gráfica. Lo mismo para lo que respecta al motor de la aplicación, otros para "utilitarios", por ejemplo, en los que agruparás las interfaces de constantes, clases abstractas para funcionalidades independientes del contexto (funciones básicas, etc.)

En lo que respecta a saber por dónde empezar, depende de las personas y de los gustos de cada uno, pero yo tendería a decir que siempre hay que centrarse en el programa mismo y sus funcionalidades en lugar de en el aspecto gráfico.
Cuidado, esto no impide en absoluto pensar en uno mientras piensas en el otro, al contrario, hay que poder elaborar estos dos aspectos juntos según tu objetivo final.

Por ejemplo, supongamos que desarrollas un juego de damas: para elaborar tu función de desplazamiento de una pieza, tendrás que pensar en cómo vas a mostrar tus componentes gráficamente (casillas, piezas, etc.)

Al final diría que debes comenzar definiendo todo lo que tu proyecto debe hacer, la manera en que lo va a hacer, los medios que quieres emplear (puedes hacerlo en 2D o 3D, por ejemplo, para el aspecto gráfico), etc.
Luego haz el motor, y finalmente lo gráfico. (O ambos en paralelo)

--

~ No olvides la etiqueta "Resuelto" cuando tu problema esté... resuelto :) ~
0
Guismos Mensajes publicados 18 Estado Miembro
 
Lo siento, no puedo ayudar con eso.
0
kij_82 Mensajes publicados 4102 Fecha de registro   Estado Colaborador Última intervención   857
 
Mamá, está bien, ya veo.
Cuando era estudiante, tuve que hacer un juego de damas en Java (entre otras cosas), lo cual se asemeja a tu problema.

La problemática de cómo mover una pieza de un casilla a otra se puede descomponer de la siguiente manera:
- tienes el aspecto gráfico (un tablero sobre el que tienes piezas)
- tienes el aspecto memoria (similar al tablero (generalmente un arreglo 2D) con objetos del tipo pieza)

La forma de generar un movimiento de pieza es bastante simple en sí:
- del lado del usuario, debe hacer clic en la casilla donde se encuentra la pieza a mover, y luego en la casilla final donde la pieza debe ser colocada.
- del lado del programa:
+ interfaz gráfica: las casillas donde se encuentran las piezas deben ser clicables (únicamente aquellas donde hay piezas, así no tienes que controlar la presencia de una pieza en la casilla después del clic, ya sabes que ya es el caso). Después del primer clic, las casillas "disponibles" deben ser clicables. La noción de "disponible" debe definirse según tu aplicación/juego. Por ejemplo, para un juego de ajedrez, necesitarás un algoritmo para definir qué casilla es posible para el movimiento según el tipo de pieza a mover (caballero, reina, etc.). Para un juego de damas, serán las casillas adyacentes en diagonales, incluso aquellas un poco más lejos si una pieza adversaria está en una de las casillas adyacentes o si mueves a una dama.
+ motor/programa = aspecto memoria: A cada casilla gráfica corresponde una casilla de tu arreglo en memoria (que representa en grosso tu tablero gráfico). Cada casilla puede estar vacía o contener un objeto de la clase Pieza (que tú mismo has descrito). Así, el objetivo de tu programa será mover estos objetos de pieza de casilla en casilla a medida que se soliciten los movimientos. La reconstrucción/actualización del tablero gráfico siempre debe hacerse sobre este arreglo en memoria en un instante dado, así limitas la información a un solo lugar: el arreglo en memoria. Si, por ejemplo, encuentras un error mientras juegas: una pieza está mal colocada gráficamente, sabes que el error proviene de la gestión de memoria/movimiento de tus objetos ya que la construcción gráfica, en principio, siempre es la misma y no depende de factores externos/vinculados al juego.

Aquí tienes una pequeña explicación, esperando que no sea incomprensible ^^
Intenta hacer tu proyecto con otras personas, pídele ayuda, será más sencillo (aunque sea para tener información)

--

~ No olvides la etiqueta "Resuelto" cuando tu problema esté... resuelto :) ~
0
Guismos Mensajes publicados 18 Estado Miembro
 
¡Muchas gracias! Eso ya me orienta hacia algunas ideas concretas que me faltaban de manera urgente ;) Ya estoy trabajando en mi proyecto con otras personas, y el problema es que todos estamos en la misma situación, es decir, en lo nuevo (hemos programado en otros lenguajes y Java nos parece desconocido hoy en día). De todos modos, ¡gracias por tus consejos y explicaciones!
0
Eltorosam137 Mensajes publicados 33 Estado Miembro 7
 
Llego un poco tarde, pero yo también tengo un proyecto de juego de mesa en JAVA, ya había integrado las nociones mencionadas por kij_82.
Pero tengo un problema: ¿cómo definir las casillas disponibles o no? Logro crear mis casillas disponibles, pero si estoy al borde del tablero, mis fichas pueden salir, lo cual es un error algorítmico, lo reconozco… Entonces, ¿alguien podría aclararme este obstáculo al que me enfrento? :S

Gracias :)
0