Pages - Menu

martes, 8 de abril de 2014

Tic-Tac-Toe: Ahora con objetos, Parte II

En la ultima entrada dejamos nuestro tic-tac-toe, que aunque funcionaba, no estaba bien echo del todo ya que un jugador podía poner fichas donde ya lo había puesto otro, si ninguno de los jugadores ganaba el juego continuaba, y por último, pese a usar un lenguaje orientado a objetos, no usamos ningún objeto. En la nueva versión vamos a solucionar todo esto.

Diseñando las primeras clases

Primero vamos a diseñar las clases que vamos a usar y para ello echaremos mano de UML. Para aquellos que pasen de realizar diseños y quieran empezar directamente con el código; que se quiten esa idea de la cabeza, ya que si no se prepara un buen diseño antes de programar, nos saldrá un churro de código en cualquier proyecto medianamente amplio. Este proyecto, quizás no entre en la categoría de proyecto medianamente amplio, pero de esta manera será más ilustrativo.

Jugador

Este es un enumerado usado para indicar el jugador al que pertenece una ficha, quien es el ganador, de quien es el turno, etc. Se compone de tres constantes:
  • VACIO: representa a que no es ningún jugador.
  • CRUZ: representa al jugador con la cruz.
  • CIRCULO: representa al jugador con el circulo.

Tablero

La clase tablero, va a ser casi la clase más importante, ya que es la encargada de manejar el estado del tablero. Las principales funciones para el tablero son:

  • isTableroLleno: Para saber si se pueden colocar más fichas en el tablero.
  • getGanador: devuelve el ganador si lo hay; si no devuelve jugador VACIO.
  • insertarFicha: añade una nueva ficha al tablero.
  • dibujar: esta función se encargara de dibujar el tablero en la pantalla.

Ficha

Esta clase es para representar cada una de las posiciones del tablero y almacena a que jugador pertenece. El motivo por el que no hemos guardado directamente las posiciones en el tablero es porque en un futuro esto nos permitirá gestionar más fácilmente que se dibuja en pantalla. Tan solo tiene 3 funciones:
  • setJugador: que se usa para establecer a que jugador pertenece una ficha; además se asegura de que no se sobreescriba una ficha.
  • getJugador: sirve para saber a que jugador pertenece una ficha.
  • dibujar: esta función se encargara de dibujar la ficha en la pantalla.

Estas son las primeras clases que voy a comentar; en la segunda parte, comentaré sobre la última clase que me queda (la más importante) y como se comunican las clases entre sí.

No hay comentarios:

Publicar un comentario