ผมเขียนรุ่นคอมพิวเตอร์ของเกมการปกครอง มันเป็นเกมไพ่เทิร์นเบสที่การ์ดแอคชั่นการ์ดขุมทรัพย์และการ์ดแต้มชัยชนะจะถูกสะสมไว้ในเด็คส่วนบุคคลของผู้เล่น ฉันมีโครงสร้างของชั้นเรียนที่พัฒนาค่อนข้างดีและฉันเริ่มออกแบบตรรกะของเกม ฉันใช้หลามและฉันอาจเพิ่ม GUI อย่างง่ายด้วย pygame ในภายหลัง
ลำดับการหมุนของผู้เล่นนั้นควบคุมโดยกลไกของรัฐที่ง่ายมาก หมุนตามเข็มนาฬิกาและผู้เล่นไม่สามารถออกจากเกมก่อนที่จะจบ การเล่นของเทิร์นเดี่ยวยังเป็นกลไกของรัฐ โดยทั่วไปผู้เล่นจะผ่าน "ขั้นตอนการกระทำ", "ขั้นตอนการซื้อ" และ "ขั้นตอนการทำความสะอาด" (ตามลำดับ) ตามคำตอบของคำถามวิธีการใช้เอ็นจิ้นเกมเทิร์นเบส เครื่องสถานะเป็นเทคนิคมาตรฐานสำหรับสถานการณ์นี้
ปัญหาของฉันคือในระหว่างขั้นตอนการกระทำของผู้เล่นเธอสามารถใช้การ์ดแอคชั่นที่มีผลข้างเคียงไม่ว่าจะด้วยตัวเองหรือกับผู้เล่นคนอื่นอย่างน้อยหนึ่งคน ตัวอย่างเช่นการ์ดแอคชั่นหนึ่งใบอนุญาตให้ผู้เล่นทำการเลี้ยวที่สองทันทีตามข้อสรุปของเทิร์นปัจจุบัน การ์ดการกระทำอีกใบหนึ่งทำให้ผู้เล่นคนอื่น ๆ ทิ้งการ์ดสองใบจากมือของพวกเขา อีกหนึ่งการ์ดแอคชั่นไม่ทำอะไรเลยสำหรับเทิร์นปัจจุบัน แต่อนุญาตให้ผู้เล่นวาดการ์ดพิเศษในเทิร์นถัดไปของเธอ เพื่อให้สิ่งต่าง ๆ มีความซับซ้อนยิ่งขึ้นมีการขยายเกมใหม่ ๆ เพิ่มการ์ดใหม่บ่อยครั้ง สำหรับฉันแล้วดูเหมือนว่าการเขียนโค้ดผลลัพธ์ของแอ็คชั่นการ์ดทุกใบลงในเครื่องสถานะของเกมจะน่าเกลียดและไม่สามารถปรับเปลี่ยนได้ คำตอบของTurn-based Strategy Loop ไม่เข้าสู่ระดับรายละเอียดที่เน้นการออกแบบเพื่อแก้ไขปัญหานี้
ฉันควรใช้รูปแบบการเขียนโปรแกรมประเภทใดเพื่อครอบคลุมข้อเท็จจริงที่ว่ารูปแบบทั่วไปสำหรับการเลี้ยวสามารถแก้ไขได้ด้วยการกระทำที่เกิดขึ้นภายในเทิร์น? วัตถุของเกมควรติดตามผลของการ์ดทุกใบหรือไม่ หรือหากการ์ดควรใช้เอฟเฟ็กต์ของตนเอง (เช่นโดยใช้อินเทอร์เฟซ) จำเป็นต้องมีการตั้งค่าใดเพื่อให้มีพลังงานเพียงพอ ฉันคิดวิธีแก้ปัญหานี้เล็กน้อย แต่ฉันสงสัยว่ามีวิธีมาตรฐานในการแก้ปัญหาหรือไม่ โดยเฉพาะฉันต้องการทราบว่าวัตถุ / คลาส / อะไรก็ตามที่รับผิดชอบในการติดตามการกระทำที่ผู้เล่นทุกคนจะต้องทำตามผลของการ์ดแอ็คชั่นที่กำลังเล่นและวิธีการที่เกี่ยวข้องกับการเปลี่ยนแปลงชั่วคราวในลำดับปกติของ เครื่องเปลี่ยนสถานะ