Informe Tecnico, Buscaminas
Enviado por isamarmercado • 12 de Enero de 2015 • 8.444 Palabras (34 Páginas) • 623 Visitas
Informe Técnico
Descripción del Problema
Se solicita desarrollar una versión1 del conocido video juego Busca Minas. El juego consiste en un
Mapa (una matriz de n x m posiciones, ver más abajo ejemplos de mapas) que contiene una cierta
Cantidad de minas. Al comenzar una partida, el mapa se encuentra completamente oculto, es decir, no
Sabemos el contenido de cada posición del mismo. El jugador debe ir descubriendo celdas, en cada
Descubrimiento, puede suceder lo siguiente:
• Encuentra una mina: Juego terminado, el jugador pierde.
• No descubre una mina: las posibilidades son:
O La cantidad de celdas ocultas es igual a la cantidad de minas reportadas (cantidad
Total) del mapa: El jugador ha GANADO.
o Aun quedan celdas por explorar: la celda descubierta contiene la cantidad de minas
colindantes (celdas vecinas).
Así el jugador utilizando la información proporcionada por el mapa deberá ir explorándolo hasta
ganar o EXPLOTAR.
La versión del juego deberá proveer las siguientes funcionalidades generales:
• Brindar al usuario la creación de mapas de juego, es decir, poder editar un mapa
incorporando la cantidad de minas deseadas calculando automáticamente la
información. Cabe aclarar que, si bien los tamaños de los mapas serán fijos, con
cambios mínimos (2 constantes) y recompilando el programa, debería poderse
cambiar dichos tamaños.
• El usuario podrá guardar y leer mapas desde archivos (Funcionalidad Provista por la
Cátedra)
• Ofrecer el modo juego, en el cual, además de la funcionalidades descriptas del
comportamiento del juego, el usuario dispondrá de las siguientes funcionalidades
extra.
• Bandera: el usuario podrá incorporar en el mapa, mientras juega, indicadores
que utilizará como una guía visual para no descubrir minas.
• Tablero: el usuario dispondrá mientras juega de un tablero indicando la
1
Comportamiento similar, aunque puede diferir o estar restringido con respecto a otras
versiones.
• cantidad de minas que contiene el mapa vs. un indicador de la cantidad de
banderas colocadas.
Funcionalidad Extra: el programador deberá incorporar alguna funcionalidad
extra al juego para convertirlo en un best seller :D. Por ej. durante una partida
y por única vez mostrar durante 3 segundos una parte del mapa.
Descripción desde el punto de vista de los alumnos
El software proporcionado se basa en el clásico juego “El buscaminas” con la intención de poder basarse más en el conocimiento de la parte de la lógica sin importar demasiado la grafica. La idea del proyecto es poder realizar un buscaminas con las funcionalidades mínimas del juego clásico y alguna que otra funcionalidad agregada.
El lenguaje de programación utilizado es PASCAL y el compilador es el Free PascalCompiler.
En el siguiente diagrama se muestra la división del proyecto en sub problemas a solucionar
Y las
Sub divisiones
Diseño General del Programa
(Los subproblemas particionados serán entregados en su lenguaje de programación (Pascal) en sus respectivas unidades en un archivo adjunto)
Diseño:
Acciones y Funciones agregadas en pseudocódigo
Interfaz Grafica
SUBPROBLEMA 2
Accion InterfazBoom
Inicio
gotoXY (1,25)
Textcolor (BoomColor)
Escribir ( ‘ ______ ______ ______ __ __ __ ‘)
Escribir (‘ | \ / \ / \ | \ / \| \ ‘)
Escribir (‘ | $$$$$$$\| $$$$$$\| $$$$$$\| $$\ / $$ | $$ ‘)
Escribir (‘ | $$__/ $$ | $$ | $$ | $$ | $$ | $$$\ / $$$ | $$ ‘)
Escribir (‘ | $$ $$ | $$ | $$ | $$ | $$ | $$$$\ $$$$| $$ ‘)
Escribir (‘ | $$$$$$$\| $$ | $$ | $$ | $$ | $$ \$$ $$ $$\$$ ‘)
Escribir (‘ | $$__/$$ | $$_/ $$ | $__/ $$ | $$ \$$$| $$ __ ‘)
Escribir (‘ | $$ $$ \$$ $$ \$$ $$ | $$ \$ | $$ | \ ‘)
Escribir (‘ \ $$$$$$$ \$$$$$$ \$$$$$$ \$$ \$$ \$$ ‘)
Textcolor (‘Tcolor’)
readkey
Fin
Accion InterFazGano
Inicio
GotoXY(1,25)
TexColor (GanoColor)
Escribir (‘ ______ ______ __ __ ______ __ ‘)
Escribir (‘ / \ / \ / \ / | / \ / | ‘)
Escribir (‘ /$$$$$$ |/$$$$$$ |$$ \ $$ |/$$$$$$ |$$ | ‘)
Escribir (‘ $$ | _$$/ $$ |__$$ |$$$ \$$ |$$ | $$ |$$ | ‘)
Escribir (‘ $$ |/ |$$ $$ |$$$$ $$ |$$ | $$ |$$ | ‘)
Escribir (‘ $$ |$$$$ |$$$$$$$$ |$$ $$ $$ |$$ | $$ |$$/ ‘)
Escribir (‘ $$ \__$$ |$$ | $$ |$$ |$$$$ |$$ \__$$ | __ ‘)
Escribir (‘ $$ $$/ $$ | $$ |$$ | $$$ |$$ $$/ / | ‘)
Escribir (‘ $$$$$$/ $$/ $$/ $$/ $$/ $$$$$$/ $$/ ‘)
texCcolor (Tcolor)
Readkey
Fin
Accion InterfazDibujarEsqueletoMapa
Léxico
i,j ∈ entero {variables auxiliares}
Inicio
MoverCursorMapa
Para i desde PosMapaY hasta MapaCantFils+PosMapaY+1 paso 1 hacer
Para j desde PosMapaX hasta MapaCantCols+PosMapaX+1 paso 1 hacer
si (j=PosMapaX) (j=MapaCantCols+PosMapaX+1) entonces
GotoXY (j,i)
Textcolor (BorderColor)
Escribir (VBorder)
Fsi
si (i=PosMapaY) (i=MapaCantFils+PosMapaY+1) entonces
GotoXY (j,i)
Textcolor (BorderColor)
Escribir (HBorder)
Fsi
FPara
textColor (TColor)
FPara
Fin
Función DibujarValorCelda ( x,y ∈ entero )→ cadena
Inicio
si (MascaraMapaObtenerValor (pX,pY) = visible) entonces
Segun
MapaObtenerValor(x,y)= 0 : ←Dibujo0MinasColindantes
...