Analisis


Análisis:
1.   Clases:
a.     Dialog:
                                                              i.      Importaciones:
1.       javax.swing.*
2.       java.awt.*
3.       java.awt.event.*
                                                            ii.      Atributos:
1.       priate int board_size
                                                          iii.      Métodos:
1.       Constructores:
a.       Perzonalizado:
                                                                                                                                       i.      public Dialogue (Frame parent, boolean modal, String title, boolean close)
1.        Crea un cuadro de dialogo donde el usuario puede ingresar los datos en vez de usar cmd
2.        Aquí el usuario ingresa el tamaño del tablero con el que desea jugar y al mismo tiempo se revisa que el número ingresado sea valido.
2.       Sets y Gets:
a.       Set:
                                                                                                                                       i.      private void setBoard_size(int board_size)
1.        Cambia el valor de board_size
2.        Es privado porque solo lo utiliza el constructor, no lo debe de utilizar el usuario
b.      Get:
                                                                                                                                       i.      public int getBoard_size()
1.        regresa el valor actual de board_size
b.    Board:
                                                              i.      Importaciones:
1.       java.awt.event.*
2.       java.awt.*
3.       javax.swing.*
                                                            ii.      Atributos:
1.       private Button[][] matrixGame
2.       private Button[][] matrix
3.       int counter
4.       int[] press = new int[8]
5.       private GridLayout layout
6.       private int board_size
7.       private int level
8.       private int pointts
                                                          iii.      Métodos:
1.       Constructores:
a.       Predefinido:
                                                                                                                                       i.      public Board()
1.        inicializa un tablero de juego de 8 por 8
b.      Personalizado:
                                                                                                                                       i.      public Board(int board_size)
1.        inicializa un tablero de juego con las dimensiones del parámetro ingresado
2.       De Apoyo:
a.       private void initObjectos(int board_size)
                                                                                                                                       i.      Crea la matriz de botones del tablero de juego
b.      private void onClick(String index)
                                                                                                                                       i.      permite que haya eventos individuales para cada boton
c.        prívate void initOriginalMatrix(int level)
                                                                                                                                       i.      Crea una matriz maestro pala almacenar las matrices siguientes
d.       Prívate void getXYAreaButtons(int[] corners)
                                                                                                                                       i.      Cambia los botones dentro del area seleccionada
3.       Servicios:
a.       public void initGameMatrix(int board_size)
                                                                                                                                       i.      configure la matriz para el juego
b.      public boolean isSquare(int [] coordinates)
                                                                                                                                       i.      revisa que los buttons seleccionados  formen un rctangulo
c.       public void modifyButton(int row, int col)
                                                                                                                                       i.      cambia un boton en el tablero
d.      public int[] getAreaButtons(int[] coordinates)
                                                                                                                                       i.      devuelve una matriz con as coordenadas de las esquinas opuestas
e.      public boolean allSelected()
                                                                                                                                       i.      devuelve true si ya ha sido cambiados todos los botones originales
f.        Gets y Sets:
                                                                                                                                       i.      Gets:
1.       public int getBoard_size()
2.       Public int getPoints()
                                                                                                                                     ii.      Sets:
1.       Public void setPoints(int points)
g.       ToString
                                                                                                                                       i.      public String toString()
c.     Button:
                                                              i.      Importaciones:
1.       java.awt.Color
2.       javax.swing.*
3.       java.util.*
                                                            ii.      Atributos:
1.       private boolean was_selected
2.       final static char SELECTED_CHAR = '.'
                                                          iii.      Constantes
1.       final ImageIcon icon = new ImageIcon(“Images/Blue.png”)
2.       final public color[] color = {Color.darkGray, Color.blue, Color.green, Color.red, Color.orange, Color.magenta, Color.black}
                                                         iv.      Métodos:
1.       Constructores:
a.       Predefinido:
                                                                                                                                       i.      public Button(int level); was_selected = false
b.      Personalizado1:
                                                                                                                                       i.      public Button(char character, boolean was_selected)
c.       Personalizado2:
                                                                                                                                       i.      public Button(char character): was_selected = false

2.     Gets y Sets
a.       Gets:
                                                                                                                                       i.      public boolean getWas_selected()
1.       Regresa el valor actual de was_selected
                                                                                                                                     ii.      public Color getColor()
1.       Regresa el valor acyual de color
b.      Sets:
                                                                                                                                       i.      public void setWas_selected(boolean was_selected)
1.       Cambia el valor de was_selected
                                                                                                                                     ii.      public void setColor(Color color)
1.       Cambia el valor actual de color
3.     toString:
a.       public String toString()
d.    About
                                                              i.      Importaciones:
