2012-02-07 37 views
5

Tôi đã viết một trò chơi rắn trong Java. Những gì tôi cũng muốn làm là tạo ra một bản demo cho điều đó (vì vậy con rắn sẽ tự chơi). Tôi đã viết một bản demo đơn giản, nhưng con rắn chết khá nhanh. Vì vậy, có bất kỳ thuật toán hoặc một cái gì đó cho rằng loại vấn đề? Tôi tin rằng nó là một chút tương tự như vấn đề trò chơi cờ vua? Tôi muốn con rắn đó sẽ còn sống càng lâu càng tốt. Cảm ơn bạn.Viết bản demo cho trò chơi rắn

+0

Giải pháp dễ dàng = Làm chậm con rắn! – Mikhail

Trả lời

9

Số được bảo trợ bởi Google AI Challenge chạy trò chơi "Tron" vào năm 2010. Bạn có thể nhận được một số ý tưởng hay từ việc tìm kiếm giải pháp cho thử thách đó.

Nếu bạn chỉ muốn một chiến lược rất đơn giản mà làm cho một bản demo hợp lý thì bạn có thể thử một cái gì đó như sau:

  • Không bao giờ làm một động thái làm cho bạn sụp đổ, trừ khi bạn không có lựa chọn nào khác
  • Nếu động thái tiếp theo của bạn buộc bạn phải lựa chọn giữa hai hoặc nhiều khoảng trống (không được kết nối) khác nhau, hãy luôn chuyển sang phần lớn hơn của hai không gian. Điều này sẽ ngăn chặn con rắn của bạn bị mắc kẹt quá dễ dàng.
  • Nếu bạn đang di chuyển dọc theo một bức tường, hãy tiếp tục di chuyển dọc theo bức tường 98% thời gian, theo sau nó sang trái hoặc phải khi cần. Điều này sẽ giúp con rắn của bạn trông hợp lý thông minh, và cũng bảo tồn không gian trong sân chơi.
  • Nếu không, hãy di chuyển về phía trước 90% thời gian, rẽ trái và phải ngẫu nhiên 5% thời gian mỗi lần (điều này sẽ làm cho bản demo của bạn bớt nhàm chán).

Ngoài ra, tôi không nghĩ rằng cách tiếp cận AI kiểu cờ vua (với cây tìm kiếm di chuyển) sẽ hoạt động rất tốt. Bạn sẽ không thể dễ dàng tìm kiếm đủ số lần di chuyển trước.

1

Nếu không thực hiện công việc cho bạn, tôi có thể cho bạn biết cách tốt nhất để bắt đầu tiếp cận vấn đề như thế này là suy nghĩ về những gì con rắn nên làm để tồn tại càng lâu càng tốt. 'Quy tắc ngón tay cái' nên con rắn làm theo để sống sót. Đối với người mới bắt đầu, con rắn có lẽ nên quay trước khi nó chạm vào một chướng ngại vật, và hướng tới nơi nó sẽ không được đóng hộp. Vì vậy, bạn có thể lập trình con rắn để biến khi nó nằm trong một không gian của nó đuôi (hoặc tường) và hướng tới một hướng với khoảng cách lớn nhất giữa nó và các vật cản khác. Ngoài ra, con rắn tôi tin là một trò chơi mà máy tính có thể chơi hoàn hảo và trong bản demo của bạn, bạn có thể không muốn điều đó, vì vậy bạn luôn có thể ném một số ngẫu nhiên chỉ để gia vị mọi thứ nếu mọi thứ trở nên quá y.

2

Đây không phải là câu trả lời bạn đang tìm kiếm, nhưng tôi đăng nó bởi vì tôi thực sự muốn nhìn thấy bạn khám phá thuật toán này tiếp tục, sửa đổi nó cho đến khi bạn thấy mình với một AI khá hợp lý:

Thuật toán đơn giản nhất để giải quyết vấn đề này là "đi vòng quanh cạnh, và sau đó hạ xuống" tiếp cận. Về cơ bản, bạn bắt đầu với một con rắn, lấy nó để nó di chuyển về phía tây, sau đó ôm bức tường phía tây, rồi trần nhà. Sau đó, bạn đi qua tất cả các hình vuông có thể như một slinky cho đến khi bạn nhận được để phía dưới, đi về phía tây, và bắt đầu lại từ đầu.

Nếu bạn thử, bạn có thể biến điều này thành AI thực sự tuyệt vời: D

Các vấn đề liên quan