Documentos de Académico
Documentos de Profesional
Documentos de Cultura
En este proyecto tendrás que poner en práctica los conocimientos adquiridos durante el primer trimestre
del curso, en las unidades 1, 2, 3 y 4. El proyecto consiste en la realización de un juego de tablero. La
descripción completa y detallada de la implementación del proyecto se encuentra en la siguiente
sección.
El juego conecta 4 es un famoso juego conocido por todos cuyas reglas pueden consultarse en
https://es.wikipedia.org/wiki/Conecta_4 . En él cada jugador coloca de manera alternativa una de sus
fichas en un tablero de 6 filas y 7 columnas hasta que se consigan enlazar al menos 4 en línea en
cualquier dirección. Gana el primer jugador que es capaz de lograrlo. En caso que no se disponga de
espacio para colocar, el juego termina en empate. El tablero está colocado en vertical, de modo que
tiene la peculiaridad de que al colocar las fichas en una columna, éstas caen y se depositan justo encima
de la última pieza de esa columna.
-1-
Ciclo Formativo: Desarrollo de Aplicaciones Web IES Zaidín-Vergeles
Módulo: Programación Curso 2023-2024
En esta práctica vamos a realizar una implementación en Java más flexible de este juego. No será
conecta-4 sino conecta-n. Es decir, el valor de la linea a conectar para la victoria está definido por un
parámetro. Además el número de filas y de columnas del tablero también será configurable.
La función main será la encargada de crear el tablero como una matriz de enteros de NxM elementos
inicializados a 0 (casilla vacía). Para representar las fichas de los jugadores (O) y (X) usaremos valores
enteros. Para ello, definiremos las siguientes constantes para trabajar en el tablero a través de ellas.
• public static final int CASILLA_VACIA=0;
• public static final int FICHA_CIRCULO=1;
• public static final int FICHA_EQUIS=2;
a) (0.5 puntos) El programa deberá solicitar el tamaño del tablero (mínimo 6 filas y 7 columnas) y el
número de fichas capturadas con el que se gana la partida (mínimo 4 y máximo el que permita
el tablero). El programa funcionará de forma genérica independientemente de los valores
seleccionados.
b) (0.25 puntos) El programa solicitará el nombre de los jugadores para pedir por turnos que
introduzcan la columna del tablero donde quieren colocar la ficha.
c) (0.25 puntos) El programa informará al usuario si la columna introducida es errónea (toda la
columna está ocupada) para que inserte una nueva columna.
d) (0.5 puntos) Si la columna introducida es correcta, se mostrará el tablero con la nueva ficha en su
posición. Es deseable que la última ficha colocada aparezca resaltada en el tablero.
e) (0.5 puntos) El programa continuará hasta que se produzca el final de la partida, bien porque
algún jugador ha conseguido colocar N fichas en línea o más (según número de fichas
capturadas con el que se gana la partida solicitado anteriormente), o bien porque no quedan
casillas libres.
Dentro de la clase donde se implementa el programa principal se crearán las funciones necesarias para
manejar la lógica del juego. En particular, se crearán al menos las siguientes funciones:
• (0.5 puntos) public static void mostrarTablero(int [][] tablero). Visualizará el tablero en
pantalla de forma apropiada para que el usuario lo entienda. Habrá que escribir O o X para
representar las fichas de los jugadores, en lugar de valores numéricos.
• (0.5 puntos) public static void mostrarTablero(int [][] tablero, int columna). Igual que la
función anterior, pero además recibe por parámetro la columna de la última ficha colocada y la
mostrará de forma resaltada.
-2-
Ciclo Formativo: Desarrollo de Aplicaciones Web IES Zaidín-Vergeles
Módulo: Programación Curso 2023-2024
• (0,5 punto) public static boolean colocarFicha(int [][] tablero, int ficha, int columna). Coloca
la ficha en la columna indicada (se pone encima de las fichas ya existentes). Devuelve true si ha
habido éxito y false si no.
• (2 puntos) public static boolean comprobarLinea(int [][] tablero, int columna, int n).
Devuelve true si en el tablero hay n fichas en línea (horizontal, vertical o diagonal), false en
caso contrario. La comprobación se realizará desde la posición de la última ficha colocada.
• (1,5 puntos) public static int fichasEnLinea(int [][] tablero, int ficha, int columna). Devuelve
el número de fichas máximo en línea (horizontal, vertical o diagonal) que se harían si se
colocara una ficha en esa columna. Esta función no coloca la ficha y supone que no se ha
colocado la ficha en esa columna.
• (0,5 puntos) public static boolean casillasLibres(int [][] tablero). Devuelve true si en el tablero
hay alguna casilla libre, o false si el tablero está completo.
Además de las funcionalidades anteriormente descritas. El juego añadirá la opción de poder jugar sólo
contra el ordenador. Para esta opción, se deberán programar tres niveles de inteligencia. Para poder
valorar cada uno de los niveles deben ser elegibles en el programa principal.
• (0,5 puntos) Nivel 1: El ordenador coloca la ficha de manera aleatoria entre las columnas
disponibles.
• (1 punto) Nivel 2: El ordenador debe actuar con la siguiente lógica: Si en su turno puede ganar
la partida (conectar n fichas en línea) lo hará, si no es posible, debe cortar la jugada del
contrario en la que podría hacer más fichas en línea. En caso que no se cumplan las condiciones
anteriores o haya columnas en igualdad de condiciones (cortan las mayores fichas en línea) se
decide de manera aleatoria entre las distintas posibilidades empatadas.
• (1 punto) Nivel 3: Igual que el nivel anterior pero teniendo en cuenta que dónde se coloca no
abra la posibilidad al contrario de ganar en el siguiente turno.
Si es necesario, las funciones anteriores se pueden dividir en funciones más pequeñas (divide y
vencerás) que permitan reutilizar al máximo el código creado. Esta reutilización del código es valorada
en la corrección de la tarea. Además para implementar las opciones de juego contra el ordenador se
deja propuesto realizar todas las funciones que se consideren.
-3-
Ciclo Formativo: Desarrollo de Aplicaciones Web IES Zaidín-Vergeles
Módulo: Programación Curso 2023-2024
Entrega de la tarea
El proyecto se desarrollará con el IDE Netbeans. Se creará un proyecto con el nombre JuegoConectaN.
La carpeta del proyecto Netbeans se comprimirá en un único fichero en formato .ZIP que se subirá al
buzón de la tarea en la plataforma Moodle.
IMPORTANTE: Lo que se debe entregar es la carpeta del proyecto Netbeans completa, no ficheros .java
individuales. No se corregirán proyectos que no cumplan este requisito de entrega.
-4-
Ciclo Formativo: Desarrollo de Aplicaciones Web IES Zaidín-Vergeles
Módulo: Programación Curso 2023-2024
Rúbrica de evaluación
# Criterio Porcentaje
El programa/función implementado no cumple los requisitos, no soluciona de forma
1 algorítmica el ejercicio o las soluciones obtenidas por el programa no son las 0%
esperadas, el código no compila o contiene errores.
El programa/función implementado soluciona de forma algorítmica el ejercicio pero
2 25%
falla con datos de entrada no permitidos.
El programa/función implementado tiene fallos inesperados en situaciones específicas
3 o concretas, es decir, falla para un determinado caso o valor de entrada, pero en 50%
general el resultado obtenido es válido.
El programa/función implementado cumple los requerimientos pero:
4 75%
• El código no es legible o no está bien estructurado.
El programa/función implementado se ajusta perfectamente a la especificación:
• Se validan los datos de entrada.
• El resultado obtenido es válido para cualquier dato de entrada.
5 100%
• El código es modular y se emplean funciones/métodos adecuadamente.
• El código es legible y usa comentarios relevantes y/o Javadoc.
-5-