มีข้อบกพร่องในการออกแบบหรือไม่หากสถานะของเอนทิตีไม่ได้ใช้ประโยชน์อย่างเต็มที่ enter (), execute () และ exit ()?


9

ฉันกำลังติดตาม AI เกมการเขียนโปรแกรมของ Mat Buckland ตามตัวอย่างและฉันพบว่าฉันไม่ได้ใช้สำหรับ enter (), execute () และ exit () ในสถานะของเอนทิตี ตัวอย่างเช่นในเกม RPG อาวุธอาจมีสถานะพร้อมและฉันอาจใช้ enter () และ exit () สำหรับสถานะนั้นเพื่อเพิ่มหรือลบการปรับเปลี่ยนความสามารถของผู้เล่น แต่ไม่จำเป็นต้องดำเนินการ (จริงๆ) ) นี่เป็นข้อบกพร่องในการออกแบบในเครื่องยนต์ของฉันหรือข้อบกพร่องของวิธีนี้หรือไม่?

คำตอบ:


8

เมื่อไม่ได้อ่านหนังสือผู้ที่โทรเข้าจะได้ยินเสียงเหมือนจุดเข้าใช้งานปกติสำหรับเครื่องสถานะ เพื่อให้เข้าใจการโทรเรามาดูสิ่งที่พวกเขาทำ

enter () - ดำเนินการเมื่อสถานะถูกเปิดใช้งาน

ดำเนินการ () - ดำเนินการในขณะที่สถานะถูกเปิดใช้งาน

exit () - ดำเนินการเมื่อสถานะถูกปิดใช้งาน

เหมาะกับเครื่องรัฐทุกประเภท เครื่องบางรุ่นต้องการการเรียกใช้ 'รัน' เท่านั้นส่วนเครื่องอื่น ๆ ต้องการ 'ป้อน' และ 'ออก' และเครื่องอื่น ๆ ก็ต้องการทั้งสามอย่าง

ตัวอย่างที่ 1 : ทริกเกอร์ปืนกล

  • ดำเนินการ: กระสุนไฟไหม้ในอัตราที่กำหนด

ตัวอย่างที่ 2 : บังคับบริดจ์

  • ป้อน: ทำให้บริดจ์ปรากฏขึ้น
  • ออก: ทำให้สะพานหายไป

ตัวอย่างที่ 3 : เกราะพลังส่วนบุคคล

  • ใส่: ให้ความคุ้มครองเป็นพิเศษแก่ผู้เล่น
  • ดำเนินการ: ใช้แบตเตอรี่หมด
  • ออก: นำการป้องกันเพิ่มเติมออก

8

มันไม่จำเป็นต้องเป็นสัญญาณของความผิดพลาดใด ๆ ไม่ใช่ทุกเอนทิตีหรือรัฐจะมีการใช้งานสำหรับทุกวิธีที่มีอยู่ เพียงปล่อยให้เมธอด execute () ว่างเปล่าก็น่าจะใช้ได้ IMO

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.