Tôi đang cố gắng thực hiện thuật toán AI cho Bomberman. Hiện tại tôi có một cách triển khai thô sơ nhưng không thông minh lắm (AI hiện tại quá nhiệt tình trong việc đặt bom).
Đây là AI đầu tiên tôi từng thử thực hiện và tôi hơi bế tắc. Các thuật toán phức tạp hơn tôi có trong đầu (những thuật toán mà tôi mong đợi để đưa ra quyết định tốt hơn) quá phức tạp để trở thành giải pháp tốt.
Bạn có lời khuyên chung nào để triển khai Bomberman AI? Có những cách tiếp cận hoàn toàn khác nhau để làm cho bot trở nên phòng thủ hoặc tấn công hơn?
Chỉnh sửa: Thuật toán hiện tại
Thuật toán hiện tại của tôi đi một cái gì đó như thế này (mã giả):
1) Cố gắng đặt một quả bom và sau đó tìm một tế bào an toàn với tất cả các quả bom, bao gồm cả quả bom mà bạn vừa đặt. Để tìm ô đó, lặp qua bốn hướng; nếu bạn có thể tìm thấy bất kỳ tế bào phân kỳ an toàn nào và đến kịp thời (ví dụ: nếu hướng lên hoặc xuống, hãy tìm một ô được tìm thấy ở bên trái hoặc bên phải của con đường này), vậy thì an toàn để đặt bom và di chuyển theo hướng đó.
2) Nếu bạn không thể tìm thấy và an toàn các tế bào phân kỳ, hãy thử KHÔNG đặt bom và nhìn lại. Lần này bạn sẽ chỉ cần tìm một ô an toàn theo một hướng (bạn không phải chuyển hướng khỏi nó).
3) Nếu bạn vẫn không thể tìm thấy một tế bào an toàn, đừng làm gì cả.
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
Thuật toán này làm cho bot rất vui mừng (nó sẽ đặt bom rất thường xuyên). Nó không tự sát, nhưng nó có thói quen khiến bản thân dễ bị tổn thương bằng cách đi vào ngõ cụt, nơi nó có thể bị chặn và giết bởi những người chơi khác.
Bạn có gợi ý nào về cách tôi có thể cải thiện thuật toán này không? Hoặc có lẽ tôi nên thử một cái gì đó hoàn toàn khác?
Một trong những vấn đề với thuật toán này là nó có xu hướng rời khỏi bot với rất ít (thường chỉ là một) tế bào an toàn mà nó có thể đứng. Điều này là do bot để lại một vệt bom phía sau nó, miễn là nó không tự sát.
Tuy nhiên, để lại một vệt bom phía sau để lại một vài nơi mà bạn có thể trốn. Nếu một trong những người chơi hoặc bot khác quyết định đặt bom ở đâu đó gần bạn, điều đó thường xảy ra là bạn không có nơi nào để trốn và bạn chết.
Tôi cần một cách tốt hơn để quyết định khi nào đặt bom.