Trong trò chơi 2D tôi đang làm việc, công cụ trò chơi có thể cung cấp cho tôi, cho mỗi đơn vị, danh sách các đơn vị khác nằm trong phạm vi xem của nó.
Tôi muốn biết nếu có một thuật toán được thiết lập để sắp xếp các đơn vị theo nhóm , trong đó mỗi nhóm sẽ được xác định bởi tất cả các đơn vị được "kết nối" với nhau (thậm chí thông qua các đơn vị khác).
Một ví dụ có thể giúp hiểu câu hỏi tốt hơn (E = kẻ thù, O = đơn vị riêng). Đầu tiên, dữ liệu mà tôi sẽ nhận được từ công cụ trò chơi:
E1 can see E2, E3, O5
E2 can see E1
E3 can see E1
E4 can see O5
E5 can see O2
E6 can see E7, O9, O1
E7 can see E6
O1 can see E6
O2 can see O5, E5
O5 can see E1, E4, O2
O9 can see E6
Sau đó, tôi nên tính toán các nhóm như sau:
G1 = E1, E2, E3, E4, E5, O2, O5
G2 = O1, O9, E6, E7
Có thể giả định một cách an toàn rằng có một thuộc tính giao hoán cho trường nhìn: [nếu A thấy B, thì B thấy A].
Chỉ cần làm rõ: Tôi đã viết một triển khai ngây thơ lặp đi lặp lại trên mỗi hàng của thông tin công cụ trò chơi, nhưng từ cái nhìn của nó, có vẻ như một vấn đề chung đủ để nó được nghiên cứu sâu và có nhiều thuật toán được thiết lập (có thể vượt qua thông qua một số cấu trúc giống như cây?). Vấn đề của tôi là tôi không thể tìm ra cách nào để mô tả vấn đề của mình đã trả lại các lượt truy cập google hữu ích.
Cảm ơn rất nhiều về sự trợ giúp của bạn!