Tôi thực sự không chắc chắn rằng "mê cung" là thuật ngữ chính xác. Về cơ bản người dùng bắt đầu trong một Room
cửa có 4 cửa (N, S, E và W). Họ có thể đi theo bất kỳ hướng nào, và mỗi phòng tiếp theo chứa một phòng khác với bất kỳ nơi nào từ 1 đến 4 ô cửa đi đến các phòng khác.
"Mê cung" được cho là có kích thước không giới hạn, và phát triển khi bạn chuyển phòng. Có một số lượng Rooms
có hạn, tuy nhiên số có sẵn là động và có thể thay đổi.
Vấn đề của tôi là, tôi không chắc về cấu trúc dữ liệu tốt nhất cho kiểu mẫu này
Trước tiên tôi nghĩ về việc chỉ sử dụng một mảng các Room
đối tượng [X] [X] , nhưng tôi thực sự muốn tránh điều đó vì thứ đó đáng lẽ phải phát triển theo bất kỳ hướng nào, và chỉ nên xây dựng các phòng được "ghé thăm".
Ý nghĩ khác là mỗi Room
lớp chứa 4 Room
thuộc tính được liên kết cho N, S, E và W và chỉ liên kết với trước đó Room
, nhưng vấn đề là tôi không biết cách xác định nếu người dùng đi vào phòng mà có một phòng liền kề đã được "xây dựng"
Ví dụ,
--- --- ---------- | | | | Bắt đầu 5 4 | | | | --- --- --- --- --- --- --- ---------- --- --- | | | | | | | 1 2 3 | | | | | | --- --- --- --- ----------
Nếu người dùng di chuyển từ Bắt đầu> 1> 2> 3> 4> 5, thì Room
số 5 cần biết rằng W chứa phòng bắt đầu, S là phòng số 2 và trong trường hợp này không nên có sẵn và N có thể là một mới Room
hoặc một bức tường (không có gì).
Có lẽ tôi cần một sự pha trộn của mảng và các phòng được liên kết, hoặc có thể tôi chỉ nhìn sai cách này.
Có cách nào tốt hơn để xây dựng cấu trúc dữ liệu cho loại "mê cung" này không? Hay tôi đang đi đúng hướng với quá trình suy nghĩ hiện tại của mình, và tôi chỉ thiếu một vài thông tin?
(Trong trường hợp bạn quan tâm, dự án là một trò chơi rất giống với Munchkin Quest )