Tôi có một lưới các ô trong một trò chơi và mỗi ô có thể có một hình dạng đơn giản nhất định trên đó.
Tôi muốn có thể xác định xem hình dạng kết hợp từ bất kỳ sự sắp xếp nhất định nào của các ô này có dẫn đến hình dạng lớn hơn 'không bị phá vỡ' hoặc 'bị phá vỡ' hay không.
Ví dụ; đây là một ví dụ về hình dạng 'không bị phá vỡ' ...
Và đây là một ví dụ về hình dạng 'bị hỏng' ...
Tôi sẽ có thể viết mã cần thiết một khi tôi tìm ra logic của vấn đề này, nhưng cho đến nay tôi đã phải vật lộn.
Tôi đã thử các bảng dữ liệu được liên kết với từng ô mô tả các cạnh của nó, ví dụ:
var edges = {
top : false,
right : true,
bottom : true,
left : false
}
Và từ đó tôi có thể xác định xem mỗi ô có được 'kết nối' với hàng xóm của nó không. Nhưng điều này không giúp ích cho tất cả các tình huống.
EDIT 1: Nhiều cụm hình dạng 'không bị phá vỡ' bị cô lập sẽ được coi là hình dạng 'bị hỏng' ...
EDIT 2:
Ngoài ra, hình dạng 'không bị phá vỡ' có thể đạt được nếu cạnh của hình dạng không được kết nối với mọi ô lân cận, nó có thể chỉ là một kết nối. Ví dụ: tôi sẽ coi đây là 'không bị phá vỡ' ...
Bất cứ ai có bất kỳ ý tưởng về điều này?