Beruflich Dokumente
Kultur Dokumente
Título
Nombres y Apellidos Código de estudiantes
Fecha dd/mm/aaaa
TABLA DE CONTENIDOS
Lista de Figuras…………………………………………………………………………………………
Introducción……………………………………………………………………………………………..
Capítulo 1. Planteamiento del Problema…………………………………………………………………
1.1 Formulación del Problema…………………………………………………………………
1.2 Objetivos………………………………………………………………………………….
1.3 Justificación……………………………………………………………………………..
1.4 Planteamiento de Hipótesis…………………………………………………………………
Capítulo 2. Marco Teórico……………………………………………………………………………
2.1 Área del Estudio/Campo de Estudio……………………………………………………….
2.2 Desarrollo del Marco Teórico……………………………………………………………….
Capítulo 3. Método…………………………………………………………………………………….
3.1 Tipo de Investigación…………………………………………………………………..
3.2 Operacionalización de variables……………………………………………………………
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
LISTA DE FIGURAS
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
INTRODUCCION
Este problema fue presentado como tarea para los estudiantes de Programación 1, asignatura de
primer año donde se intenta enseñar a programar desde la nada a los estudiantes. Claro está que en
un curso formal esto tenía plazos de entrega y estaba sujeto a los rigurosos test del equipo de la
facultad UDABOL, de modo que si el programa no funcionaba perfectamente uno perdía el curso
directamente sin posibilidad de dar exámenes, por más bien que le haya ido en las pruebas escritas.
Aquí ustedes no manejarán plazos porque esto es voluntario y personal, cada uno ve si toma esta
oportunidad o la deja. Saludos.
Con el fin de poder probar en forma interactiva los procedimientos que se piden en este proyecto, se
les brinda el siguiente código: buscaminas. pas, al cual le faltan los procedimientos que se piden
implementar.
Ud. deberá implementar dichos procedimientos en el archivo motor. pas. Para que esto funcione,
dentro del archivo buscaminas. pas se encuentra la siguiente directiva:
Como parte de un proceso industrial, la fase de pruebas añade valor al producto generado. Todos los
programas tienen errores (somos humanos) y la fase de pruebas los descubre. Ese es uno de los
principales valores que añade. Recuerden que probar un programa es ejercitarlo con la peor intención
con el fin de encontrarle fallas.
Además de las sugerencias en la definición de la Interfaz para el buscaminas referente a las pruebas,
en este documento se les brindará una guía de cómo efectuar sus pruebas. ¡¡Así que a hincarle los
dientes a esto que será de gran ayuda para ustedes!!
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
El buscaminas es un conocido juego de computadora que simula un campo de minas que debe ser
despejado por el jugador, marcando la posición de todas las minas sin pisar ninguna.
El juego consiste en despejar todas las casillas de una pantalla que no oculten una mina.
Algunas casillas tienen un número, este número indica las minas que suman todas las casillas
circundantes. Así si una casilla tiene el número 3 significa que de las ocho casillas que hay alrededor
(si no está en una esquina o borde) hay 3 con minas y 5 sin minas. Si se descubre una casilla sin
número indica que ninguna de las casillas vecinas tiene mina y estas se descubren automáticamente.
Si se descubre una casilla con una mina se pierde la partida.
Acciones Básicas
Existen muchas versiones del buscaminas que pueden diferir en algunos aspectos. La mayoría de ellas
incluye los siguientes movimientos por parte del jugador:
Descubrir una celda: Esta acción se realiza sobre una celda oculta. El resultado depende del contenido
de la celda:
Si la celda contiene una mina el juego se pierde.
Si la celda está libre pero hay minas en las celdas circundantes, aparece un número (entre 1 y
8) que indica la cantidad de celdas circundantes que contienen una mina.
Si la celda está libre y no hay minas en ninguna de las celdas circundantes, la celda se
descubre y también se descubren automáticamente todas las casillas circundantes, aplicando
el mismo procedimiento para cada una de ellas. Este procedimiento deja al descubierto toda
un área de casillas libres adyacentes.
Marcar una celda: Esta acción se realiza sobre una celda oculta que el jugador supone que contiene
una mina; suposición que puede ser correcta o no. Independientemente de ello, el sistema muestra la
celda como marcada e incrementa el contador de celdas marcadas.
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
Desmarcar una celda: Esta acción se realiza sobre una celda marcada. El resultado es desmarcar la
celda y dejarla como oculta. Y decrementar el número de celdas marcadas
Acciones complementarias
Despejar circundantes de una celda: Esta acción se realiza sobre una celda ya descubierta. El
resultado es descubrir todas las celdas circundantes que no estén marcadas. Por “descubrir”
entendemos ejecutar la acción descubrir una celda explicada más arriba. La acción se lleva a cabo,
solamente si el número que contiene la celda es igual a la cantidad de celdas circundantes marcadas.
Marcar circundantes de una celda: Esta acción se realiza sobre una celda ya descubierta. El resultado
es marcar todas las celdas circundantes no descubiertas. La acción se lleva a cabo, solamente si el
número que contiene la celda es igual a la suma de la cantidad de celdas circundantes ya marcadas
más las celdas circundantes no descubiertas sin marcar.
Descubrir una celda segura: Es una ayuda que solicita el jugador. El resultado es que una celda sin
bomba se descubre. En general la solicitud de esta ayuda es penalizada de alguna manera por
ejemplo sumando segundos (en este proyecto no tendremos en cuenta el tiempo empleado por el
jugador)
Terminación
Se descubre una celda que contiene una mina. En este caso el jugador pierde el juego.
Se descubrieron todas las celdas que no contienen minas. No importa si se marcaron o no todas las
celdas con minas. En este caso el jugador gana el juego.
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
Este es un modelo simple donde tenemos dos capas o módulos: la interfaz y el motor.
La interfaz se encarga de realizar el diálogo con el usuario (el jugador), capturar sus entradas e
invocar las operaciones asociadas. La interfaz también maneja la imagen del juego en pantalla
actualizándola cada vez que hay cambios. En resumen, se encarga de todo lo que tenga que ver con
entrada y salida. La interfaz no realiza ninguna modificación directa sobre la estructura de datos.
El motor es el módulo que trata con la estructura de datos que representa el juego en un estado
determinado. Este módulo estará compuesto por todos los subprogramas necesarios para ejecutar las
acciones del jugador y reflejar estas en la estructura de datos. El motor no realiza ninguna operación
de entrada y salida.
En este proyecto, el estudiante implementará solamente el motor. La interfaz será provista por los
docentes, en este caso, por mí, que les daré los mismos archivos que dieron los docentes en su
momento. En las siguientes secciones explicamos los detalles del módulo a ser implementado.
La estructura
Código:
type
TipoEstadoJuego = (jugando,ganado,perdido);
TipoJuego = record
estado : TipoEstadoJuego;
tablero : TipoTablero;
bombas, (* cantidad de bombas en el tablero *)
marcadas, (* cantidad de celdas marcadas *)
descubiertas : integer; (* cantidad de celdas descubiertas *)
end;
El tablero
Código:
RangoFila = 1..MAX_FILAS;
RangoColumna = 1..MAX_COLUMNAS;
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
TipoTablero = record
celdas : array[RangoFila,RangoColumna] of TipoCelda;
topeFila : RangoFila;
topeColumna : RangoColumna;
end;
Esta estructura es una matriz (ver Arreglos Bidimensionales) con dos topes (ver array con tope). De
esta manera se pueden representar tableros de diferentes tamaños. Las celdas válidas de la matriz
son aquellas cuyas coordenadas (i,j) son tales:
Las constantes MAX_FILAS y MAX_COLUMNAS se suponen definidas con valores apropiados. Estos
valores están definidos en la interfaz, de manera que el estudiante no necesita conocerlos.
La celda
Código:
TipoEstadoCelda = (oculta,marcada,descubierta);
TipoCelda = record
estado : TipoEstadoCelda;
case tieneBomba :Boolean of
True : ();
False : (bombasCircundantes :integer)
end;
Los subprogramas
El motor del juego está constituido por un conjunto de subprogramas que trabajan sobre la estructura
definida. En varios de los subprogramas se utiliza un parámetro que representa la posición de una
celda dentro del tablero. Para ello necesitamos definir el siguiente tipo:
Código:
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
TipoPosicion = record
fila : RangoFila;
columna: RangoColumna;
end;
Cualquiera de los subprogramas pedidos más abajo retorna sin ejecutar nada cuando recibe una
posición no válida.
Inicialización
Este subprograma es invocado al comienzo del juego para generar el tablero inicial.
Código:
Este procedimiento debe retornar el parámetro juego configurado para iniciar el juego:
En caso que el parámetro cuantas bombas tenga un valor negativo o sea mayor que el número de
celdas, el estudiante puede decidir el comportamiento del procedimiento.
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
Código:
Esta operación realiza sobre el parámetro juego la acción de descubrir una celda tal como se describe
más arriba. La celda a descubrir es la indicada por el parámetro posicion. En caso de que la celda ya
esté descubierta, o la posición no sea válida, el procedimiento no hace nada.
Tener en cuenta que cuando se descubre una celda con 0 bombas circundantes, se produce
automáticamente el descubrimiento de las celdas adyacentes para las cuales a su vez se aplica el
mismo criterio. Esto puede provocar el descubrimiento de toda un área de celdas adyacentes,
situación seguramente muy apreciada por el jugador.
En las versiones clásicas del buscaminas, esta operación se realiza con un clic con el botón principal
sobre una celda no descubierta.
Marcar y Desmarcar
Código:
Estos dos procedimientos corresponden a las acciones de marcado y desmarcado de una celda tal
como se describió en la sección Acciones Básicas.
En las versiones clásicas del buscaminas, esta operación se realiza con un clic con el botón secundario
del ratón sobre una celda no descubierta.
Código:
Este procedimiento corresponde a la acción Despejar Circundantes de una celda tal como se explicó en
la sección Acciones Complementarias.
En las versiones clásicas del buscaminas, esta operación se realiza con un clic con el botón principal
del ratón sobre una celda descubierta.
Código:
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
Este procedimiento corresponde a la acción Marcar Circundantes de una Celda tal como se explicó más
arriba.
Código:
Este procedimiento corresponde a la acción Descubrir Celda Segura tal como se explicó más arriba.
Se pide
Escribir un archivo con todos los subprogramas que forman el motor del juego.
Los cabezales de los subprogramas deben coincidir exactamente con los que aparecen en esta letra. Si
el estudiante realiza algún cambio se considerará que el subprograma no fue implementado.
Código:
Si trabaja con el IDE, asegúrese de configurarlo para que compile de la misma manera que el
comando anterior (habilitación de range checking e Integer Overflow Checking).
No está permitido utilizar facilidades de Free Pascal que no forman parte del estándar y no se dan en
el curso. Así por ejemplo, no se pueden utilizar ninguna de las palabras
siguientes: uses, crlscr, gotoxy, crt, readkey, longint, string, break, etcétera.
Uses y ClrScr fueron mostradas por mí en este curso, sin embargo la interfaz gráfica se encarga del
trabajo con la pantalla, por lo cual ustedes no necesitan usarlas.
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
En esta tarea como en todos los problemas de este curso, se valorará además de la lógica correcta, la
utilización de un buen estilo de programación de acuerdo a los criterios impartidos en el curso. De esta
manera, se hará énfasis en buenas prácticas de programación que lleven a un código legible, bien
documentado y mantenible, tales como:
indentación adecuada
utilización correcta y apropiada de las estructuras de control
código claro y legible
algoritmos razonablemente eficientes
utilización de comentarios que documenten y complementen el código
utilización de constantes simbólicas
nombres mnemotécnicos para variables, constantes, etcétera.
Apéndices
Números randómicos
En free pascal se pueden generar números al azar utilizando la función random la cual ya fue
explicada en este curso.
El procedimiento Descubrir tiene algunas complejidades algorítmicas que requieren pensarlo con
cuidado. En este apéndice damos algunas sugerencias para su implementación.
Si la celda a descubrir contiene una bomba el juego termina. Si la celda a descubrir no contiene
bomba y la cantidad de circundantes con bomba es mayor que cero, se descubre sólo esta celda y
continúa el juego.
La situación más compleja surge cuando la celda no contiene bomba y la cantidad de circundantes con
bomba es igual a 0. Para este caso sugerimos un algoritmo que permite explorar exhaustivamente el
área circundante a descubrir.
Se utiliza una lista de posiciones de celdas que llamaremos la lista de pendientes. En esta estructura
guardamos un conjunto de posiciones de celdas que aún nos resta procesar en el proceso de descubrir
toda el área circundante. La implementación de esta estructura la dejamos a consideración del
estudiante.
El algoritmo es el siguiente:
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
Introducción
Con el fin de poder probar en forma interactiva los procedimientos que se piden en este proyecto, se
les brinda el siguiente código: buscaminas. Pas, al cual le faltan los procedimientos que se piden
implementar.
Ud. deberá implementar dichos procedimientos en el archivo motor. Pas. Para que esto funcione,
dentro del archivo buscaminas. Pas se encuentra la siguiente directiva:
Código:
{$INCLUDE motor.pas}
Esto tiene el mismo efecto que copiar y pegar el contenido del archivo motor.pas dentro de
buscaminas. Pas en el lugar de dicha directiva.
Restricciones
El programa final que implemente el juego debería funcionar sin que Ud. tenga que modificar el
archivo buscaminas. Pas. Todos los procedimientos que se piden implementar en la letra del proyecto,
como cualquier función, procedimiento, tipo, etc. extra que Ud. necesite definir deberán ser
implementados en el archivo motor. Pas.
Las directivas, procedimientos y funciones no estándar usadas en el archivo buscaminas. Pas, fueron
utilizadas con el fin de que Ud. tenga una interfaz más amigable. Sin embargo como es regla en este
curso Ud. no puede utilizar facilidades de Free Pascal que no forman parte del estándar y que no se
dan en el curso para implementar los procedimientos se piden, o cualquier otro subprograma extra
que necesite.
Ud. no debe usar variable global, toda la comunicación con la interfaz debe ser a través de los
parámetros de los procedimientos.
Descripción de la interfaz
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
La interfaz básicamente tiene un cabezal, un tablero y una barra de estado. En el cabezal está el
nombre del juego y se despliegan mensajes cuando el jugador ha ganado o perdido. En el tablero se
pueden ver las celdas, que pueden estar ocultas (‘ # ‘), marcadas (‘ B ‘), o descubiertas vacías (‘ ‘), o
indicando el número de bombas en las celdas circundantes (‘ 1′, ‘ 2 ‘, …, ‘ 8 ‘).
En la barra de estado se puede ver el nro. de fila y columna donde está posicionado el jugador, la
cantidad de celdas con bombas, cuantas están marcadas, cuantas están descubiertas, y la totalidad de
las bombas que tiene el tablero.
Usando las flechas del teclado y algunas teclas se consigue probar y jugar al buscaminas. Por más
información ver la ayuda que trae la interfaz, presionando la tecla “h” (de helo en inglés).
Comunicación interfaz-motor
Cuando se inicia un juego nuevo seleccionando el nivel (fácil, intermedio, difícil), la interfaz invoca al
procedimiento Iniciar Juego(…) pasando como parámetros cierta cantidad de filas, columnas y bombas
dependiendo de cada nivel.
Cuando el usuario se posiciona sobre una celda determinada y presiona algunas de las teclas
correspondientes a marcar, desmarcar, descubrir, etc. la interfaz invoca al procedimiento
correspondiente pasando como parámetro el juego y la posición, salvo para “descubrir segura” en que
se pasa sólo el juego.
Por lo tanto la comunicación entre la interfaz y el motor es usando sólo los parámetros de los
procedimientos.
Funcionalidades
Aparte de poder jugar al buscaminas en forma interactiva, esta interfaz ofrece otras funcionalidades
que le permitirán encontrar y corregir errores más fácilmente, por ejemplo:
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
Recomendaciones
Para compilar
Cree una carpeta (o directorio) donde va a trabajar, descargue los archivos buscaminas. Pas (que
contiene la interfaz) y el motor. Pas(que solo contiene los encabezados de los procedimientos) y
cópielos a dicha carpeta.
Código:
O desde el IDE teniendo abierta la ventana con el archivo buscaminas. Pas. El compilador se da cuenta
automáticamente que tiene que incluir el código del archivo motor. Pas donde está la directiva
mencionada antes.
Esto ya va a generar una interfaz sencilla que no permite crear juegos nuevos, ni realizar acciones,
pero sí cargar archivos con juegos de pruebas, como se explica a continuación. A medida que
implemente los procedimientos, podrá realizar más acciones del juego.
Hasta que usted no implemente el procedimiento Iniciar Juego (…), no va a poder generar sus propios
tableros. Pero sí puede ir probando los otros procedimientos, por ejemplo cargando el juego desde
uno de los archivo de ejemplo que le proporcionamos, e ir mirando en “modo debug” que todo
funcione bien, o generando un historial y revisando el archivo del historial.
Al final habrá un enlace para descargar un archivo RAR que contiene todos los archivos que se
mencionan a continuación incluyendo también el archivo buscaminas. Pas y motor. Pas.
A continuación se proporcionan algunos archivos generados desde la interfaz, los cuales se pueden
cargar sin necesidad de implementar los procedimientos del motor.
juego1.txt
juego2.txt
juego3.txt
juego3-empezado.txt
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
A continuación se proporcionan algunos archivos con historiales de ejemplo. Los historiales contienen
la secuencia de juegos que se generan a partir de un juego inicial y la aplicación sucesiva de acciones
(como marcar, desmarcar, descubrir, etc.)
historial1.txt
historial2.txt
historial3.txt
Además Ud. puede probar los procedimientos implementando su propia interfaz, y/o pequeños
programas para probar cada procedimiento por separado. Recuerde que lo que Ud. debe realizar son
los procedimientos, la interfaz es simplemente una ayuda para probar y jugar con su motor.
Descarga de archivos
Para bajar los archivos necesarios para realizar este proyecto deben hacer click en el siguiente
enlace:
Serán dirigidos a un servidor externo llamado NetLoad. Seleccionen la opción de descarga gratuita y
podrán bajar el archivo RAR que contienen todo lo ya mencionado.
__________________________________________________________
1. Introducción
Como parte de un proceso industrial, la fase de pruebas añade valor al producto generado. Todos los
programas tienen errores (somos humanos) y la fase de pruebas los descubre. Ese es uno de los
principales valores que añade. Recuerden que probar un programa es ejercitarlo con la peor intención
con el fin de encontrarle fallas.
Además de las sugerencias en la definición de la Interfaz para el buscaminas referente a las pruebas,
en este documento se les brindará una guía de cómo efectuar sus pruebas. ¡¡Así que a hincarle los
dientes a esto que será de gran ayuda para ustedes!!
En general, uno empieza por el borde, luego arma las partes más fáciles, las difíciles, y siempre, para
cada parte, uno se va cerciorando que se está uniendo las piezas correctamente. Luego juntamos las
partes prearmadas hasta llegar a la figura final.
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
La idea de cómo armar un puzzle e implementar y probar el buscaminas tiene muchas similitudes. El
borde y algunas partes ya están prearmados y testeados (buscamina.pas) y le pedimos que armen y
testeen las partes faltantes (motor.pas) para completar el juego o “puzzle”. Parece una tarea fácil,
¿no?
Por lo tanto para probar su tarea deben tener en cuenta 3 puntos de prueba y en este orden:
Probar cada una de las partes armadas por ustedes por separado. O sea, cada subprograma o
procedimiento por separado.
Probar que las partes encajan correctamente en lo que ya está armado. O sea, que al unir los
subprogramas implementados por ustedes con los implementados por nosotros no generen
errores.
Probar finalmente que todas las partes junto con el borde funcionan correctamente. O sea,
nuestro puzzle es el que está en la imagen de la caja. Esto se hace probando desde la interfaz.
Acá es dónde se pone más divertido, es hora de jugar.
Como bien dice la letra de la tarea “Ud. puede probar los procedimientos implementando su propia
interfaz, y/o pequeños programas para probar cada procedimiento por separado. Recuerde que lo que
Ud. debe realizar son los procedimientos, la interfaz es simplemente una ayuda para probar y jugar
con su motor.”
Prueben todos los procedimientos por separado. Esta técnica les será de gran ayuda al momento de
hacer la prueba desde la interfaz. Es decir, disminuirá significativamente la cantidad de errores que
encontrarán y su gravedad. Pueden armarse un programa principal auxiliar que simplemente haga la
llamada al procedimiento bajo prueba y luego imprima el resultado en pantalla para que puedan
verificar la correctitud de su resultado. Recomendamos que piensen los casos de pruebas antes de
empezar a probar y que los anoten en una planilla.
Recuerden que un caso de prueba se puede decir que está formado por entradas (en este caso,
parámetros del procedimiento), un resultado esperado y un resultado obtenido. Además se puede
agregar una descripción para entender rápidamente qué se está atacando.
La idea es que prueben lo que se les sugiere abajo. Si tienen algunas ideas más, no las descarten,
úsenlas para probar, incluso en combinación con estas.
IniciarJuego
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
Descubrir
DespejarCircundantes
Además de manejar bien las estructuras ya definidas, deben estar seguros que los datos que les
llegan son los esperados por ustedes y los datos que devuelven son los esperados por
el buscamina.pas. En otras palabras deben verificar que están tomando correctamente los datos que
les pasan por parámetro y devolviéndolos correctamente también.
Esta es la última. Si hicieron bien las pruebas anteriores no deberían tener muchos errores en esta
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
etapa. Les sugerimos que para esta parte lo que más deben hacer es jugar. Recuerden que la
intención debe ser encontrar fallas y no salteárselas. Lo mejor es enfocarse en buscar cierto tipo de
errores durante varias partidas seguidas. Piensen que tienen una misión, encontrar errores, entonces
por varias partidas ponen el foco en buscar ciertos errores, por ejemplo, descubrir casillas sin bombas
y ver que se descubren toda la zona que se debe descubrir. Es importante que se guarden los
historiales de cada partida, así cuando ocurre un error, pueden reproducirlo. Esto les servirá al
momento de verificar que hayan arreglado el error. Les podrá ser útil anotar en una planilla la
correspondencia entre los errores y los archivos de historial. En las misiones, pueden intercalar los
distintos niveles de tablero de la interfaz, o alguno armado por ustedes.
Ejecuten todos los casos de prueba y anoten sus resultados antes de comenzar la revisión de
los que fallaron. Esto les facilitará el trabajo.
A la hora de empezar la revisión de los casos que fallaron. Se puede seguir estos pasos:
o Revisar la formulación del caso de prueba. Puede que esté mal el caso y no sea el
programa.
o Si el caso de prueba es correcto, se pasa a detectar qué parte del código está
generando la falla. Esto lo pueden hacer Debugueando por ejemplo.
Cuando hayan arreglado todos los errores, ejecuten los casos de prueba que en un principio
no dieron error. Esto es para asegurarse que los cambios hechos no introdujeron errores en lo
que andaba bien.
Al igual que con los casos de prueba, ejecuten varias misiones, las que ustedes crean
convenientes, antes de empezar a corregir las fallas.
_________________________________________________________
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
Testing de Sistema o Caja Negra (probar que el puzzle armado es igual al de la imagen en la
caja).
__________________________________________________________
Puede hacerse directamente desde la interfaz utilizando las facilidades de cargar un juego desde un
archivo, se puede lograr la configuración que se desea. También se recomienda utilizar el modo
*depuración* (tecla X) para poder ver el contenido de las celdas ocultas.
Otra posibilidad es hacer programas auxiliares que se encarguen de cargar un juego en particular y
verificar cada subprograma del motor de manera aislada. Para ello se recomienda utilizar un esquema
como el que sigue:
Código:
cargar juego
llamar subprograma
mostrar juego
Este programa se puede ejecutar varias veces cargando diferentes juegos y llamar el subprograma
con diferentes parámetros cubriendo todas las situaciones que parezcan interesantes.
Para poder aplicar lo anterior necesitamos un procedimiento que cargue un juego de un archivo y otro
que lo muestre.
Código:
Por ejemplo para probar el procedimiento Descubrir sobre todas las posibles celdas de un tablero, se
podría hacer algo así:
Código:
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22
Título: Buscaminas
Autor/es: Álvaro Toco Toaca
mostrarJuego(juego);
readln; (* pausa *)
end;
---------------------------------------------------------------------------------
Mucha suerte con este proyecto. Estaré a su disposición para ayudarles en todo lo que necesiten. Soy
consciente de su dificultad y espero que lo emprendan. Es muy interesante lo que se proponen aquí.
Saludos a tod@s l@s que han seguido este curso, y sobretodo, muchas gracias.
Asignatura: Programación 1
Carrera: Ing. Gas y Petróleo Página 22 de 22