You are on page 1of 8

Proyecto No.

2
Christopher Luttmann
Juan Carlos Rosito
Diego Castillo

ANALISIS PPROYECTO 2
PUMPKINS

a. Entradas:
El usuario hará clic sobre un botón, dicho clic será una entrada.
El usuario unidamente hará clic en la fila en que desee colocar las
calabazas correspondientes o la opción cualquiera se le solicite.

b. Salidas:
En pantalla se mostrara:
Diferentes Frames con lo siguiente:
Un menú de opciones.
Uno de instrucciones.
Uno en el cual está contenido el juego.
Mensajes de aviso:
Cambio de nivel.
Si el usuario a perdido el juego.
El nivel de juego.
Las figuras de la siguiente jugada.
La matriz de Labels que contendrá dentro un tipo de calabaza o un
espacio vacío dependiendo del caso.
c. Condiciones:
* Con un Click se deben agregar dos calabazas a la matriz en la fila
donde el usuario seleccione colocar las dos calabazas nuevas.
* La selección de calabazas nuevas a la matriz deben ser aleatorias.
* Se iniciara con 4 tipos distintos de calabaza
* Cada aumento de nivel significa un tipo de calabaza nueva y mayor
puntaje el que debe de realizar el usuario.
* Deben de encontrarse por lo menos 3 calabazas del mismo tipo juntas
ya sea vertical, horizontal o en forma de L para eliminarlas y darle puntos al usuario.
* Si aparece un hueso entre las calabazas esta debe eliminar toda la
fila donde es colocado.
* La matriz debe de iniciar con las 2 columnas centrales llenas de
calabazas seleccionadas al azar sin que hayan 3 o más del mismo tipo juntas.
* Si se llena una fila de calabazas automáticamente el jugador pierde el
juego.
* Si el jugador cuando pierde posee más puntos que el puntaje máximo
anterior este puntaje es almacenado como el puntaje máximo.
* Si se selecciona el botón de jugar se iniciara un Frame nuevo con las
herramientas del juego, y si se selecciona el botón de instrucciones se mostraran las
normas del juego en un Frame nuevo.

Programa Principal:

Descripción del curso lógico (Algoritmo narrativo):

La ejecución del programa inicia mostrando un Frame que sería el menú del
juego. En este menú se encontraran dos botones y una imagen. Los dos botones que
estarán presentes será uno llamado "Instrucciones" y "Iniciar". Si se da clic en el botón
instrucciones, se desplegara un nuevo Frame o una nueva ventana en la cual se
mostrara una imagen con las instrucciones del juego.

Si se da clic en el botón Iniciar se desplegara un Frame nuevo que contendrá los


componentes necesarios para el funcionamiento del juego.

El juego está constituido por la lógica y sus elementos gráficos. La lógica será
realizada por una clase aparte llamada matriz, la cual al momento de que se dé un evento
en el aspecto gráfico esto utilizara métodos de dicha clase aparte, para definir qué
sucederá a determinada acción. Esta relación gráfico-lógico será la base fundamental
del programa del juego.

Si se da clic en el área que comprende el espacio de juego, esto provocara que se


revise el estado de la matriz de imágenes para ser comparadas con la lógica, la cual está
construida con enteros. Al revisar dicha matriz la calabaza se moverá.
Si se da el caso de que estén en línea ya sea horizontal, vertical en forma cruzada tres o
más calabazas estas se eliminaran.
Si el usuario obtiene una cantidad determinada de puntos, esto provocara que se cambie
de nivel.

Si se da cambio de nivel, han de aumentar el número de calabazas en el juego, y


habrá más tipos de las mismas.
Si se da el caso que se llena una fila de la matriz hasta sus extremos, esto provocara que
el usuario pierda el juego.
Si el usuario pierde el juego, se muestra un mensaje con su punteo.
Si el usuario presiona el botón "reinicio" el juego comenzara nuevamente.

De cada una de las tres ventanas es posible salir únicamente cerrando la ventana
que se desee y si se cierra la ventana terminara la ejecución.

Clase: Proyecto2

Proyecto2 es la clase que contiene el método main y es el que inicia la ejecución del
programa. En el solo se declaran propiedades básicas de un frame y se la añade un
objeto del tipo MenuOpciones para que muestre en pantalla el panel de este objeto.

Clase: MenuOpciones extends JPanel

 Atributos:
Visibilidad Tipo Identificador Observación
Private JPanel panelX
Private JPanel panelY
Private JPanel panelZ
Private JButton jugar
Private JButton instrucciones
Private JLabel Imax
Private JLabel C
Private JLabel b

 Métodos:
