Recreaciones computacionales

Buscaminas y circuitos lógicos

(English version available)

Hay poca gente que no haya oído hablar del Buscaminas, ese juego disponible en la mayoría de ordenadores personales. Es un juego que engancha con facilidad, quizá porque una vez se le coge el truco, la forma de jugar es bastante mecánica, excepto en ciertas situaciones clave que requieren ma­yor atención.

Aquí solo daremos un resumen de las reglas; aquellos que no las conozcan pero estén interesados pueden probar a jugar unas partidas hasta enten­der el desarrollo. Sobre un encasillado hay ocultas cierta cantidad de minas. Inicialmente todas las celdas del encasillado están cubiertas. Podemos destapar cada celda; si oculta una mina, perderemos el juego inmediatamente, y si no, la celda destapada nos indicará cuántas minas hay en las casillas adyacentes a ésa (contando las diagonales). Si de una celda tenemos la certeza de que contiene una mina, podemos marcarla para facilitar la búsqueda. Ganaremos el juego si destapamos todas las celdas que no contienen minas.

A pesar de lo mecánico que resulta el desarrollo normal del juego, existen numerosas situaciones en las que es sencillamente imposible saber cómo continuar. Hay otras en las que salir del apuro resulta ciertamente difícil, hecho que da pie a acertijos como el que vemos en la figura 1, problema cuyo autor es Richard W. Kaye. Las celdas que aparecen destapadas pero vacías indican que no hay minas alrededor, como es obvio en este caso; se prefiere este convenio en lugar de colocar un cero en su interior para evitar desviar la atención de las zonas irrelevantes.

Figura 1: Problema de buscaminas. ¿Dónde están las minas ocultas?
Figura 1: Problema de Buscaminas.

Pero el interés de Kaye por el Buscaminas no es meramente lúdico. Es el autor de un artículo técnico, no disponible en nuestro país, que demuestra lo difícil que puede llegar a ser averiguar si existe o no una mina en cierta posición. Para enfocar el problema, Kaye lo ha planteado desde el punto de vis­ta de la consistencia, y no del simple juego: ¿es un determinado tablero consistente, o no lo es? Para entendernos mejor vamos a definir primero el tér­mino. Un tablero será consistente si existe una distribución de minas ocultas tal que los números que hay en las celdas descubiertas sean correctos; será inconsistente en caso contrario. La figura 2 muestra ejemplos de posiciones consistentes e inconsistentes.

Figura 2: Ejemplos de consistencia: (a) posición consistente; (b) posición inconsistente.
a.
Figura 2a: Posición consistente.
b.
Figura 2b: Posición inconsistente.

En la figura 2a, si la celda oculta de la izquierda contiene una mina y la de la derecha no la contiene, está claro que los números en las celdas descubiertas dirán la verdad. Aunque en cualquier otro caso los números no serían coherentes, existe aquí una combinación concreta de presencia y ausencia de minas en las celdas ocultas que satisface todos los números simultáneamente; el hecho de que exista es lo que hace que la posición sea consistente. No es éste el caso de la figura 2b; cualquier combinación posible de presencia o ausencia de minas en las celdas ocultas implicará que al menos uno de los números de las celdas descubiertas sea falso (recordemos que se asume implícitamente que las celdas descubiertas vacías contienen ceros, y por tanto también están sujetas a escrutinio).

Es fácil entender la relación entre el problema de la consistencia y el desarrollo del juego: los programas de jugar al buscaminas conocen las ubicaciones de las minas y nos muestran valores que corresponden a ellas, es decir, siempre son consistentes; por otro lado, para analizar la consistencia hay situaciones en las que es necesario evaluar la práctica totalidad del tablero, pues basta que una celda no sea consistente para que no lo sea el tablero. Para dar una solución positiva al problema de la consistencia hay que proporcionar una disposición de celdas ocultas marcadas de manera que contando las celdas marcadas como minas y las no marcadas como no minas, todos los números se satisfagan. Esta parte es muy parecida al desarrollo normal del juego, excepto que en situaciones ambiguas no nos importa si hay o no una mina mientras podamos dar una colocación correcta. Comprobar la solución es fácil: basta con contar, para cada celda descubierta, las celdas marcadas que tiene alrededor. Si encontramos una cuyo número no coincide con el número de esa celda descubierta, rechazamos la solución como incorrecta; el tablero entonces puede ser inconsistente. ¿Lo es? ¿Cuán difícil es determinar si lo es?

