2012-06-14 51 views
6

Tôi hiện đang làm việc để triển khai trò chơi bài đánh bài và chơi bài 2 người, tương tự như 66 hoặc Schnapsen. Về cơ bản bạn cần phải thu thập điểm bằng cách chiến thắng thủ đoạn và trong khi có thẻ trong gói, cả hai người chơi rút ra một thẻ sau mỗi vòng.Tìm kiếm cây Monte Carlo hoặc các thuật toán khác cho trò chơi thẻ ngẫu nhiên?

Tôi đang ở thời điểm lập trình một AI tốt cho trò chơi không gian lận, nhưng thực sự tính toán di chuyển tốt nhất bằng cách chỉ sử dụng thông tin ở trạng thái trò chơi đã cho. Tôi bị mắc kẹt khi quyết định thuật toán hoặc logic nào là tốt nhất để sử dụng. Tôi quyết định chống lại các thuật toán như cắt tỉa Alpha-Beta vì có quá nhiều thông tin ẩn đặc biệt là vào đầu trò chơi. Tôi đọc nhiều điều thú vị về Tìm kiếm cây Monte Carlo và tìm kiếm UCT liên quan, nhưng vì trò chơi có các yếu tố ngẫu nhiên, nên cây cần tìm kiếm sẽ phát triển rất lớn trong một thời gian ngắn.

Thuật toán hoặc phương pháp nào sẽ là cách tốt nhất để sử dụng?

Trả lời

1

MCTS chắc chắn sẽ tốt hơn. Bất kể bạn chọn ai, bạn sẽ phải đối phó với thông tin không đầy đủ là vấn đề trọng tâm ở đây.

1

Here là một liên kết tới ứng dụng của UCT tới Klondike Solitaire. MCTS là hoàn toàn phù hợp cho vấn đề vì nó có thể đối phó tốt với tính ngẫu nhiên.

Bạn có thể xem phương pháp thưa thớt được mô tả bên trong giấy để biết cách giới hạn chiều rộng của cây.

+0

Cảm ơn bạn đã liên kết, tôi không biết về bài báo này! Điều duy nhất không rõ ràng với tôi là làm thế nào tôi nên xử lý một đối tượng trò chơi nhà nước. Lúc đầu nó là khá rõ ràng, vì cả hai người chơi có 5 thẻ, do đó, người chơi bắt đầu chỉ có 5 hành động để lựa chọn. Người chơi khác có thể phản hồi với kích thước _deck - 5_ hành động. Nhưng sau đó tôi không thực sự biết cách xử lý các tiểu bang sau vòng đầu tiên. Nếu tôi đúng, sau vòng đầu tiên khi cả hai người chơi đã rút thẻ từ gói, người chơi chiến thắng có thể thực hiện kích thước _deck + 4 hành động cards_ chưa sử dụng trước đó. Hay toàn bộ thái độ của tôi sai? –

+0

Tôi không biết chính xác trò chơi diễn ra như thế nào. Nhưng một tiểu bang nên chứa tất cả thông tin được xác định. Nếu bạn chỉ có một ngăn xếp với thẻ ẩn để rút ra, nhà nước có lẽ nên bao gồm tay người chơi và bất kỳ thẻ được tiết lộ nào (ngay cả khi bị loại bỏ). Vì vậy, bạn biết thẻ nào được để lại trên ngăn xếp và có thể được vẽ tiếp theo. Hành động là tất cả các hành động có thể. Nhưng như trong bài báo, bạn có thể chỉ cần viết một trình mô phỏng cho trò chơi (được viết bằng C, Java, ...) bằng cách nào đó tạo ra danh sách các hành động có thể và theo dõi trạng thái trò chơi. – ziggystar

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