Documentos de Académico
Documentos de Profesional
Documentos de Cultura
a) ENTRADAS
b) SALIDAS
c) CONDICIONES
d) DESCRIPCIÓN DE CICLOS
Se realiza un for controlado por un contador i < 8 para crear los 8 Paneles con sus
respectivas características.
Para crear la matriz de botones se realiza un doble for, controlados por contadores
y crea cada pieza de la matriz.
Mientras la pieza inicial colocada sea igual a otra junto a ella se cambia.
En eliminar se realiza un for controlado por un contador i, mientras sea menor al
tamaño del vector de coordenadas que debe eliminar.
En intercambio se realiza un for controlado por un contador i que recorre toda la
fila evaluando si debe realizar un cambio.
En reposicionar se realiza el for controlado por i < 8 para evaluar los 8 paneles del
tablero.
Mientras haya un cambio se debe repetir la función, tanto en reposicionar como en
verificar.
Se realiza un doble for para revisar todas las piezas.
Clase: JuegoMario
Se importó javax.swing.* y java.awt.*. Se creró la ventana de tipo JFrame llamada form
con su respectivo título; luego se definió que hacer cuando la ventana se cierre lo cual era
terminar la ejecución del juego. Se creó un objeto de la clase Menu, el cual se agregó al
JFrame. Se estableció que no se pudiera cambiar de tamaño a la ventana, luego se
adapto el tamaño a los componentes. Se indicó que al salir la ventana se mostrara justo
en el centro de la pantalla y por último se establece que sea visible dicha ventana.
f) CLASES
Clase: Panel
Atributos
Métodos
Cambia el valor del atributo imagenFondo con el valor que trae el parámetro; luego manda
a llamar al paintComponent para que se vuelva a dibujar la imagen de fondo.
Clase: Pieza
Atributos
Métodos
Se cambia el valor del atributo pos_x con el valor del parámetro pos_x ingresado.
Se cambia el valor del atributo parent con el valor del parámetro Panel ingresado.
Se cambia el valor del atributo identificador con el valor del parámetro id ingresado.
Primero se agrega la pieza actual al parent. Se crea una variable SpringLayout que fue el
layout utilizado para determinar posiciones de los componentes en los paneles; dicha
variable recibirá el layout del panel; luego con esta variable se especifica a le distancia se
mostrará la pieza actual de la esquina izquierda del Panel.
Clase: Juego
Atributos
public Juego()
public int revisar(int px, int py, int id, int izde)
Se crea un String llamado s, el cual se le asigna las coordenadas actuales con los valores
que fueron ingresados en los parámetros; s tiene el siguiente formato: s = px + “,”+py+”:”.
Luego se evalúa si px y py siguen dentro de la matriz; luego si la matriz en la posición px,
py no es igual a null, la matriz en la posición px, py llama a getIdentificador() y lo compara
con id, los cuales deben ser iguales y coord._iz o coord._der que son un String global no
posee dichas coordenadeas entonces si izde es igual a cero se le agrega a coord._iz las
coordenadas actuales sino se le agrega a coord_der las coordenadas actuales, y se
devuelve 1 + revisar (x+1,y,id,izde) + revisar(x-1,y,id,izde) + revisar(x,y+1,id,izde) +
revisar(x,y-1,id,izde) , en caso no se cumpla una de las cuatro especificaciones la función
devuelve 0.
Crea dos vectores de String xy y coord.; coord será el s convertido en vector por medio de
Split separado por “:” así separamos las coordenadas que debemos eliminar; luego desde
0 hasta el tamaño de coord. Se crea xy con Split separado con “,” de coord en la posición
correspondiente para separar la coordenada x de la coordenada y las cuales revisan que
si la pieza es diferente de null entonces se elimina del parent; por cada pieza eliminada se
suma 5 puntos y se establece el nivel según los puntos; cada 500 puntos hay un cambio
de nivel, luego se actualiza el Panel y se le asigna que es igual a null. Luego se actualizan
los datos para que se muestre en pantalla.
Se crea una variable boolean que inicia con false llamada change y especificara cuando
cambio algo de posición; desde 0 hasta 4 (lado izquierdo del tablero) se evalua si piezas
en la posición i,y es diferente de null y piezas i+1,y es null entonces change recibe true e
intercambia la pieza i,y por la i+1,y así queda el null de lado izquierdo; de igual forma se
hace de lado derecho solamente que se evalua el i-1. Este método regresa change, es
decir, es true si hubo algún cambio en la matriz.
Se hace un ciclo que recorra todas las filas de tablero llamando a intercambio mientras
sea verdadero; al momento de ser falso quiere decir que la fila ya está en orden por lo que
ya se puede paras a la siguiente fila.
Se crea una variable boolean llamada cambio que inicia falsa, indicará si hubo algún
cambio en la matriz. Se crea un entero llamado ne para contabilizas número de piezas
iguales. Por medio de un ciclo doble se recorre la matriz y en cada posición se llama a
revisar y se le asigna dicho valor a ne. Si ne>2 entonces cambio es verdadero y se manda
a eliminar y luego a reposicionar. Al terminar los ciclos se evalua y si cambio fue true
entonces llama recursivamente a verificar, hasta que ya no elimine mas piezas.
Se colocan en las posiciones originales a pi_iz y pi_der, se vuelven visibles según toque
bala, bomba o pieza normal; si el valor de iguales de lado izquierdo es mayor que dos
elimina las coor_iz y establece que elimino es verdadero; de igual forma se evalua de lado
derecho. Si elimino es verdadero entonces llama a reposicionar y luego a verificar.
Se crea un string llamado s que guardará las coordenadas de las piezas que debe
eliminar; revisa en toda la fila por medio de un for, y si la pieza existe entonces sus
coordenadas son agregadas al string; luego se llama a eliminar enviando como parámetro
el string con las coordenadas, luego se reestablece el punteo y el nivel y se muestran en
pantalla; por último se colocan y se vuelven visibles las piezas laterales.
public void bomba(int id)
Recorre toda la matriz buscando piezas con el identificador del parámetro; al encontrar
agrega su coordenada en un string que al terminar el for se llama a eliminar con dicho
string; luego se reestablece el punteo y el nivel y se muestran en pantalla; al eliminar se
llama a reposicionar y a verificar por si acaso existen de nuevo tres piezas iguales juntas;
por último se colocan y se vuelven visibles las piezas laterales.
Si posición es menor que a donde debe llegar o si la pieza es diferente a una bala se le
suma 5 a posición y se coloca en su nueva posición; esto es para animar el juego al
momento de darle click. Si ya llego a donde debería se detiene el timer izquierdo se
detiene; luego se establece que movei es falso, se coloca la pieza ya en lo posición
exacta de donde debería posicionarse, luego se evalúan los click y si ya pasaron 10 clicks
se cambia el identificador del next a una bala; luego si ya pasaron otros 10 click se
cambia el identificador del next a una bomba y así sucesivamente, si no es múltiplo de 10
el lanzamiento el identificador del next izquierdo se escoge aleatoriamente; luego se
cambia el identificador de pi_iz por el identificador que tenía el next_iz. Se evalúa si la
pi_der aun se mueve y si no entonces en_moviemiento es igual a falso, al ocurrir esto se
verifica y si la pieza es una bomba se manda a llamar al método bomba sino manda a
llamar a evaluar.
Si posición es mayor que a donde debe llegar o si la pieza es diferente a una bomba se le
resta 5 a posición y se coloca en su nueva posición; esto es para animar el juego al
momento de darle click. Si ya llego a donde debería se detiene el timer derecho se
detiene; luego se coloca el identificador del next derecho a la pieza lateral derecha; luego
se evalúa y si ya pasaron 10 turnos se cambia el next derecho a una bala, luego a los
siguientes 10 turnos se cambia por una bomba y así sucesivamente; luego se establece
que moved es falso, se coloca la pieza ya en lo posición exacta de donde debería
posicionarse, si no toca bala o bomba el identificador de next_der se selecciona al azar
para sacar otra pieza aleatoria. Se evalúa si la pi_iz aun se mueve y si no entonces
en_moviemiento es igual a falso, al ocurrir esto se evalúa y si la pieza lanzada es una
bala manda a llamar al método bala, sino manda a llamar a evaluar.
Se evalúa si no está en movimiento entonces se realiza un casting del objeto que disparó
el evento para que sea un Panel, se crea un entero que se le asiga el getNo_Fila del
Panel; se crea una ImageIcon con la imagen del fondo del panel original, es decir, sin luz;
luego se cambia el fondo a esta imagen así cuando el mouse salga del panel se observa
que el fondo vuelve a ser el de antes; luego la pi_iz y la pi_der se eliminan de este panel,
el cual se actualiza y así ya no se muestran estas piezas en él.
Si no está en movimiento entonces se realiza un casting del objeto que disparó el evento
para que sea un Panel, se crea un entero que se le asiga el getNo_Fila del Panel. Luego
se hace un for donde se calcula el valor de im, el cual es cuantos espacios debe moverse
hasta llegar a uno ocupado. Si im es igual a cero entonces lose = verdadero; sino xi
recibirá cuanto se debe mover en pixeles; lo mismo se realiza con el lado derecho se hace
el for y evalua si lose es falso para calcular jm y luego si jm es igual a 11 entonces lose =
verdadero el juego sino xd se calcula el cual es la distancia que se mueve la pi_der. Si
lose es falso entonces las piezas se crean en el tablero, sus posiciones iniciales de
movimiento es 0 y 650 para la pi_iz y la pi_der respectivamente, la varialble
en_movimiento, movei y moved se vuelven verdaderos, se le suma al contador de click 1
y luego se limpian las coordenadas y se inicianlos timers. Si lose es verdadero entonces
se crea loser de la clase Perdio, se remueve el parent y se agrega loser.
Clase: Perdio
Atributos
public Perdio()
Se cambia el layout a GridLayout(1,1) para que los objetos salgan pegados a la ventana;
crea el label con una imagen para jugar de nuevo, se le agrega el MouseListener. Se crea
el parent y se agrega el label a este parent; se crea un SpringLayout para posicionar el
boton dentro del parent; luego se posiciona el botón estableciendo las distancias tanto de
top como left; se asignan las dimensiones del parent y se agrega a la clase.
Clase: Menu
Atributos
Métodos
public Menu()
Se cambia el layout a un nuevo GridLayout(1,1) para que los objetos estén pegados a la
ventana, luego se crean los botones (jugar y de instrucciones); luego se le agrega el
listener a ambos botones. Se crea el parent, se crea un SpringLayout para colocar los
botones en el parent en su posición exacta; los botones se posicionan y se agregan al
parent; se le define el tamaño al parent y se agrega a la clase.
Private class OnClickPlay extiende de MouseAdapter
Clase: Instrucciones
Atributos
Métodos
public Instrucciones()
Se cambia el layout a GridLayout para que los objetos queden pegados a la ventana; se
crea el boton para jugar, se le agrega el Listener. Se crea el parent y se le agrega el
botón; se crea un SpringLayout para posicionar el boton dentro del paretn y se coloca; se
le define tamaño al parent y se añade a la clase.