Lo que Kaye ha demostrado es que la tarea de averiguar si un tablero es consistente o no, en el caso general, es un problema cuya dificultad es como mínimo la misma que en la familia de problemas llamados NP-completos. No es fácil expresar el significado de esto de forma breve. Para hacernos una idea aproximada, decir que un problema es NP-completo implica que si existe un algoritmo que lo resuelve, su tiempo de ejecución es una función que crece con respecto al tamaño del problema (el del tablero en el caso del Buscaminas) a un ritmo mayor que el de cualquier función polinómica, por ejemplo, en proporción exponencial. En realidad esto no está demostrado; si alguien descubre que no es así, o bien descubre que no tiene más remedio que ser así, podría ganar un millón de dólares. Esta conjetura se conoce abreviadamente como «P=NP?».

La demostración de Kaye se basa en una equivalencia sorprendente, que él mismo desarrolló: es posible construir tableros de buscaminas isomorfos (equivalentes) a funciones booleanas con entradas arbitrarias y de cuya salida dependa la cuestión de si el tablero es o no consistente. Éste es un problema de satisfactibilidad (abreviado SAT) del que se sabe que es NP-completo; por tanto el problema general de la consistencia del buscaminas también lo es.

Para su demostración Kaye elabora configuraciones de buscaminas que equivalen a elementos usados en la elaboración de circuitos lógicos. Construye las entradas lógicas, cables capaces de doblar esquinas, y por supuesto las puertas lógicas. Vemos en la figura 3 lo que sería una entrada lógica; hemos marcado con banderines las casillas que a priori tienen que ser minas para que la configuración sea consistente. El valor que se le dé a x (presencia o ausencia de mina) determinará el valor del resto de casillas cubiertas a la hora de mantener la consistencia. El «hilo conductor» tiene la forma de pares de casillas ocultas como los que se ven en la figura, y la señal se propaga en la dirección de la flecha.

Figura 3: Entrada lógica e hilo conductor en un «circuito de buscaminas».
Figura 3: Entrada lógica e hilo conductor.

Analizando la figura, queda claro que por cada par de casillas adyacentes no descubiertas, en una tiene que haber mina y en la otra no; además, la posición relativa de la que contiene la mina será siempre la misma, y dependerá de x. Por convenio, si de cada pareja de casillas adyacentes del «cable» la que tiene la mina es la posterior en el sentido de la flecha (las marcadas con * en la ilustración) diremos que el cable porta un «1 lógico»; de lo contrario será un «0 lógico». Según este convenio, un circuito inversor puede tomar la forma que vemos en la figura 4, que cambia el estado de los ceros y los unos.

Figura 4: Elemento inversor.
Figura 4: Elemento inversor.

La puerta OR (figura 5), diseñada por Stefan Schwoon, es bastante compleja; sin embargo es fundamental, pues con puertas OR e inversores es po­si­ble implementar cualquier función lógica. Este diseño simplifica el que utilizó Kaye en su demostración; la puerta universal que él construyó era la AND pero por su volumen la hemos considerado menos apropiada para exponerla aquí. Si el lector está interesado, puede encontrarla junto con otras puertas y elementos (por ejemplo, el que dobla una esquina) en un folleto que está disponible en la página de Buscaminas de Kaye. Algunas de las configuraciones que aparecen en ese folleto son necesarias para la prueba formal, que por supuesto cuida todos los detalles minu­cio­samente.

