ดังนั้นในสถานการณ์ที่กำหนดนี้ ฉันไม่แน่ใจว่าจะนำสิ่งนี้ไปใช้ด้วยวิธี OOP มากกว่านี้ได้อย่างไร
ด้วยบริบทดังต่อไปนี้:
- เกมของฉันมีเอนทิตีระดับซูเปอร์คลาส
- สิ่งมีชีวิต (เอนทิตีที่เคลื่อนไหว) และเอนทิตีแบบคงที่ (ต้นไม้/หิน/อื่นๆ) ขยายเอนทิตี
- ฉันมีคลาส EntityManager
ใน EntityManager ของฉัน ฉันจะตรวจสอบว่าเมาส์ของฉันวางอยู่เหนือเอนทิตีหรือไม่ หากเป็นกรณีนี้ ฉันจะเรนเดอร์โอเวอร์เลย์ที่แสดงแผงที่มีชื่อเอนทิตีอยู่
นอกจากชื่อแล้ว ฉันยังต้องการแสดงสถิติพื้นฐานบางอย่าง เช่น 'สุขภาพ' และอาจเป็น 'พลัง/การโจมตีสูงสุด' หรืออะไรสักอย่าง เอนทิตีแบบคงที่ไม่มีคุณลักษณะการต่อสู้ อย่างไรก็ตาม สิ่งมีชีวิตทำเช่นนั้น แต่เนื่องจากฉันส่งคืนเอนทิตี ฉันจะตรวจสอบว่าเอนทิตีนั้นเป็น 'อินสแตนซ์ของ' สิ่งมีชีวิตหรือไม่ และหากเป็นเช่นนั้น ให้วาดสถิติการต่อสู้ มิฉะนั้นเพียงวาดชื่อเอนทิตี
มีวิธี OO ที่ดีกว่าและมากกว่านี้ในการออกแบบโครงสร้างนี้ได้ไหม ฉันได้อ่านแล้วว่าสามารถหลีกเลี่ยงอินสแตนซ์ของการออกแบบ polymorphism/OO ได้
ข้อมูลโค้ดที่เกี่ยวข้อง:
if(hoveringEntity instanceof Creature) {
hoveringEntity = (Creature) hoveringEntity;
// Custom Util class to draw a String
Text.drawString(g, "Max hit: " + getDamage(hoveringEntity), x, y, true, Color.YELLOW, Assets.font14);
}
getDisplayInfo()
วิธีการส่งคืนสิ่งที่ควรแสดง จากนั้นคุณสามารถแทนที่ข้อมูลนั้นเพื่อให้ข้อมูลได้มากหรือน้อยตามที่คุณต้องการ คุณกำลังเขียนแบบจำเป็นในตอนนี้ ถ้า x เป็นเอนทิตีให้ทำสิ่งนี้ ถ้า x เป็นสิ่งมีชีวิตให้ทำอย่างนั้น ในขณะที่มันควรจะมากกว่า ให้ x ทำในสิ่งที่จำเป็น - person Kayaman   schedule 23.11.2017