ฉันกำลังเล่นเกม 2d topdown ใน SFML 2 และต้องการหาวิธีที่สวยงามที่ทุกอย่างจะทำงานร่วมกันได้
ให้ฉันอธิบาย ฉันมีจำนวนคลาสที่สืบทอดมาจากฐานนามธรรมที่ให้วิธีการวาดและวิธีการอัปเดตไปยังคลาสทั้งหมด
ในเกมวนรอบฉันเรียกการอัปเดตแล้ววาดในแต่ละชั้นฉันคิดว่านี่เป็นวิธีการทั่วไป ฉันมีชั้นเรียนสำหรับไทล์การชนผู้เล่นและผู้จัดการทรัพยากรที่มีไทล์ / รูปภาพ / พื้นผิวทั้งหมด เนื่องจากวิธีการอินพุตทำงานใน SFML ฉันตัดสินใจที่จะให้แต่ละอินพุตจัดการคลาส (ถ้าจำเป็น) ในการเรียกใช้การอัพเดต
จนถึงตอนนี้ฉันได้ผ่านการอ้างอิงตามต้องการเช่นในคลาสผู้เล่นเมื่อกดปุ่มการเคลื่อนไหวฉันเรียกวิธีการในคลาสการชนเพื่อตรวจสอบว่าตำแหน่งที่ผู้เล่นต้องการย้ายไปเป็นการชนหรือไม่ และย้ายผู้เล่นเฉพาะเมื่อไม่มีการชนกัน
สิ่งนี้ใช้ได้ดีสำหรับส่วนใหญ่ แต่ฉันเชื่อว่ามันสามารถทำได้ดีกว่าฉันไม่แน่ใจว่าจะทำอย่างไร
ตอนนี้ฉันมีสิ่งที่ซับซ้อนกว่าที่ฉันต้องนำไปใช้เช่นผู้เล่นสามารถเดินไปที่วัตถุบนพื้นดินกดปุ่มเพื่อหยิบขึ้นมา / ยกมันขึ้นมาแล้วมันจะปรากฏในสินค้าคงคลัง นี่หมายความว่าต้องมีบางสิ่งเกิดขึ้น:
- ตรวจสอบว่าผู้เล่นอยู่ในช่วงของไอเท็มที่สามารถรีบูตได้บนปุ่มกดมิฉะนั้นจะไม่ดำเนินการต่อ
- ค้นหารายการ
- อัปเดตพื้นผิวสไปรต์ในรายการจากพื้นผิวเริ่มต้นเป็นพื้นผิว "ปล้น"
- อัปเดตการชนกันของรายการ: อาจมีการเปลี่ยนแปลงรูปร่างหรือถูกลบออกอย่างสมบูรณ์
- ต้องอัปเดตคลังโฆษณาด้วยรายการที่เพิ่ม
ฉันจะทำให้ทุกอย่างสื่อสารได้อย่างไร ด้วยระบบปัจจุบันของฉันฉันจะจบลงด้วยการเรียนนอกขอบเขตและวิธีการโทรหากันทั่วทุกที่ ฉันสามารถผูกชั้นเรียนทั้งหมดในผู้จัดการใหญ่คนหนึ่งและให้แต่ละคนอ้างอิงถึงชั้นผู้จัดการหลัก แต่สิ่งนี้ดูดีขึ้นเล็กน้อยเท่านั้น
ความช่วยเหลือ / คำแนะนำใด ๆ ที่จะได้รับการชื่นชมอย่างมาก! หากสิ่งใดไม่ชัดเจนฉันยินดีที่จะขยายสิ่ง