trình đọc thời gian dài đầu tiên. Làm ơn dịu dàng.Các lớp 'Tự nhận thức'?
Tôi khao khát tạo trò chơi trong VB.net. Là một lập trình viên sở thích, tôi cho miễn phí trò chơi của mình. Vì tôi là một Hobbiest mà không được đào tạo chính quy, tôi cố gắng và tự học về các nguyên tắc lập trình thích hợp và tuân theo chúng khi lập trình như OOP. Tuy nhiên, có một số điều tôi rõ ràng đã bỏ lỡ là tự học mà có lẽ tôi sẽ biết nếu tôi được giáo dục chính thức.
Một khi vấn đề đó thực sự là lệnh cấm của tôi là các lớp khác nhau (từ bây giờ được gọi là đối tượng) 'biết' về nhau KHÔNG tương tác với chương trình cụ thể (ở lại với tôi ở đây ... vui lòng ...)
rồi tưởng tượng này, bạn có một trò chơi không gian và các đối tượng sau đây
- clsShip
- clsMissile
- clsAsteroid
- clsSpaceJunk
Bây giờ, mỗi đối tượng trong số này có một thành viên riêng tư Y tế, X, Y và Z, tất cả đều được kế thừa từ clsSpaceEntity vì lợi ích đối số. Bây giờ một cách để va chạm lập trình giữa chúng sẽ được mã hóa ra logic sau đây trong vòng lặp trò chơi chính
cho mỗi tàu trong một danh sách các tàu
kiểm tra mỗi clsMissile trong một danh sách để xem nếu nó va chạm với nó và nếu như vậy, làm giảm sức khỏe
kiểm tra mỗi clsAsteroidin một danh sách để xem nếu nó va chạm với nó và nếu như vậy, làm giảm sức khỏe
kiểm tra mỗi danh sách clsSpaceJunka để xem nếu nó va chạm với nó và nếu như vậy, làm giảm sức khỏe
... và vv cứ tiếp tục như vậy cho mọi đối tượng tiếp theo
ect ect ...
Bây giờ điều này có thể đường may nếu bạn nói về ví dụ đơn giản ở trên nhưng một số trò chơi của tôi có hàng chục hoặc thậm chí hàng trăm đối tượng tương tác theo cách cơ bản này.
Bây giờ câu hỏi của tôi dành cho những người lập trình có kinh nghiệm ở đó.
Có cách nào trong OOP phải làm như sau ...
cho mỗi điều được thừa kế từ clsSpaceEntity
kiểm tra đối với tất cả các đối tượng khác mà được thừa hưởng kiểu này (ngoại trừ chính nó) và nếu họ va chạm sau đó giảm sức khỏe
next
?
Loại khả năng này cho một loại đối tượng/lớp hoặc bất kỳ thứ gì để 'nhận thức' của người khác và cách chúng giống nhau/khác nhau và tương tác sẽ tiết kiệm cho tôi tấn và tấn và TONNES của mã hóa.
Mọi hỗ trợ/trợ giúp hoặc phản hồi về điều này sẽ rất được đánh giá cao. Cảm ơn bạn đã dành thời gian, xin lỗi vì đã đọc lâu.
Không sử dụng ký hiệu Hungary ('clsWhatever'). – SLaks
Dường như bạn đang cố gắng để đạt được sự tách biệt mối quan tâm. Sử dụng một số khái niệm OOP khác, bạn có thể tạo ra logic tách biệt đẹp mắt mà không có các phương thức khổng lồ xử lý mọi loại đối tượng. Chúc may mắn! – SLaks
Tắt chủ đề, nhưng bạn có vẻ hơi bối rối về các lớp và đối tượng. Trong khi chúng có liên quan, chúng không giống nhau. Hộp bình luận này là một chút nhỏ cho một lời giải thích đầy đủ, nhưng đọc lên trên sự khác biệt sẽ làm cho cuộc sống dễ dàng hơn cho bạn. –