Bomberman에 AI 알고리즘을 구현하려고합니다. 현재 나는 작동하지만 똑똑하지 않은 초보 구현을 가지고 있습니다 (현재 AI는 폭탄을 배치하는 데 지나치게 열심입니다).
이것은 내가 구현하려고 시도한 첫 번째 AI이며 약간 붙어 있습니다. 내가 생각한 더 정교한 알고리즘 (더 나은 결정을 내릴 것으로 예상되는 알고리즘)은 너무 복잡하여 좋은 솔루션이 아닙니다.
Bomberman AI 구현에 대한 일반적인 팁은 무엇입니까? 봇을 방어 적이거나 공격적인 방식으로 만드는 다른 접근법이 있습니까?
편집 : 현재 알고리즘
내 현재 알고리즘은 다음과 같습니다 (의사 코드).
1) 폭탄을 배치 한 다음 방금 배치 한 폭탄을 포함하여 모든 폭탄으로부터 안전한 셀을 찾으십시오. 해당 셀을 찾으려면 네 방향을 반복하십시오. 안전한 발산 셀을 찾아 제 시간에 도달하면 (예 : 방향이 위 또는 아래 인 경우이 경로의 왼쪽 또는 오른쪽에있는 셀을 찾으십시오) 폭탄을 배치하고 이동하는 것이 안전합니다 그 방향으로.
2) 발산 세포를 찾을 수없고 안전한 경우 폭탄을 배치하지 말고 다시보십시오. 이번에는 오직 한 방향으로 만 안전한 셀을 찾아야합니다 (분기점에서 벗어날 필요는 없습니다).
3) 여전히 안전한 세포를 찾을 수 없으면 아무 것도하지 마십시오.
for $(direction) in (up, down, left, right):
place bomb at current location
if (can find and reach divergent safe cell in current $(direction)):
bomb = true
move = $(direction)
return
for $(direction) in (up, down, left, right):
do not place bomb at current location
if (any safe cell in the current $(direction)):
bomb = false
move = $(direction)
return
else:
bomb = false
move = stay_put
이 알고리즘은 봇을 매우 행복하게 만듭니다 (폭탄을 매우 자주 배치 함). 그것은 스스로를 죽이지 않지만 다른 플레이어가 막고 죽일 수있는 막 다른 골목에 들어가서 스스로를 취약하게 만드는 습관이 있습니다.
이 알고리즘을 개선 할 수있는 방법에 대한 제안이 있습니까? 아니면 완전히 다른 것을 시도해야합니까?
이 알고리즘 의 문제점 중 하나는 봇을 막을 수있는 안전한 셀이 거의없는 경우가 많다는 것입니다. 봇이 죽지 않는 한 봇이 뒤에 폭탄을 남기기 때문입니다.
그러나 폭탄 뒤에 흔적을 남기면 숨길 수있는 곳이 거의 없습니다. 다른 플레이어 나 봇 중 하나가 당신 근처 어딘가에 폭탄을 설치하기로 결정하면 숨을 곳이없고 죽는 경우가 종종 있습니다.
폭탄을 배치 할시기를 결정하는 더 좋은 방법이 필요합니다.