Vença o jogo Campo Minado do Google usando este script. Bibliotecas necessárias: numpy , opencv2 , pyautogui .
Baixe este projeto usando este comando:
https://github.com/EnriqueMoran/google-minesweeper-bot.git
Em seguida, instale as bibliotecas necessárias usando o seguinte comando:
pip install pyautogui opencv-python numpy
Assim que a instalação for concluída, clique com o botão direito no arquivo minesweeper.py e edite-o com IDLE. Abra o jogo Campo Minado do Google e certifique-se de que a janela do jogo esteja completamente visível, então clique em python IDLE e pressione F5.
Nota: A primeira vez que você executar o script abrirá uma nova janela que pode ser colocada sobre a janela do jogo, basta sair e redimensioná-la.
Importante: Caso precise abortar a execução do script, posicione o mouse no canto superior esquerdo da tela.
A cada movimento é feita uma captura de tela e cada célula que não está verde é reconhecida (célula não desconhecida).
Em seguida, cada célula é verificada para colocar um sinalizador em qualquer uma das células adjacentes. O algoritmo utilizado é o seguinte:
Se o número de células adjacentes sinalizadas for menor que a pontuação da célula verificada e o número de células adjacentes desconhecidas mais células sinalizadas for menor que a pontuação, coloque um sinalizador em qualquer uma das células adjacentes desconhecidas.
Se o número de células adjacentes sinalizadas for igual à pontuação e o número de células adjacentes desconhecidas for superior a 0, clique em qualquer uma delas.
Se nenhuma das células for válida para qualquer ação, uma célula desconhecida aleatória será clicada.
Quando não houver mais bandeiras, o jogo termina e o script é interrompido. Se o jogo for perdido ao clicar em uma célula aleatória, se a janela de pontuação for reconhecida, o script também irá parar.
Na v1.0 o desempenho depende do parâmetro speed que define o tempo que o script irá esperar após clicar em uma célula para fazer uma nova captura de tela.
Velocidade | Nº Jogos | Vitória/derrota fácil | Vitória/derrota normal | Vitória/derrota difícil | Média fácil Tempo | Média normal. Tempo | Média Difícil. Tempo |
---|---|---|---|---|---|---|---|
0,05 | 10 | 01/09 | 5/5 | 3/7 | 27h55 | 258,6 | 854 |
0,10 | 10 | 02/08 | 02/08 | 0/10 | 28.875 | 235,83 | - |
0,15 | 10 | 01/09 | 10/0 | 2/8 | 27.2 | 214,66 | 812,5 |
Na v1.2, a correspondência de modelo opencv2 não é mais usada. As pontuações são obtidas a partir da cor dos pixels. O desempenho da velocidade foi melhorado nas dificuldades fáceis e normais. Adicionando regras a serem aplicadas quando for necessário clicar aleatoriamente.
Velocidade | Nº Jogos | Vitória/derrota fácil | Vitória/derrota normal | Vitória/derrota difícil | Média fácil Tempo | Média normal. Tempo | Média Difícil. Tempo |
---|---|---|---|---|---|---|---|
0,015 | 10 | 02/08 | 4/6 | 0/10 | 11h25 | 42 | - |
0,05 | 10 | 7/3 | 5/5 | 1/9 | 11.28 | 44,6 | 113 |
Adicione regras para cliques aleatórios.