Figura 5: Función lógica z = x OR y.
Figura 5: Puerta OR.

Pongamos todo esto en práctica con un ejemplo. Consideremos el tablero de la figura 6, correspondiente a la función lógica «NOT (x OR NOT y)». Debido al diseño de la salida, para que esta configuración sea consistente el resultado de la función tiene que ser un 1. ¿Qué valores han de recibir las entradas para que esta condición se cumpla? Esta es precisamente la pregunta del problema SAT. En este caso, existe una combinación de entradas que hace que la salida sea 1, y por tanto el tablero es consistente. Sin embargo, esta función es muy sencilla; para funciones complejas puede llegar a costar mucho tiempo (del orden de milenios, incluso) averiguar la respuesta con los algoritmos disponibles actualmente.

Figura 6: Función NOT (x OR NOT y). ¿Es consistente este tablero?
Figura 6: Problema de consistencia.

El lector puede disfrutar comprobando cómo, al darles a x e y los valores apropiados, efectivamente se obtiene una configuración legítima (y en este caso única), y que todos los demás valores posibles de x e y conducen a una contradicción en los datos de las celdas numéricas. Las soluciones tanto de este problema como del propuesto en la figura 1 pueden ser comprobadas mediante el programa Diseñador de Buscaminas.

Complementos

La elaboración del programa Diseñador de Buscaminas me ha permitido comprobar la validez de los circuitos aquí expuestos. También me ha ayudado a comprobar que el diseño de la puerta OR de Stefan Schwoon tiene un defecto un tanto sutil. Hay exactamente una casilla marcada como mina que no es deducible a partir de los datos de que se dispone. Kaye proporciona un diseño que corrige esa deficiencia en una charla del año 2003 disponible en su página sobre Buscaminas. En el siguiente artículo aparece mi propia versión corregida del diseño de Schwoon.

Al holandés Michiel de Bondt le preocupa un aspecto del juego no tomado en cuenta por Kaye: el contador de minas restantes. En la especificación de Kaye no se tiene en cuenta el contador, pero de Bondt ha creado versiones alternativas de algunas puertas con la propiedad de que el número total de minas ocultas que contienen es constante. Su artículo está disponible en la red; ver la sección de enlaces más abajo.

Los diseños de de Bondt tienen también una interesante propiedad: los tableros con funciones lógicas que se construyen con ellos consisten únicamente en celdas cubiertas y minas ocultas; las minas que configuran los elementos circuitales pueden ser deducidas dando únicamente una casilla con cero minas alrededor al inicio (la definición que Kaye usa consta de celdas ocultas y celdas descubiertas, es decir, da parte del trabajo de resolución hecho mágicamente, mientras que el diseño de la puerta OR de Schwoon se basa en asumir que el tablero consta de celdas descubiertas, celdas ocultas pero con una mina asegurada y celdas ocultas y desconocidas, lo cual está aún más lejos del juego real que la versión de Kaye). Gracias a sus diseños, de Bondt lleva el resultado sobre la NP-completitud del Buscaminas mucho más cerca del juego real. Además también ha explorado diseños de elementos circuitales en casilleros hexagonales y triangulares en vez de cuadrados, aunque restringiéndose a la definición de Kaye de tablero en este caso dadas las dificultades técnicas que éstos entrañan.

Después de la primera publicación de este artículo descubrí que las demostraciones para probar la dificultad (en sentido técnico) de ciertos juegos son bastante populares incluso desde antes de la aparición del artículo de Kaye. Por ejemplo, el propio Schwoon, en un trabajo conjunto con Markus Holzer, ha demostrado que el juego Atomix es todavía más difícil que el Buscaminas, ya que pertenece a la clase de problemas denominados PSPACE-completos. No entraremos en detalles sobre lo que eso significa ya que excede los propósitos de este artículo; hay buenos libros sobre teoría de la complejidad donde se puede aprender el significado de este y otros términos. Baste decir que los problemas NP-completos están englobados dentro de los PSPACE-completos.

