Em primeiro lugar, isso é IA para PacMan e não para os fantasmas .
Estou escrevendo um papel de parede ao vivo para Android que reproduz o PacMan em torno de seus ícones. Embora ele suporte sugestões do usuário por meio de toques na tela, a maioria do jogo é jogada por uma IA. Eu estou 99% pronto com toda a programação do jogo, mas a IA do PacMan ainda é extremamente fraca. Estou procurando ajuda para desenvolver uma boa IA para determinar a próxima direção de viagem do PacMan.
Meu plano inicial era este:
- Inicialize um contador de pontuação para cada direção com um valor zero.
- Comece na posição atual e use um BFS para percorrer as quatro direções possíveis, adicionando-as à fila.
Retire um elemento da fila, verifique se ele ainda não foi "visto", verifique se é uma posição válida no quadro e adicione às direções iniciais correspondentes um valor para a célula atual com base em:
- Tem um ponto: mais 10
- Tem um poder acima: mais 50
- Tem uma fruta: mais o valor da fruta (varia de acordo com o nível)
- Tem um fantasma assustado: mais 200
- Tem um fantasma viajando em direção ao PacMan: subtraia 200
- Tem um fantasma viajando para longe do PacMan: não faça nada
- Tem um fantasma viajando perpendicular: subtraia 50
- Multiplique o valor da célula por uma porcentagem com base no número de etapas da célula; quanto mais etapas a partir da direção inicial, mais próximo o valor da célula será zero.
e enfileire as três direções possíveis da célula atual.
- Quando a fila estiver vazia, encontre a pontuação mais alta para cada uma das quatro direções iniciais possíveis e escolha essa.
Pareceu-me bom no papel, mas os fantasmas cercam PacMan extremamente rapidamente e ele se contorce de um lado para o outro nas mesmas duas ou três células até que um o atinja. Ajustar os valores para a presença de fantasmas também não ajuda. O meu ponto BFS mais próximo pode pelo menos chegar ao nível 2 ou 3 antes do final do jogo.
Estou procurando código, pensamentos e / ou links para recursos para o desenvolvimento de uma IA adequada - de preferência os dois primeiros. Gostaria de divulgar isso no mercado em algum momento deste fim de semana, por isso estou com pressa. Qualquer ajuda é muito apreciada.
Para sua informação, isso foi originalmente publicado no StackOverflow