1.       javax.swing.*
2.       java.awt.event.*
3.       java.io.*
4.       java.util.*
                                                            ii.      Constructor
1.       Public About()
                                                          iii.      Metodos de Apoyo:
1.       Prívate void initObjects()
a.       Inicializa  configura todos los objetos utilizados en la clase
2.       Private String sicense()
a.       Devuelve el Stringh del archivo de la licencia
e.    Interface
                                                              i.      Importaciones
1.       Javax.swing.*
2.       Java.awt.*
3.       Java.awt.event.*
                                                            ii.      Constructor
1.       Public Interface(int board_size)
                                                          iii.      Metodos de Apoyo
1.       Private void initObjects(int board_size)
a.       Inicializa todos los objetos usados en la clase
f.      Status
                                                              i.      Importaciones:
1.       Java.swing.*
2.       Java.util.Scanner
3.       Java.io.*
4.       Java.awt.*
                                                            ii.      Atributos
1.       Private static int level
2.       Private static int gamePointts
                                                          iii.      Variabbles estáticas:
1.       Static JTextArea instructions = new JTextArea()
2.       Static JLabel points = new JLabe()
3.       Static JLabel jLevel =new JLabel()
                                                         iv.      Constructor
1.       Public Status(int pLevel, int points)
                                                           v.      Metodos de apoyo
1.       Private void initObjects()
a.       Inicializa los objetos usados en la clase
2.       Private String instructions()
a.       Devuelve el archivo que contiene las instrucciones
                                                         vi.      Gets y Sets:
1.       Set:
a.       Public static void setGamePoints(int gpoints)
2.       Get
a.       Public static int getGamePoints()
g.    Splash
                                                              i.      Importaciones
1.       Java.swing.*
2.       Java.awt.*
                                                            ii.      Constructor
1.       Public Splash(String file, Frame parent, int time)
Método Main:
Entradas:
El susario ingresa el tamaño del cuadro y luego, con el mouse, ingresa las coordenadas de los cuadros que ha elegido como las esquinas de su rectángulo.
Salidas:
Cuadros de dialogo para errores y para los mensajes para pedir datos.
La matriz de botones, que son los blocks del juego.
Condiciones:
Los cuatro botones seleccionados por el usuario deben formar un rectángulo.
Las esquinas del rectángulo formado por el usuario deben ser del mismo color.
El número que ingrese el usuario para el tamaño del tablero debe de ser un número entero entre 6 y 20.
El usuario no arrastra el mouse, sino que hace click en cada una de las esquinas que desea se conviertan en las esquinas de su rectángulo.
Ciclos:
El ciclo para hacer la matriz: crea objetos button en cada una de las casillas de la matriz, se acaba cuando se llenan todas las casillas.

El juego: se trata de crear un rectángulo y se suman los puntos, además se agregan nuevos objetos button. Esto se repite hasta que se llega al punteo máximo.
El programa: al terminar cada juego el usuario puede seguir creando juegos nuevos o pedir salir del programa.
Algoritmo Narrativo:
Inicio
Pedir al usuario el tamaño del tablero con el que desea jugar
Armar la matriz del tamaño pedido por el usuario
Mientras el puntaje del jugador no llegue al puntaje máximo y el usuario no pida salir del juego:
Dejar que el usuario intente construir un rectángulo
Verificar que las esquinas seleccionadas formen un rectangulo
Verificar que las cuatro esquinas del rectángulo sean del mismo color
Si las esquinas forman un rectángulo y son del mismo color:
Medir el área del rectángulo, en buttons
Sumar el punteo
Eliminar los buttons que forman parte del rectángulo
Reemplazar los buttons eliminados por nuevos buttons
De lo contrario (Else):
Mostrar un mensaje que diga al usuario que el rectángulo no es válido
Fin si
Fin mientras
Mientras el usuario no pida salir del programa:
Pedir al usuario el tamaño del tablero con el que desea jugar
Armar la matriz del tamaño pedido por el usuario
Mientras el puntaje sea menor al puntaje máximo y el usuario no pida salir del juego:
Dejar que el usuario intente construir un rectángulo
Verificar que las esquinas seleccionadas formen un rectangulo
Verificar que las cuatro esquinas del rectángulo sean del mismo color
Si las esquinas forman un rectángulo y son del mismo color:
Medir el área del rectángulo, en buttons
Sumar el punteo
Eliminar los buttons que forman parte del rectángulo
Reemplazar los buttons eliminados por nuevos buttons
De lo contrario (Else):
Mostrar un mensaje que diga al usuario que el rectángulo no es válido
Fin si
Fin mientras
Fin mientras
Fin