Principio básico para automação de jogos:
Bom, nessa thread vou programar um bot em python pro jogo do dinossauro do Google, nada muito complexo, com código simples e bem customizável!
Atual record do bot:
Bom, nessa thread vou programar um bot em python pro jogo do dinossauro do Google, nada muito complexo, com código simples e bem customizável!
Atual record do bot:
Bom,pra começar é necessário pensar em um jeito do código saber o que ele precisa fazer, nesse jogo é bem simples,ele tem que ver onde ta o cacto e pular ele.
Pra saber onde ta o cacto eu vou tirar uma screenshot da tela, e usarei o módulo que eu mesmo fiz https://github.com/yungbzz/custom_modules
Pra saber onde ta o cacto eu vou tirar uma screenshot da tela, e usarei o módulo que eu mesmo fiz https://github.com/yungbzz/custom_modules
Além do meu módulo pra tirar screenshot também vou usar o PyAutoGUI para emular o "espaço" pra poder pular, além do módulo time para dar o intervalo de 0.5 segundos após pular
A screenshot vai começar nas coordenadas, em pixel, (716, 370), tendo uma altura de 20 pixels e largura de 120 + increase (que irei explicar). Vai ser mais ou menos do tamanho do retângulo que fiz em vermelho.
Ok, tendo a screenshot eu tenho que identificar o que é um cacto, como o jogo é monocromático eu posso falar que tudo que não é branco é um inimigo. Então irei usar um código simples pra conseguir coletar as cores.
Com a função screenshot.getcolors() eu gerei uma lista com todas as cores que ele identificar. Cada cor será identificada como (id (R, G, B)). Fiz um laço for que irá ver todas as cores e checar se o R é menor que 150, se sim, ele vai pular
Poderia estar pronto agora, mas tem um problema, o jogo acelera com o passar do tempo. Sabendo disso eu coloquei que na largura do print será 120 pixels + uma quantidade definida pela quantidade de pulos que ele deu. Defini as variáveis "jumps" e "increase" com valor 0.
Aqui é um pouco de lógica, mas basicamente eu fiz que sempre quando ele pular vai adicionar +1 no jump, se jump for maior ou igual a 10 e também for menor que 20 ele irá adicionar 0.1 no increase. No final disso, ele irá "descansar" por 0.5 segundos, tempo pro dino pisar no chao
Coloquei tudo isso em um laço "while True:", que irá executar o código sem parar. Ele não utiliza nenhuma inteligencia artificial então se, no início, tiver muitos cactos duplos ou triplos, é possível que ele morra.
Além disso, o modulo PyAutoGUI não diferencia entre um pulo pequeno e um pulo grande, ele sempre pulará alto. Quando eu desenvolver um módulo que diferencie isso eu faço um update na thread. O increase também não está preciso, então se vc for fazer, recomendo testar valores novos
Mas é isso, ainda não sei se farei mais threads ensinando os princípios básicos de automação, se essa thread tiver uma boa aceitação talvez eu faça mais!
Aqui um vídeo gravado com o celular (Pra mostrar que não estou no teclado) com ele funcionando