Thiết kế AI rắn


9

Tôi mới sử dụng stackechange gamedev này nhưng đã sử dụng các trang web toán học và cs trước đây.

Vì vậy, tôi đang cạnh tranh để tạo ra AI cho một con rắn sẽ cạnh tranh với bốn con rắn khác trong vòng 5 phút trong đó các quy tắc rất giống với trò chơi rắn truyền thống của Nokia ngoại trừ có năm con rắn, bảng là 30x30 và có một số trở ngại nhỏ trên sân.

Giống như trò chơi Nokia, con rắn của bạn phát triển khi bạn đến trái cây và nếu bạn đâm vào chính mình, một con rắn khác hoặc bức tường bạn chết. Trò chơi chạy với độ trễ 30ms giữa các lần di chuyển và máy chủ sẽ gửi trạng thái trò chơi mới cứ sau 50ms mà mã phải phân tích và những gì không và xuất ra bước tiếp theo.

Người chiến thắng là con rắn có chiều dài dài nhất tại bất kỳ thời điểm nào trong trò chơi. Tie breakers được quyết định bởi giết chết.

Cho đến nay những gì tôi đã làm được thực hiện tìm kiếm đồ thị A * từ mỗi con rắn để xác định xem con rắn của tôi có gần quả táo nhất không và nếu có, nó sẽ tìm quả táo. Mặt khác, tôi đã thực hiện một thuật toán nhỏ gọn để xác định khu vực trống nhất của bảng, mà con rắn của tôi đi, để dự đoán quả táo tiếp theo.

Ngoài ra, tôi có một số kiểm tra khả năng sống sót nhỏ để đảm bảo con rắn của tôi không rơi vào bẫy mà nó không thể thoát ra và nếu nó bị mắc kẹt, tôi có một cái gì đó để nó có cơ hội thoát ra tốt hơn.

...

Dù sao, tôi đã kiểm tra con rắn của tôi trên một máy chủ thử nghiệm và nó hoạt động khá tốt. Nói chung, chiến lược của tôi là chỉ tìm táo khi nó chắc chắn và tìm không gian khi nó không làm cho nó phát triển nhanh hơn bất kỳ con rắn nào khác (một số loài rắn làm điều tương tự nhưng thường chỉ đi đến giữa hoặc một góc) đôi khi nó thắng những trò chơi thử nghiệm này nhưng thường không bị đánh bại bởi cùng một con rắn dường như có lợi thế về khả năng sống sót (con rắn của tôi phát triển nhanh hơn nhưng sau đó chết bằng cách nào đó và con rắn khác này chỉ chậm chạp và chiến thắng một cách kiên định.

Vì vậy, tôi đã tự hỏi về bất kỳ ý tưởng bất cứ ai phải cố gắng và cải thiện con rắn của tôi. Hoặc có thể ý tưởng ở một cách tiếp cận mới để thực hiện. Các chức năng và lớp học của tôi rất tốt nên những thay đổi có vẻ quyết liệt không nên quá tệ. Tôi khuyến khích tất cả các ý tưởng.

Có suy nghĩ gì không?

Câu trả lời:


5

Một chiến lược phòng thủ tốt có thể là tạo ra một hình dạng hoàn hảo (vì vậy đầu và lưng của bạn luôn cách nhau 1 khoảng trống và bạn tạo một hình vuông đầy đủ hoặc bất cứ thứ gì có thể hình thành theo chiều dài nhất định của bạn), điều này sẽ khiến bạn khá nhiều bất tử vì không con rắn nào có thể chui vào khu vực kín của bạn và bạn sẽ không bao giờ tự chạy vào (trừ khi một quả táo bằng cách nào đó sinh ra trong miệng bạn, nhưng tôi tưởng tượng rằng điều đó là không thể nếu không có không gian).

Điều này sẽ làm cho nó trở nên như vậy nếu quả táo thực sự xuất hiện trong khu vực kín của bạn, bạn có thể được lập trình không đi tìm nó và những con rắn khác có thể sẽ chết khi cố lấy nó, sau một thời gian trôi qua, bạn có thể lấy nó theo cách chuyển đổi như vậy trở lại hình dạng của bạn tốt nhất có thể (có thể là một chút thuật toán phức tạp nhưng dường như có thể thực hiện được)

Khi nào đi táo sẽ chỉ phụ thuộc vào khoảng cách của chúng, có thể nếu bạn là người gần nhất với biên độ tốt, bạn có thể đi theo nó, nhưng nếu không thì hãy bảo thủ, khó có thể nói là cần phải điều chỉnh dựa trên thử và sai , nhưng tôi nghĩ nó sẽ là một chiến lược tốt.


1
Vì vậy, về cơ bản, "con rắn" của anh ấy nên "rùa". xD +1 ý tưởng hay.
Cypher

Tốt một. Nhưng có những trở ngại trên bảng. Vì vậy, các lập trình viên rắn khác phải tạo ra con rắn của họ để kiểm tra xem có vật cản nào không (dù là tường hay con rắn khác bao quanh quả táo). Họ có thể không đến và chỉ chết. Một điều có thể được thực hiện để tránh vấn đề này là có một khoảng cách đáng kể giữa đầu và đuôi.
Shashwat

hmm ý tưởng thú vị, tôi nghĩ rằng tôi có thể thực hiện một cái gì đó như thế này khi con rắn của tôi chỉ quanh quẩn chờ đợi quả táo tiếp theo sinh sản .. haha, tôi hơi lo lắng về việc táo sinh sản trong miệng tho, điều đó chắc chắn sẽ dẫn đến cái chết và những trò chơi này được quyết định bởi một cái chết ngay lập tức
Rawb

@Ronald Trên thực tế nếu bạn phát hiện ra táo đang sinh sản trong miệng, bạn có thể chỉ cần quay vào trong và quay ra ngoài và tiếp tục, vì AI có phản xạ hoàn hảo nên thực sự rất dễ khắc phục (và thậm chí có thể tự khắc phục) dựa trên cách bạn thực hiện.
Kevin DiTraglia

0

Con rắn nên điều chỉnh chiến lược của nó với chiều dài hiện tại của nó.

Một con rắn rất dài có thể sử dụng cơ thể của nó để rào trong đối thủ. Điều này có nghĩa là nó nên làm một con dấu với một bức tường.

Nếu con rắn đang di chuyển về phía đông, với một quả táo ở phía đông bắc của nó, nó sẽ di chuyển toàn bộ vào tường trước khi quay về hướng bắc, vì vậy các tuyến đường có thể cho những con rắn khác bị hạn chế nghiêm trọng.

  0123456789
a ··········
b ··········
c ········A·
d ··········
e ooooooC···
f o·········
g o·········
h oooooooo··
i ··········
j ··········

Con rắn này có đầu C, nên quay về hướng bắc ở e9, không phải ở e8, để bất kỳ đối thủ nào ở dưới nó, sẽ bị mắc kẹt và không thể ăn bất kỳ quả táo nào sinh sản trên dòng 'e'.

Diện tích bạn có thể cắt càng lớn và bạn có thể giữ nó càng lâu thì càng tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.