Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Por lo tanto, cada jugador tiene asociado un tablero de juego como el siguiente:
A B C D E F G H
1
2
3
4
5
6
7
8
Para la práctica se deben implementar dos ficheros que permitan añadir nuevos registros y
modificar los existentes.
1. Fichero “Puntmax.dat”: almacena todos los datos en referencia a las 10 mejores partidas
realizadas por jugadores, guarda la siguiente información por registro:
1
sNombre: tipoNombre
numBombas: tipoNumero
bNivel: tipoNivel
2. Fichero “Estadisticas.dat”: almacena todos los datos relativos a las estadísticas de juego
obtenidas hasta el momento. Es necesario para programar el modo de juego de la computadora,
y almacena el número de bombas lanzado sobre cada coordenada (celda) así como el número de
aciertos que se han producido en dicho lugar. Guarda la siguiente información por registro:
Los tipos de los campos de los registros se deben declarar de la siguiente manera:
tipoNivel: Byte
tipoNombre: String[50]
tipoNumero:integer
El programa inicialmente debe mostrar en pantalla un menú con las siguientes opciones:
Además de los arrays necesarios para la lectura de ficheros comentados anteriormente, para el
desarrollo del juego son necesarios cuatro arrays más:
• 2 Arrays de celdas para que los jugadores coloquen sus barcos. (Jugador y
Computadora)
• 2 Arrays de celdas para que se almacene el estado de los disparos realizados
hasta el momento. Es para que el jugador conozca aquellas posiciones en las
que ya ha realizado un ataque, y así no vuelva a lanzar una bomba en ese punto.
(Jugador y Computadora)
Dentro de esta opción el juego muestra un submenú, en el que se presentan tres opciones:
2
1.1 Nivel Fácil
1.2 Nivel Difícil
1.3 Volver atrás
Una vez escogido el nivel fácil el programa debe realizar las siguientes operaciones en orden:
1. Realizar la colocación aleatoria de la flota de los dos jugadores y mostrar por pantalla el
tablero de juego al jugador humano.
*Nota: todos los barcos deben estar separados de los demás por al menos una celda en todo su
contorno, (la orientación del barco (horizontal o vertical) también se decidirá de forma
aleatoria).
2. Realizar un sorteo para ver que jugador comienza, el humano o la computadora.
3. Comenzar el juego: presentar al jugador su pantalla de juego: el aspecto debe ser el siguiente:
A B C D E F G H
A B C D E F G H
1 A
1 A A
2 A A
2
3 T P P P
3 A
4 A
4
5 A F
5
6 F
6 A
7
7 T T
8 F F L
8
*Nota: es imprescindible mostrar al usuario los dos cuadros con un formato semejante al
anterior, tiene que ser lo suficientemente claro para saber dónde están los barcos y dónde realiza
los disparos.
1.1.a Turno del humano: éste tecleará una casilla, por ejemplo, (A5), y el programa se
encargará de comprobar paso por paso:
3
1.1.b Turno de la computadora: la computadora en el nivel fácil realiza los siguientes pasos:
1. realizar un lanzamiento aleatorio a cualquiera de las celdas del enemigo
2. Mostrar un mensaje: coordenada del disparo, y (Agua!, Tocado!, Lanzamiento
Repetido!)
3. Marcar el panel de aciertos y fallos de la computadora.
4. Marcar el panel de flota del usuario (A:Agua, T:Tocado)
5. Modificar el array de estadísticas
6. Incrementar el número de bombas lanzado por ese jugador.
Al finalizar el juego (todos los barcos de uno de los jugadores quedarán hundidos), si gana el
jugador humano, el programa cargará el fichero “Puntmax.dat” en memoria. Una vez en
memoria comprobará si el jugador ha conseguido superar alguna puntuación máxima de las
guardadas hasta el momento. Si fuese así, se le informará de que ha superado una puntuación
máxima y tras preguntar su nombre, se guardará en el archivo de puntuaciones puntmax.dat
con el número de bombas lanzado y con el nivel de dificultad en el que ha jugado. A igualdad
de bombas lanzadas, la mejor puntuación es la que se haya obtenido tras superar a la
computadora en un nivel difícil. Para colocarlos ordenados realizar una inserción ordenada, es
decir, leer cada puntuación máxima desde la primera, compararla con la puntuación obtenida, y
si la actual es mayor, entonces insertarla, sino, pasar al siguiente registro. Por último al finalizar
la partida se almacenará el array de estadísticas en el fichero estadisticas.dat.
La única diferencia entre los dos niveles es la inteligencia del juego. En el nivel fácil la
computadora dispara aleatoriamente, sin tener en cuenta ningún factor (ni siquiera el que haya
disparado anteriormente a ese lugar). En el nivel difícil, para mejorar el funcionamiento, se
implementará un mecanismo mediante el cual en el turno de la computadora nunca se repetirá
un disparo a una misma posición.
Para ello cuando juega la computadora se deberán realizar los siguientes procesos adicionales:
1. Buscar todas aquellas celdas que sean de barcos tocados y disparar a las
celdas contiguas hasta que el barco quede hundido y no haya más celdas
contiguas sin bombardear.
2. Si no existe ningún barco tocado, o bien los que hay están hundidos, deberá
consultarse el array de estadísticas y disparar a la posición con mayor
probabilidad de acierto de las existentes. (la probabilidad se determina
cuanto mayor número de aciertos exista por número de bombas lanzadas a
una celda) y que no hayan sido disparadas hasta el momento en la
partida en curso.
4
Opción 3: Ver estadísticas
Mediante esta opción el usuario conocerá cuales son las estadísticas por cada celda. El programa
mostrará una tabla de 8 filas por 8 columnas con el número de aciertos por el número de bombas
lanzado sobre cada celda. Ejemplo de una celda: 3/8
Opción 5: Salir
3. NORMAS
Todos estos ficheros se pondrán en el directorio raíz, es decir, en A:\. La falta de cualquiera de
esos ficheros supondrá el suspenso en la práctica.
Comprobar que el disquete que se entrega no contenga virus. Si se detecta algún virus, la
práctica quedará suspensa .
Hay que usar los nombres de fichero indicados anteriormente. El uso de ficheros con nombres
diferentes de los especificados en este enunciado dará error de ejecución y no se podrá
comprobar el correcto funcionamiento de la práctica
No se admite el uso de variables globales en los subprogramas. Todas las variables de las
funciones/procedimientos deben ser locales o parámetros de la propia función/procedimiento
5
4. PRESENTACIÓN DE LA PRÁCTICA OBLIGATORIA
a) Material a entregar:
Una memoria con la documentación de la práctica. La documentación se entregará impresa en
DIN-A4 con letra Times Roman de 8 puntos, interlineado de 1 y márgenes de 2,5 cm. Los
títulos de los apartados se escribirán con tamaño de 12 puntos y en negrita. La memoria debe
contener los siguientes apartados, en el orden que se indica:
Portada. Título de la práctica, asignatura, convocatoria (mes y año), número de grupo (11, 12 o
13) y nombre de los componentes del grupo. (1 página)
Introducción. Breve descripción del contexto, del problema a resolver y las opciones
implementadas. No se trata de volver a copiar el enunciado. (1 página)
Código fuente comentado. Cada comentario de procedimiento o función estará formado por:
Descripción, Entradas y Salidas. Lo mismo para el programa principal. Un disquete con los
ficheros especificados en el enunciado de la práctica. El disquete debe llevar una etiqueta con
los nombres de los componentes del grupo y se meterá en un sobre adherido a la portada de la
práctica
El disco y la memoria tienen la misma importancia para la evaluación de la práctica. Si falta uno
de ellos, el código no está comentado o la memoria está incompleta, la práctica estará suspensa.
No se evaluarán prácticas presentadas después de la fecha de entrega establecida.
Las prácticas se realizarán obligatoriamente en grupos de dos personas. No se evaluarán
prácticas hechas en grupos que no sean de dos personas.
El último día de entrega de prácticas será el día del examen de la asignatura en las aulas y horas
correspondientes.