Tôi đang cố gắng tạo ra một công cụ trò chơi dựa trên gạch linh hoạt để tạo ra tất cả các loại trò chơi giải đố không có thời gian thực, giống như Bejeweled, Civilization, Sokoban, v.v.
Cách tiếp cận đầu tiên tôi có là có một mảng 2D các đối tượng Ngói, và sau đó có các lớp kế thừa từ Ngói đại diện cho các đối tượng trò chơi. Thật không may, theo cách đó, tôi không thể xếp nhiều yếu tố trò chơi hơn trên cùng một Ngói mà không có mảng 3D.
Sau đó, tôi đã làm một điều khác biệt: Tôi vẫn có mảng 2D của các đối tượng Ngói, nhưng mọi đối tượng Ngói đều chứa một Danh sách nơi tôi đặt và các thực thể khác nhau. Điều này hoạt động tốt cho đến 20 phút trước, khi tôi nhận ra rằng quá tốn kém để làm nhiều việc, hãy xem ví dụ này:
Tôi có một thực thể Tường. Mỗi bản cập nhật tôi phải kiểm tra 8 ô liền kề, sau đó kiểm tra tất cả các thực thể trong Danh sách của Ngói, kiểm tra xem có bất kỳ thực thể nào trong số đó là Tường không, sau đó cuối cùng vẽ đúng sprite. (Điều này được thực hiện để vẽ các bức tường cạnh nhau liền mạch)
Giải pháp duy nhất tôi thấy bây giờ là có một mảng 3D, với nhiều lớp, có thể phù hợp với mọi tình huống. Nhưng theo cách đó tôi không thể xếp chồng hai thực thể có chung một lớp trên cùng một ô. Bất cứ khi nào tôi muốn làm điều đó tôi phải tạo một lớp mới.
Có một giải pháp tốt hơn? Bạn sẽ làm gì?