Perdona pero eso ya está hecho, y va a la velocidad del rayo.
Aunque no uso el del windows, sino uno que se llama SwineKeeper:
http://freenet-homepage.de/hskopp/swinekeeper.html
Este permite tableros mucho más grandes, yo juego a 75x43 con 600 bombas.
Juega analizando el tablero (mirando uno o dos píxeles en cada celda averiguo qué contiene) y juega legalmente como haría un humano, por ahora sólo es capaz de hacer las cosas más directas, que son:
a) Cuando una casilla con número está rodeada de tantos espacios como minas le faltan, esos espacios son minas.
b) Cuando una casilla con número y con casillas vecinas sin descubrir está rodeada de tantas minas como su número, entonces esas vecinas están libres.
En este caso en vez de minas habría que decir trufas
Con eso hace bastante tablero pero se deja cosas que sé resolver mentalmente y mi programa no, la idea es que haga deducciones más inteligentes que esas básicas. Además pulso las casillas con
ControlClick en vez de
MouseClick, con lo que puedo estar yo paralelamente resolviendo con el ratón las zonas en las que se queda atascado, jugamos juntos
Estaba pensando en cambiar el sistema de resolución usando lo que se llama satisfacción de restricciones, que en este caso es montar sistemas de ecuaciones enteras en las que las variables valen 1 (hay mina) o cero (libre). Explican el método en este documento, está en inglés pero quien pueda leerlo que lo haga porque es una pasada
:
http://www.minesweeper.info/articles/Mi ... action.pdf
El problema de resolver esto en AutoIt y por lo que me desmotivé un poco para atacarlo: los sistemas de ecuaciones generados normalmente no tienen solución única, pues tienen más variables (casillas por resolver) que ecuaciones (restricciones), en esos casos hay que buscar todas las soluciones para ver si por ejemplo una casilla es bomba en todas ellas, entonces sabes que es bomba sea cual sea la solución. El problema es que para implementar eso hay que ir dando valores a las variables viendo cuáles son soluciones, y es necesario hacer un algoritmo recursivo que haga "backtracking" y deshaga los cambios cuando se encuentra en un callejón sin salida (los valores que se han dado a algunas variables no dan solución alguna). La limitación está en que se abre un árbol de recursividad que crece exponencialmente con el número de variables del sistema, y AutoIt tiene una capacidad de recursión muy limitada...