Juego de damas en JAVA

satpierre -  
 satpierre -
Hola,

Siendo estudiante de informática, tengo que realizar un juego de damas (jugador contra ordenador) como parte de mi proyecto.
No sé muy bien cómo empezar, tengo varias ideas. El objetivo de este proyecto es la programación orientada a objetos. Primero pensé en algo así:

Clase Coordonnee, con atributos: absisse y ordonne
Clase Pion, con una posición (tipo Coordonnee) y un color (booleano -> negro o blanco)
Clase Case, con una coord (tipo Coordonnee) y estVide (booleano verdadero si la casilla está vacía)
Clase Damier, que sería 2 listas de Case y de Pion

El problema es que no sé si lo que he hecho es correcto. Creo que podría complicarme las cosas...

Las entradas para los movimientos deben hacerse en la consola...

Si el jugador introduce las coordenadas de un pion, tendré que recorrer toda la lista de pion para encontrar el pion correspondiente. ¡Y esto con muchas pruebas (ver si el pion puede moverse, etc.)!

No sé muy bien qué hacer, si tienen alguna solución... ¿Podrían ayudarme, por favor?!!!
Configuración: Windows Vista Internet Explorer 7.0

14 respuestas

mateo17 Mensajes publicados 20 Estado Miembro 3
 
Creo que estás bastante bien,
¿es solo en modo consola o estás usando swing?
en swing puedes utilizar un array bidimensional de JLabel, en el que adjuntas una imagen correspondiente a tu casilla, ficha..., y detectas el clic en este JLabel.
1
satpierre
 
¿Swing? No conozco. De hecho, el juego debe mostrarse en gráfico, pero la entrada de coordenadas, etc., debe hacerse en la consola. La interfaz gráfica solo sirve en realidad para mostrar.
0
mateo17 Mensajes publicados 20 Estado Miembro 3
 
el swing es la biblioteca gráfica de Java..
¿con qué haces la interfaz?
0
satpierre
 
Por el momento, no sé muy bien.. Solo hemos utilizado las interfaces gráficas una vez.
Confieso que me estoy concentrando un poco más en el código.

¿Está bien mi modelización? Temo que el hecho de hacer 2 listas de piezas y de casillas sea demasiado. Otras personas han hecho una tabla 2D, pero en ese caso tengo la sensación de que no sirve de nada poner coordenadas en la clase pieza y en el objeto...

Confieso que es un poco confuso para mí.
0
mateo17 Mensajes publicados 20 Estado Miembro 3
 
los 2 métodos pueden funcionar perfectamente, todo depende de cómo manejes eso detrás...
personalmente habría utilizado la tabla 2D porque para gestionar la visualización gráfica es más fácil
¿programas con Eclipse?
0
satpierre
 
De acuerdo, pero entonces, ¿qué pones en tu tabla 2D? Esa fue mi primera idea, pero luego, al intentar poner las casillas y las fichas, tuve un poco de dificultad para entender cómo hacerlo, finalmente, qué poner.

Lo que no quiero es mezclar código y visualización. Porque en la primera versión, tiene que poder mostrarse completamente en la consola también.

En la universidad programamos en Scintilla Text, pero en casa, prefiero Eclipse.
0
mateo17 Mensajes publicados 20 Estado Miembro 3
 
en tu tabla gestionas tus filas y columnas, haces una tabla 2D de int (int[][]) eliges, por ejemplo, poner 0 para una casilla vacía, 1 para una ficha blanca y 2 para una ficha negra, en modo consola lo muestras y en tu interfaz harás una función que convierta tu tabla...
en Eclipse conozco buenos editores de Swing, Jigloo y Visual Editor
0
satpierre
 
¿Y entonces, nada de clase case ni ficha?
Tengo un poco de miedo de que eso haga que sea menos orientado a objetos. Pero esa era mi primera idea. Después, también hay que tener en cuenta las damas.
También hay que poder deshacer el movimiento realizado y al final, revisar la partida completamente.
0
mateo17 Mensajes publicados 20 Estado Miembro 3
 
si al peor puedes asociar los 2, haces una clase tablero, donde haces una tabla en 2D de piezas (la clase pieza)
y en tu objeto pieza gestionas el color, las coordenadas...
0
satpierre
 
Ok, pero después, ¿cómo gestionas el hecho de que hay una ficha o no en el tablero?
¿y los movimientos?
0
mateo17 Mensajes publicados 20 Estado Miembro 3
 
En cada casilla de la tabla tienes un objeto pieza, que tiene un atributo valor (negro, blanco...). Pruebas este valor para los movimientos.
Para los movimientos, recuperas las coordenadas ingresadas y las pruebas en la tabla 2D, observas alrededor de la casilla si el movimiento es posible; si es así, devuelves las piezas, cambias el valor del atributo del objeto pieza de las casillas correspondientes.
0
satpierre
 
Sí, entiendo muy bien la prueba. Sin embargo, ¿quieres decir que el atributo valor toma otro valor si la ficha no existe?

Por otro lado, ¿cuál es el interés de poner coordenadas si los índices para el arreglo 2D pueden ser utilizados?
0
mateo17 Mensajes publicados 20 Estado Miembro 3
 
sí, si no hay peón, pones otro valor
tienes razón, las coordenadas no son necesarias.
0
satpierre
 
De acuerdo, gracias por tu ayuda de todos modos.
¿Y cómo me aconsejas que haga para anular 1 o varios movimientos y también revisar toda la parte?
Pensé en una clase Historial que contenga una lista de Movimiento. Movimiento siendo una clase con los atributos: coordenadaInicio de tipo coordenada, lo mismo para la llegada, el color y la pieza capturada si hay una captura.
0