Visibilidad Tipo de retorno Identificador Parámetros Funcionalidad
public ---- MenuOpciones ---- Inicializa los
componentes
como paneles,
botones y Labels
y si es necesario
les anida un
evento.
Clase: Instrucciones
 Atributos:
Visibilidad Tipo Identificador Observación
Private JPanel panelin
Private JLabel instru

 Métodos:
Visibilidad Tipo de retorno Identificador Parámetros Funcionalidad
Public ---- Instrucciones ----- Inicializa el
estado del objeto
mostrando las
instrucciones del
juego en un Label

Clase: Calabazas
 Atributos

Visibilidad tipo identificador Observación


Prívate ImageIcon[][] Matriz Matriz que contiene
las figuras de calabaza
Prívate JPannel Panel4 Mostrar el juego
Prívate JPannel Panel5 Mostrar los siguientes
2 opciones de
calabaza
Prívate JButton reiniciar Botón que se utiliza
para reiniciar juego

 Métodos

visibilidad Tipo de retorno identificador Parametros Descripcion


Public Calabazas Constructor
devuelve el juego
en si

Public void llenarMatriz Agrega objetos a


la matriz
Clase: Juego
 Atributos

Visibilidad Tipo Identificador Observación


Prívate Int[][] Cala Matriz con números
que ayudara a
identificar que
calabazas son iguales
a partir de un número.
Prívate int Puntos Son los puntos
adquiridos por el
usuario
Prívate Int[] C1 Es un array que
contiene los números
que representaran
cada tipo de calabaza.
Prívate Int[] C2 Es un array que
contiene los números
que representaran
cada tipo de calabaza.

 Métodos:

visibilidad Tipo de retorno identificador Parametros Descripcion


Public Matriz() Constructor de la
clase
Public int revisarMatriz() Revisa si al
colocar una
calabaza a la par
de otra se
encuentra 3 o
más del mismo
tipo para
eliminarlas.
Devuelve el
contador de
calabazas iguales
para saber
cuantos puntos
debe de obtener
el jugador
Public Int rellenarMatriz() Rellena las dos
columnas del
centro de la
matriz con
calabazas sin que
se repitan
calabazas del
mismo tipo.
Public Boolean verificarPerder() Int fila Verifica si el
jugador ya ha
sobrepasado los
límites de la
matriz en alguna
fila para seguir
jugando o para
terminar el
juego.
Public Void agregarPuntos() Hace la
sumatoria de
puntos (set de
puntos)
Public Int getPuntos() Se obtiene el
estado del
puntaje actual
Public Int verificarNivel() Si el puntaje
supera un límite
de cierta
cantidad de
puntos, el
jugador cambia
de nivel y se
adhieren nuevas
calabazas para
jugar
Public Int moverCalabaza() Int: fila Mueve la
calabaza sobre la
fila hasta que
encuentre una
calabaza en la
siguiente
posición de la
que se encuentra
en ese instante la
calabaza.
Matriz(){
Inicializar dimensiones matrix y llenarla con rellenarMatriz()
Inicializar puntos con 0
Inicializar el array con los 4 tipos de calabazas (números del 1 al 4)
}

revisarMatriz(){
int fil = 0
int col = 0
mientras(matrix.length>fil){
mientras(matrix[fil].length>col){
cont = 1
si ( matrix[fil][col] == matrix[fil+1][col] || matrix[fil][col] == matrix en posiciones
horizontales o verticales ) //revisión en cruz
cont++
}
Si (cont >= 3){
cont = 1
Cambiar el tipo de numero que se encuentra en matrix[fil][col]por 0
Si (matrix[fil][col] == matrix [fil+cont][col])
Cambiar el tipo de numero que se encuentra en
matrix[fila+cont][columna] por 0
Hacer la misma operación para todos los casos…
}
}
}
}

rellenarMatriz(){
Random seleccion
seleccionar al azar un numero de cont_calabazas[]
devolver selección.
}

verificarPerder(){
perder = false
si moverCalabaza == matriz.length || moverCalabaza == 0
perder = true;
devolver perder;
}

agregarPuntos(){
puntos += (revisarMatriz()*10)
}

getPuntos(){
devolver puntos
}
verificarNivel(int x){
si (getPunots >= x)
cambiar de nivel
agregar nuevo elemento al array de cont_calabaza
}

moverCalabaza(int fil){
cont = 0
mientras(cont<matrix[0].length/2){
mientras (matrix[fil][cont] ==0)
cont++
if(matrix[fil][cont] ¡= 0)
matrix[fil][cont] = rellenarMatriz()
devolver cont
}

You might also like