Estou tentando criar um “auto-jogo” (conhecido como bot, entre jogadores online) para fins acadêmicos.
O jogo “alvo” é feito em flash e é bem básico, há jogadores, um campo de futebol, goleiras e uma bola.
Basicamente, o que eu quero fazer é que o meu “personagem” siga a bola e chute-a. Com o tempo, aperfeiçoarei o programa, mas só isso já seria bom.
Até agora, estou a pensar assim:
Há uma classe Robot e um loop.
Este loop capturará uma imagem na tela do jogador. Até aí, está bem fácil e eu conseguira fazer.
O problema, é que nesta imagem (que tem a foto do desktop do usuário), preciso capturar a posição da bola e do jogador, para então usar o robô e fazer com que ele siga a bola.
Este jeito, com certeza deixaria o bot bem lento e “lotaria” o HD rapidamente, por tirar uma screenshot a cada “tantos” segundos. Por isso, também peço sugestões para outra idéia.
Não tenho nem idéia de como programar isto. Se alguém puder mostrar-me o caminho, agradeço muito!
Valeu!
E se a sua aplicação capturar a posição da bola (x,y) e direcionar o boot para que ele ante nessa direção e caso ele esteja distante demais, ou outro boot esteja mais próximo a bola, que ele desista da jogada, pois o que esta mais próximo tem mais chances.
Eu estava pensando nisto, mas não tenho idéia de como capturar a posição da bola e/ou direcionar o bot para a posição. hehehe
Se souberes, por favor, não deixe de avisar.
Os tutoriais do OpenCV e do MarvinProject são muito voltados à edição de imagens.
Não percebi muito bem como se detecta a localização duma imagem. Poderiam me explicar?
Você leu os assuntos que o entanglement sugeriu? A opencv, além de edição, faz rastreamento.
De qualquer forma, detectar uma imagem dentro de outra não é tão trivial.
No seu caso, como as imagens são digitais, na mesma escala, e nunca serão rotacionadas, a forma mais simples seria detectar através de template matching: