Tôi đang viết một trò chơi mê cung năng động, sau mỗi lần cấu trúc mê cung sẽ thay đổi (Một số cửa sẽ đóng lại và một số cửa sẽ mở ra. Một số thứ như Triwazard in HP4). Bất cứ ai có thể gợi ý cho tôi cấu trúc dữ liệu nào sẽ phù hợp nhất để đại diện cho điều này?Cấu trúc dữ liệu để đại diện cho một mê cung
Trả lời
Mê cung có phải là lưới hình chữ nhật không? Thứ gì khác?
Nó cũng phụ thuộc vào số lượng bản đồ sẽ chứa thông tin hữu ích (vé hoặc đồ vật).
Nếu đó là lưới hình chữ nhật và hầu hết ô vuông sẽ chứa SOMETHING, cấu trúc dữ liệu tốt là mảng 2D (mảng mảng), với mỗi phần tử của mảng đại diện cho 1 hàng, mỗi phần tử của mảng bên trong đại diện cho 1 ô trong hàng đó, là một đối tượng chứa dữ liệu liên quan đến ô đó (các ô lân cận nào có thể được di chuyển đến, ô nào chứa, có một ký tự trên đó).
Tuy nhiên, nếu mê cung không phải là hình chữ nhật HOẶC nếu phần lớn các ô trong mê cung lớn không thực sự chứa bất kỳ hữu ích nào (ví dụ: các khối không thể chuyển được), thì cấu trúc dữ liệu tốt là biểu đồ.
Mọi đỉnh của biểu đồ là ô có thể thực hiện được. Các cạnh đại diện cho các cặp ô mà bạn có thể di chuyển giữa (bạn có thể biến nó thành đồ thị được chỉ dẫn nếu một số cửa là chỉ một chiều). Mỗi đỉnh/ô là một đối tượng chứa thông tin trên ô đó (ví dụ: vị trí của nó trong mê cung vật lý sẽ được vẽ, v.v ...).
Lợi ích cấu trúc mảng mảng là nó rất dễ dàng để vẽ nó, và khá thẳng về phía trước để xử lý (bất kỳ di chuyển chỉ là trong/de-crement của một chỉ mục). Thêm/loại bỏ các bức tường dễ dàng như việc thay đổi dữ liệu trong 2 phần tử mảng của các ô lân cận.
Lợi ích cấu trúc biểu đồ là chiếm ít không gian hơn nhiều nếu mê cung vượt quá rất thưa thớt (ví dụ: chỉ có 1/100 trường vượt qua); đó là cấu trúc duy nhất có thể đại diện cho hình học ngẫu nhiên (ví dụ: không phải hình chữ nhật lưới) và quá trình xử lý khá đơn giản. Thêm/xóa tường dễ dàng vì nó chỉ thêm cạnh vào biểu đồ.
- 1. Cấu trúc dữ liệu cho một thế giới ngẫu nhiên
- 2. java.util.Stack cấu trúc dữ liệu thích hợp?
- 3. Cấu trúc dữ liệu C#
- 4. Thuật toán cho mê cung 3D
- 5. Đại diện có cấu trúc, nhân tố và nguyên tử?
- 6. Cấu trúc và cấu trúc dữ liệu khác nhau
- 7. Mê cung Pacman trong Java
- 8. C: Cấu trúc dữ liệu căn chỉnh
- 9. Mẫu cấu trúc dữ liệu RESTful
- 10. Java câu hỏi cấu trúc dữ liệu
- 11. Cấu trúc dữ liệu trong Python
- 12. Cấu trúc dữ liệu cho Double Elmination Tournament
- 13. Cấu trúc dữ liệu Trie - Java
- 14. Tạo cấu trúc dữ liệu như cấu trúc dữ liệu trong Java
- 15. gấu trúc tổng hợp dữ liệu vào một mảng sumpy: chuyển đổi cấu trúc dữ liệu
- 16. Truy vấn dữ liệu cấu trúc cây trong SQL Server
- 17. Cấu trúc dữ liệu không gian cho các trò chơi
- 18. cấu trúc dữ liệu cho cây gia đình
- 19. Cấu trúc dữ liệu cho các cấp trong Trò chơi
- 20. Cấu trúc dữ liệu hai chiều cho tình huống này
- 21. Văn bản chưa được cấu trúc cho dữ liệu có cấu trúc
- 22. Cấu trúc dữ liệu Java Tham chiếu
- 23. Cấu trúc dữ liệu phức tạp Redis
- 24. Cấu trúc dữ liệu cho trình soạn thảo văn bản
- 25. Cấu trúc dữ liệu tốt nhất cho dữ liệu chuỗi thời gian
- 26. Có cấu trúc dữ liệu Queue/FIFO cho iPhone không?
- 27. Cấu trúc dữ liệu cho Quy trình Quyết định Markov
- 28. Thuật toán và cấu trúc dữ liệu
- 29. Loại dữ liệu cấu trúc trong Mathematica?
- 30. Cấu trúc cơ sở dữ liệu SQL
1) Bạn đã cân nhắc cấu trúc dữ liệu nào? 2) Không bao giờ giả sử mọi người biết tất cả các chữ viết tắt nhỏ mà bạn làm. HP4 không chính xác là một từ viết tắt nổi tiếng thế giới cho cuốn sách thứ 4 của Harry Potter. – DVK