Tôi đang làm việc trên một trò chơi iPhone cơ bản yêu cầu sơ đồ trang web một màn hình. Không có gì khó khăn ở đó. Tôi đến từ một nền C, vì vậy giải pháp hiện tại của tôi trông hơi như thế này:mảng 2 chiều trong Objective-C?
typedef struct _Tile {
NSString *type;
} Tile;
@interface Map {
Tile mapData[MAP_TILE_MAX_X][MAP_TILE_MAX_Y];
}
này hoạt động tốt, nhưng tôi đang tự hỏi nếu có một cách nhẹ hơn 'đúng' để xử lý mọi thứ qua Objective-C. Đây là cách tôi thấy tình hình sẽ xảy ra nếu tôi áp dụng cách tiếp cận Objective-C: Tôi muốn tạo một lớp Tile cơ bản để giữ các thuộc tính tile cơ bản, sau đó tôi có thể phân lớp cho các loại gạch cụ thể (ví dụ: @interface Water : Tile {}
). Điều này sẽ cho phép tôi cũng có logic cụ thể Tile. Ví dụ: lớp Tile có thể có phương thức 'suy nghĩ' sẽ thực hiện bất kỳ logic cần thiết nào. Trong lớp con Water của tôi, điều này có thể liên quan đến việc tạo hiệu ứng gợn sóng nếu người chơi bị nhấn chìm.
Câu hỏi của tôi thì:
- Có thể chấp nhận sử dụng C struct trong tình huống này? Nếu không, tôi có đi đúng hướng liên quan đến cách tiếp cận Obj-C của tôi không?
- Nếu tôi tạo lớp Gạch nền và sử dụng các lớp con cho các loại Tile cụ thể, tôi sẽ tự động khởi tạo từng lớp con Tile như thế nào (tôi đã có NSString chứa loại 'water', tôi sẽ cần phải khởi tạo lớp Water).
Tôi nhận thức được sự đếm. Nhưng bạn có thể biện minh cho việc sử dụng một cấu trúc ở đây thay cho một lớp học không? Tôi không đặc biệt quan tâm đến việc làm cho mã của tôi "tuyệt vời", tôi chỉ muốn làm cho nó thích hợp. – ndg