Thuật toán tạo mê cung trong trò chơi Netwalk là gì?Thuật toán tạo mê cung trong trò chơi Netwalk là gì?
Trả lời
Các source code is available tại Google Code, vì vậy bạn có thể đọc nó cho chính mình và tìm hiểu! Mê cung được tạo bởi hàm generate_maze
trong game.c
, dòng 78ff.
Netwalk tạo ra một mê cung bằng cách chạy một phiên bản ngẫu nhiên của Prim's algorithm để tìm một minimum spanning tree. Thuật toán của Prim lặp đi lặp lại phát triển một nhánh cây một lần tại một thời điểm, bắt đầu từ một nút nguồn (hoặc các nút: trong trường hợp này, "máy chủ", hộp chiều cao gấp đôi màu xanh đậm). Tại bất kỳ điểm nào trong các hoạt động của các thuật toán, cấu trúc dữ liệu trông giống như sau:
Các tế bào màu trong xanh là những tế bào ở những lời khuyên của các ngành đang phát triển: họ vẫn có ít nhất một sản phẩm nào hàng xóm mà họ có thể phát triển. Tại mỗi bước, thuật toán chọn một trong các ô màu xanh lá cây này và sau đó chọn một trong các hàng xóm trống của nó (1) và thêm chi nhánh vào hàng xóm đó. Nhánh mới này chặn các chi nhánh lân cận phát triển theo hướng của nó. Khi chi nhánh không có hàng xóm trống rỗng hơn (2), thì nó sẽ bị xóa khỏi danh sách các ô màu xanh lục.
Cuối cùng, danh sách màu lục bị trống: không có nhánh nào trong mạng có bất kỳ hàng xóm trống nào. Điều này có nghĩa rằng bảng đã đầy, và mỗi ô được kết nối với máy chủ bằng một đường dẫn duy nhất.
[Tôi đã lý tưởng hóa các chi tiết trong một vài địa điểm: (1) trong thực tế, thuật toán Netwalk là một chút ngây thơ, và chỉ cần chọn một hướng ngẫu nhiên, và nếu những người hàng xóm theo hướng đó là không trống, nó không làm gì và tiếp tục lặp lại tiếp theo. (2) Các chi nhánh không có hàng xóm trống không được phát hiện kịp thời: chúng chỉ bị loại khỏi danh sách xanh nếu chúng được chọn. Bản trình diễn sửa các lỗi nhỏ này.]
Cảm ơn bạn rất nhiều vì đã chỉ ra ý tưởng đằng sau trò chơi và bản trình diễn. Thật tuyệt. – boring
Đây là câu trả lời tuyệt vời, khách quan cho một câu hỏi thực sự rộng lớn. Cảm ơn bạn đã đóng góp. –
- 1. Thuật toán tạo mê cung tối ưu nhiều người chơi
- 2. Tạo thuật toán giải quyết mê cung trong Java
- 3. Thuật toán cho mê cung 3D
- 4. Thuật toán di truyền trong trò chơi
- 5. Mê cung Pacman trong Java
- 6. Thuật toán để tìm các thực thể di chuyển trong mê cung
- 7. Thuật toán cho tạo mê cung không có kết thúc chết?
- 8. Liên kết cho các thuật toán trò chơi đơn giản
- 9. Thuật toán đánh giá trò chơi ngoại giao
- 10. lấy chuột ra khỏi mê cung
- 11. Thuật toán s2k là gì?
- 12. Tạo trò chơi blackjack nhiều người chơi
- 13. "Di chuyển bên lề" từ trò chơi cũ là gì?
- 14. AI cho một trò chơi chiến thuật giống như trò chơi tưởng tượng cuối cùng
- 15. Lập trình toán học và trò chơi
- 16. Thuật toán giải quyết trò chơi (Buttonia, biến thể tắt đèn)
- 17. Thuật toán tìm đường dẫn dựa trên lưới 2D tốt là gì?
- 18. Kỹ thuật tốt để xử lý thay đổi trạng thái và trạng thái trong phát triển trò chơi là gì?
- 19. Làm thế nào để tạo ra một mê cung pacman ngẫu nhiên
- 20. Các trang web và/hoặc sách tốt để tìm hiểu thuật toán trò chơi?
- 21. 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?
- 22. Thuật toán "Vòng tròn con mèo" của trò chơi cổ điển?
- 23. Thuật toán R * -Tree là gì?
- 24. Bất kỳ thuật toán nào cho trò chơi "Lật tất cả" (Light Out)?
- 25. Công cụ trò chơi tốt và miễn phí là gì?
- 26. "gotchas" khi phát triển trò chơi trên iPhone là gì?
- 27. Phát triển trò chơi: Bạn tạo trò chơi câu chuyện bằng cách nào?
- 28. Tạo trò chơi với Cocos2dx trên Linux
- 29. Tạo một hướng dẫn trò chơi Javascript
- 30. Đây có phải là cách hay để tạo vòng lặp trò chơi cho trò chơi trên iPhone không?
Tôi đã mở lại điều này theo chất lượng của câu trả lời đã được đăng. Tuy nhiên, cộng đồng tự do không đồng ý với quyết định của tôi. Lý do của tôi là, câu trả lời chứng tỏ câu hỏi này thực sự là có thể trả lời khách quan, theo cách xây dựng - mặc dù tôi đồng ý rằng từ ngữ khá rộng. –
@Tim: Cảm ơn bạn. –
@Gareth Rees :) –