Joseph C. Culberson ha demostrado también que el Sokoban, un juego de empujar bloques, es PSPACE-completo. Lo ha hecho construyendo una máquina de Turing que utiliza construcciones de Sokoban diseñadas al efecto. En 1978 David Lichtenstein y Michael Sipser probaron que el Go, un juego de tablero de origen chino, tiene dificultad PSPACE al jugarlo con tableros de tamaño arbitrario.

Usando métodos parecidos a los de Kaye (nos referimos a la construcción de elementos lógicos circuitales), Erich Friedman, profesor de matemáticas de la universidad de Stetson, ha demostrado que un juego de bloques llamado Cubic (versión de uno comercial más conocido, llamado Puzznic) también pertenece a la clase de los NP-completos. Friedman también ha dado una prueba del mismo tipo para otro juego llamado Spiral Galaxies, un juego que se puede jugar con lápiz y papel. También ha demostrado la complejidad NP-completa de un juego que se llama Pearl Puzzles, aunque en este caso por metodos completamente distintos de los de Kaye: utilizando ciertos resultados de la teoría de grafos. Por métodos aún más complicados, Erik D. Demaine, junto con otros autores, demuestran lo mismo del conocido Tetris y también de un juego muy adictivo llamado Clickomania!, conocido también por el nombre de Same Game, del cual hay una versión llamada Click co-escrita por la webmaster del Rincón del Programador y un servidor.

Holzer ya había demostrado que un juego llamado TANTRIX, en su versión de puzzle, es NP-completo por el método de Kaye. Mediante una construcción parecida aunque más potente, Gary W. Flake y Eric B. Baum demuestran que un juego de bloques deslizantes llamado Rush Hour, de Thinkfun (antes Binary Arts), que casualmente poseo, es PSPACE-completo en su versión de tamaño indefinido. Demaine, en un trabajo conjunto con Robert A. Hearn, ha dado una demostración alternativa más simple. También simplifica la de Culberson sobre el Sokoban mediante la construcción de elementos lógicos al estilo de los de Flake y Baum.

Otros juegos que tengo noticia de que se han probado difíciles son: Damas, Othello, Mastermind, Dots and Boxes (conocido en España como los cuadritos), Shanghai (también conocido como el Solitario del Mahjongg), PushPush y algunas variantes, Gravity, Instant Insanity, Twixt y Corral Puzzles.

Soluciones a los problemas del artículo anterior

En el artículo anterior preguntábamos la longitud del programa Brainfuck más corto capaz de almacenar el número 111 en la primera celda de memoria, dejando las demás a ceros. Lola Cárdenas envió un programa de 28 instrucciones:

++++[>++++<-]>[<+++++++>-]<-

Es la solución más corta que conozco de las que dejan el puntero de datos a cero, pero esta condición no se exigía en el enunciado del problema. Juan José Martínez aprovechó esa circunstancia para proporcionar el siguiente código de 27 instrucciones:

++++++[>++++++<-]>+[<+++>-]

También Luis Cuesta ha enviado otra solución con 27 instrucciones, que utiliza un valor negativo como paso intermedio:

+++++++[>++++<-]->[<++++>-]

Si se utiliza un intérprete con ocho bits por celda tal y como se describía en el artículo, existe un programa aún más corto:

>-[<-->-------]<+

(17 instrucciones), pero hay que tener cuidado con la portabilidad, ya que por ejemplo no funcionará en un intérprete o compilador de 16 bits. La cuestión de si son posibles soluciones más cortas en cualquiera de las tres categorías mencionadas sigue abierta.

Enlaces

Sobre Buscaminas y circuitos lógicos

Diseñador de Buscaminas (124.973 bytes), escrito por el autor de este artículo. La documentación está en un apéndice, en esta misma página.

