Nếu tôi không nhầm, về cơ bản bạn đang hỏi cách chia nhỏ trò chơi thành mô hình Model-View-Controller.
Đơn giản chỉ cần đặt, Mô hình là trạng thái của trò chơi của bạn. Trong các thuật ngữ O-O, bạn có thể nghĩ về Mô hình như tất cả các đối tượng trong trò chơi của bạn.
Bộ điều khiển là tập hợp các quy tắc được áp dụng cho trạng thái trò chơi của bạn (trong trường hợp này là tất cả các đối tượng trò chơi của bạn) trong mỗi chu kỳ cập nhật. Điều này có thể được thực hiện như một phương thức được gọi là update() trong tất cả các đối tượng của bạn, hoặc nó có thể là một hàm được gọi trong vòng lặp trò chơi của bạn có hệ thống đi qua tất cả các đối tượng cần được cập nhật và cập nhật chúng. Bạn cũng có thể nghĩ về Controller như bản thân vòng lặp game. Nó gọi tất cả mọi thứ để cập nhật, và sau đó vẽ nó trên màn hình và lặp lại, trừ khi một số điều kiện được đáp ứng, sau đó nó nói với chương trình để làm điều gì đó khác. Bằng cách này, bạn hầu như có hai cấu trúc MVC lồng nhau. Một trong những kiểm soát dòng chảy của chương trình thông qua các menu và như vậy, và một dành riêng cho các trò chơi riêng của mình.
Chế độ xem chỉ là biểu diễn đồ họa của trò chơi của bạn. Điều này có thể đơn giản như văn bản trên màn hình, nhưng trong trường hợp của bạn nó là đồ họa 2D. Để thực hiện điều này, bạn có thể có từng đối tượng cũng chứa trạng thái đồ họa của chúng, trực tiếp hoặc bằng cách đóng gói. Chế độ xem sẽ làm ít hơn truy vấn tất cả các đối tượng cho trạng thái đồ họa của chúng và sau đó shunt nó vào màn hình. Một lần nữa, điều này có thể được thực hiện trên cơ sở mỗi đối tượng, chẳng hạn như một phương thức gọi là draw() hoặc một hàm hệ thống khác được gọi trực tiếp từ vòng lặp trò chơi. Một thực tế phổ biến là tạo ra một đối tượng được gọi là 'Sptite' hoặc một cái gì đó tương tự như giữ thông tin đồ họa, và có tất cả các đối tượng trò chơi được vẽ có một cá thể cá nhân. Cũng lưu ý rằng View không cần phải là một đối tượng cho chính nó. Hàm duy nhất được gọi trong vòng lặp trò chơi sẽ đủ, mặc dù đôi khi cần lưu trữ thông tin trực tiếp ảnh hưởng đến hoạt động của Chế độ xem (như kích thước cửa sổ), trong trường hợp đó Chế độ xem có thể là đối tượng. Điều tương tự cũng xảy ra với Controller.
Cũng nên nhớ rằng các bộ phận này có thể được chia nhỏ hơn nữa để làm cho cuộc sống đơn giản hơn. Ví dụ: Bộ điều khiển có thể được chia thành xử lý AI, cập nhật chuyển động và kiểm tra va chạm. View có thể được tách thành màn hình hiển thị đối tượng trò chơi và HUD và Model có thể là tất cả các đối tượng + tất cả trạng thái độc lập của đối tượng trò chơi (như cài đặt trò chơi cho độ phân giải, kích thước cửa sổ, cấu hình chính và như vậy).
Tôi biết điều này có thể hơi quá mức và có thể có thêm thông tin, nhưng hy vọng nó sẽ trả lời câu hỏi của bạn và cung cấp cho bạn ý tưởng về nơi bắt đầu.
Có thể bạn sẽ tìm thấy [bài viết này] (http://www.gamasutra.com/view/feature/130693/the_guerrilla_guide_to_game_code.php) hữu ích .. nếu bạn chưa đọc nó. –
@ tereško Vì vậy, về cơ bản ScaryMonsterEnemyView sẽ giữ ScaryMonsterEnemyModel? Điều đó có thể có ý nghĩa tôi đoán .. – tobes
trong MVC xem không giữ mô hình. Chế độ xem chỉ nhận dữ liệu từ lớp mô hình. Nó được gửi từ lớp mô hình (MVC cổ điển) hoặc yêu cầu xem (Model2 MVC). –