Tôi vừa đọc một số câu hỏi liên quan xuất hiện khi tôi nhập chủ đề, vì vậy tôi sẽ cố gắng không lặp lại chúng.C++ trò chơi, thiết kế và trách nhiệm của lớp học
Gần đây tôi đã bắt đầu xem lại một dự án học tập mà tôi đã bắt đầu khoảng hai hoặc ba năm trước - một cổng C++ của một động cơ Mega Man. Có, tôi đã sử dụng sprites ripped. Tôi cũng đang sử dụng thư viện công cụ trò chơi để vẽ, nhạc và nhập liệu.
Mã ban đầu của tôi rất tệ. Trong khi nó có thể (nhưng hầu như không) được gọi là OO, nó bị mất điểm hoàn toàn. Tôi đã bắt đầu thêm những thứ như giao diện và cắt ra rất nhiều mã lặp đi lặp lại. Có một số điều tôi không chắc chắn, bởi vì thiết kế trò chơi trở nên rất phức tạp.
Đối tượng đại diện cho thư viện trò chơi của tôi hiện là toàn cầu (tôi biết hình cầu thường là xấu) vì nhiều đối tượng có thể dựa vào nó ở đây và ở đó cho những thứ như tải nghệ thuật hoặc âm nhạc của họ. Cách tốt nhất để đi về việc kéo đối tượng đó ra khỏi phạm vi toàn cầu là gì, mà không cần phải truyền năm mươi tham số cho mọi thứ có thể sử dụng trực tiếp?
Câu hỏi tiếp theo: Như chúng ta đã biết, Mega Man bắn rất nhiều đạn nhỏ màu trắng. Hiện tại, đối tượng Player chịu trách nhiệm cho các đối tượng Projectile mà anh ta bắn, cập nhật vị trí của chúng và như vậy (theo nghĩa đen, gọi phương thức Projectile :: Update() một lần cho mỗi lần chụp, bên trong phương thức Player :: Update()). Đây có phải là cách sai để làm điều đó? Cải tiến đầu tiên của tôi là có tất cả các đối tượng này thực hiện giao diện DrawnObject để trò chơi của tôi có thể vẽ mọi thứ. Làm điều tương tự cho Cập nhật sẽ có nghĩa là tôi kiểm soát các viên đạn ra khỏi Player và đưa nó cho một số đối tượng Game rộng hơn. Lý do tôi do dự về điều này là nó cảm thấy giống như các đối tượng Thiên Chúa antipattern. Hay tôi hiểu lầm nói antipattern? Vẫn có thêm sự phức tạp liên quan - các viên đạn chết nếu họ rời khỏi màn hình hiển thị, vì vậy bất kỳ cuộc gọi nào để cập nhật đạn sẽ yêu cầu người gọi có quyền truy cập vào đối tượng màn hình.
Đó là tất cả cho bây giờ, tôi sẽ quay trở lại với nhiều vấn đề hơn khi tôi tiếp cận họ. Kết thúc bài đăng đầu tiên!
Ai đã viết rằng bài viết SRP? Tôi đã cố gắng để tìm cuốn sách đó vì nó là một chủ đề mà tôi thực sự quan tâm, bạn có thể chỉ cho tôi về điều đó không? – Goles
Lần đầu tiên tôi bắt gặp thuật ngữ này trong khi đọc cuốn sách "Phát triển phần mềm nhanh nhẹn: Nguyên tắc, mẫu và thực tiễn". Bởi Robert C. Martin (2002). Martin là người sáng lập và chủ tịch của Object Mentor (trang web nơi bài viết được đăng). – Harry