Página de Buscaminas de Richard W. Kaye:
http://web.mat.bham.ac.uk/R.W.Kaye/minesw/minesw.htm

Un artículo de Ian Stewart sobre el trabajo de Kaye:
http://www.claymath.org/Popular_Lectures/Minesweeper/

Un programa en Java (con fuente) para resolver tableros de Buscaminas automáticamente, aunque no siempre con éxito. Su autor invita a otros programadores a implementar cada uno su propia estrategia en Java.
http://www.ccs.neu.edu/home/ramsdell/pgms/

Michiel de Bondt ha escrito un artículo muy interesante sobre el Master Mind y el Buscaminas que se puede encontrar aquí (en PostScript + gzip):
http://www.math.ru.nl/onderzoek/reports/rep2004/rep04_18.ps.gz

Sobre otros juegos de los que se ha probado la dificultad

Una página de David Eppstein sobre la complejidad de algunos juegos:
http://www.ics.uci.edu/~eppstein/cgt/hard.html

Directorio de artículos técnicos, con multitud de ellos en formato PDF y PostScript. Contiene gran parte de la bibliografía utilizada para escribir el apartado de complementos.
http://citeseer.ist.psu.edu/
Contiene, entre otros muchos:
Sokoban is PSPACE-complete (Joseph C. Culberson)
Spiral Galaxies Puzzles are NP-complete (Erich Friedman)
Pearl Puzzles are NP-complete (Erich Friedman)
Corral Puzzles are NP-complete (Erich Friedman)
Pushing Blocks in Gravity is NP-hard (Erich Friedman)
The Game of Cubic is NP-complete (Erich Friedman)
PushPush and Push-1 are NP-hard in 2D (Erik D. Demaine, Joseph O'Rourke)
PushPush is NP-hard in 3D (Joseph O'Rourke)

En la página de Erik D. Demaine sobre juegos combinatorios hay varios artículos utilizados como bibliografía sobre Tetris, Clickomania, Phutball, Sliding Blocks (Rush Hour, Sokoban), etc.
http://theory.lcs.mit.edu/~edemaine/games/

Las páginas personales de los autores cuyo enlace está disponible en el texto también contienen en muchos casos los artículos publi­cados por ellos.

Un libro dedicado a la complejidad de muchos juegos, de la Universidad de Cambridge. No lo he leído. Aparentemente es una recopilación de artículos similar a los enlazados aquí.
More Games of No Chance

Juegos mencionados en el texto, disponibles en línea

Página dedicada al Buscaminas como juego. Entre las descargas hay varios programas para jugar al Buscaminas, algunos de ellos con encasillados diferentes del estándar cuadriculado (hexagonal, por ejemplo).
http://www.minesweeper.info/

Aquí encontraremos una versión en Java del Buscaminas con la cual podremos jugar en línea:
http://www.hut.fi/~mantell/Minesweeper.html

Si la versión Java no sirviera, desde la página del siguiente enlace podremos jugar en línea con cualquier navegador, aunque de una forma un poco engorrosa:
http://www.linc.or.jp/~hamano/game/minesweeper.html

Página sobre puzzles de bloques deslizantes. La mayoría de ellos son jugables mediante Java. Está entre otros el Rush Hour mencionado en el texto.
http://www.puzzleworld.org/SlidingBlockPuzzles/default.htm

Otra página con un juego tipo Rush Hour en Java:
http://www.rhymezone.com/games/bb/

El juego del Cubic es parecido al Puzznic pero carece de bloques móviles, y no es necesario que las piezas estén apoyadas para cancelarlas.
http://www.agon.com/doodle/four.html

El juego del Click escrito por Lola Cárdenas y Pedro Gimeno.
http://rinconprog.metropoliglobal.com/Programas/Juegos/Click.php

Un juego idéntico al Click se puede jugar en línea en la siguiente dirección (requiere Java):
http://glsft.multimania.com/Click.php

Otro que únicamente requiere JavaScript:
http://www.jaure.net/click

Aquellos que estén registrados en Yahoo! pueden jugar en línea contra otros jugadores al Go, Puntos y Rayas (Dots and Boxes, Cuadraditos), Othello, Damas, Shanghai (Mahjongg Solitaire) y muchos otros.
http://es.games.yahoo.com/

Sobre los problemas NP y el premio de un millón de dólares

Página de Stanislav Busygin sobre los problemas NP-completos.
http://www.busygin.dp.ua/npc.html

Página en español sobre el problema SAT.
http://www.mor.itesm.mx/~jfrausto/Algoritmos/pagina_sat/Sat.htm

Hay varias páginas en inglés dedicadas a algoritmos de resolución del problema SAT. Esta es una de ellas:
http://www.cs.duke.edu/~mlittman/topics/sat.html

Página sobre los premios ofrecidos por el Instituto Matemático Clay. Contiene una definición formal del problema «P=NP?».
http://www.claymath.org/millennium/

Apéndice: Documentación del Diseñador de Buscaminas

La intención del programa es proporcionar una herramienta con la que diseñar y probar configuraciones de Buscaminas, principalmente con el propósito de poder ensayar las que se exponen en este artículo. Lamentablemente, sólo está disponible para Windows por el momento, aunque si recibo suficientes peticiones quizá escriba una versión para Linux.

La instalación es muy simple: basta con descomprimir el fichero MineDsgn.zip en la carpeta de nuestra elección. El fichero MineDsgn.lng debe estar en la misma carpeta que MineDsgn.exe puesto que contiene la traducción al español de todos los textos. El programa es gratuito, freeware y de libre distribución siempre y cuando lo que se distribuya sea el paquete completo.

La forma de uso es la siguiente. Al comenzar el programa se muestra un tablero vacío del último tamaño que hayamos usado. Actualmente tiene dos modos de funcionamiento: el modo Diseño, activo por defecto, y el modo Prueba.

Modo Diseño

En modo diseño podemos «pintar» sobre el tablero; para ello escogemos la herramienta en el panel superior y utilizamos el botón izquierdo del ratón para dibujar. No se nos permite crear configuraciones inconsistentes: en una casilla no podemos poner un número mayor que el número de casillas cubiertas totales que rodean a esa casilla, ni menor que el número de casillas marcadas como minas. Las celdas cubiertas tienen preferencia sobre las descubiertas, en el sentido de que si alteramos una celda cubierta que provoca un cambio en los números de las celdas descubiertas a su alrededor, las que se actualizarán para reflejarlo serán las descubiertas.

Un doble click con el botón izquierdo sobre una casilla hará que si estaba cubierta se sustituya por una celda descubierta (con el número mínimo posible como valor inicial), y si estaba descubierta se sustituya por una cubierta.

Con el botón derecho incrementamos el número en las celdas descubiertas, o si ya era el máximo pasará al mínimo. En el caso de las celdas cubiertas la cambiaremos entre marcada y sin marcar. Cuando se use el botón derecho de esta manera, se seleccionará como herramienta la correspondiente al tipo de celda en el que se convierte la actual, de manera que podemos seguir dibujando con este nuevo tipo.

Existe una opción, «Utilizar marcas (?)», que hace que al pulsar el botón derecho en una celda marcada como mina ésta pase a ser un interrogante en lugar de una en blanco. Las celdas cubiertas con interrogante se comportan de la misma manera que las celdas sin él; el interrogante es sólo un signo para destacar ciertas casillas a voluntad del diseñador.

La misma opción hará además que al pulsar con el botón derecho sobre una celda descubierta ésta haga el ciclo entre el menor posible y el mayor posible y a continuación un interrogante. Este interrogante podrá sustituir a cualquier número más adelante, cuando probemos el tablero.

Una regla a la hora de dibujar es que si empezamos a dibujar en celdas cubiertas, sólo podremos dibujar en celdas cubiertas hasta que soltemos el botón izquierdo del ratón y lo volvamos a pulsar; similarmente, cuando empezamos a dibujar en las celdas descubiertas sólo podremos dibujar en celdas descubiertas.

Las opciones «Abrir configuración», «Guardar configuración» y «Guardar como...» se comportan como es de esperar. La opción «Nuevo tablero» borrará el diseño actual y dejará preparado el tablero para nuevos diseños. Para cambiarle el tamaño se usa la opción «Redimensionar tablero», pero cuidado porque los cambios no son reversibles actualmente. El tamaño máximo en esta versión es 200×200.

Modo Prueba

En este modo iremos descubriendo celdas cubiertas pero no marcadas, de forma tal que se mantenga siempre la consistencia. Cada vez que se invoque se restaurará el tablero creado con el modo Diseño. El tablero resultante de la prueba no se puede grabar. Las celdas cubiertas con un interrogante se comportarán exactamente igual que las celdas sin él.

Con el botón izquierdo descubriremos una celda cubierta; si ésta tiene que ser forzosamente una mina de acuerdo con sus vecinas descubiertas, en vez de descubrirse se marcará como tal. Al descubrirla, dependiendo de las celdas que la rodeen se mostrará un número o un interrogante. Si todas las celdas cubiertas a su alrededor son marcas de mina, o simplemente no tiene celdas cubiertas alrededor, mostrará el número de celdas marcadas como minas; si hay alguna celda cubierta que no está marcada como mina alrededor de ésa, mostrará un interrogante, pues no se sabe todavía si tienen minas o no. Si al pulsar el botón la celda no se marca ni se descubre, será porque no puede ni ser una mina ni no serlo, de acuerdo con los números que tiene alrededor; es decir, se habrá alcanzado una posición inconsistente. Si la opción de sonido está seleccionada, al pulsar sonará además una campanilla avisándolo.

Haciendo doble click sobre una celda se restaurará el valor que tuviera en modo diseño.

Con el botón derecho se marcará una celda cubierta como mina, o bien se desmarcará si ya lo estaba. En caso de que la opción «Utilizar marcas (?)» esté activa, el ciclo será celda cubierta - celda marcada - celda cubierta con interrogante. El marcar una celda como mina puede tener como resultado que se actualicen los interrogantes descubiertos que tuviera alrededor. Si al intentar marcar una mina no se nos permite, será porque alguna de las celdas descubiertas que tiene alrededor ya tiene una cantidad de celdas marcadas que coincide con su número, y por tanto no podemos marcar ésta.

El botón central también es muy útil. Si el ratón no dispone de botón central, se pueden usar simultáneamente los botones izquierdo y derecho, en ese orden (para realizar pulsaciones repetidas se puede utilizar sólo el botón derecho sin soltar el izquierdo). La forma de usarlo es la siguiente: con el puntero del ratón apuntamos a una celda descubierta cuyo número coincide bien con el número de celdas cubiertas totales, bien con el número de celdas marcadas que rodean a ésa. Al pulsar con el botón central se marcarán o se descubrirán las que falten, según proceda. En otro caso no hará nada. Al igual que con el click izquierdo, es posible que una celda no pueda ni contener una mina ni no contenerla (inconsistencia), lo cual se nos avisará con una campanilla si está activo el sonido.

A pesar de lo complicado que puede sonar, el manejo es más sencillo de lo que parece. En caso de que alguien encuentre algún error ruego me lo comunique escribiendo a parigalo@formauri.es.

Historia de revisiones de esta página

Copyright © 2003, 2005 Pedro Gimeno Fortea.

Deseo expresar un agradecimiento especial a Mª Dolores Cárdenas por su ayuda y su apoyo en todo momento. La estética de esta página se la debo a ella, así como multitud de otros detalles.

This page aims to be valid XHTML