मैं खेल डोमिनियन का एक कंप्यूटर संस्करण लिख रहा हूं । यह एक टर्न-आधारित कार्ड गेम है जहां एक्शन कार्ड, ट्रेजर कार्ड और जीत प्वाइंट कार्ड एक खिलाड़ी के व्यक्तिगत डेक में जमा होते हैं। मेरे पास वर्ग संरचना बहुत अच्छी तरह से विकसित है, और मैं गेम लॉजिक डिजाइन करना शुरू कर रहा हूं। मैं अजगर का उपयोग कर रहा हूं, और मैं बाद में अजगर के साथ एक साधारण जीयूआई जोड़ सकता हूं।
खिलाड़ियों का टर्न सीक्वेंस एक बहुत ही साधारण स्टेट मशीन द्वारा शासित होता है। क्लॉकवाइज पास हो जाता है, और एक खिलाड़ी खेल खत्म होने से पहले बाहर नहीं निकल सकता। एक एकल मोड़ का खेल भी एक राज्य मशीन है; सामान्य तौर पर, खिलाड़ी एक "एक्शन चरण", एक "खरीद चरण" और "क्लीन-अप चरण" (उस क्रम में) से गुजरते हैं। प्रश्न के उत्तर के आधार पर टर्न-आधारित गेम इंजन को कैसे लागू किया जाए? राज्य मशीन इस स्थिति के लिए एक मानक तकनीक है।
मेरी समस्या यह है कि किसी खिलाड़ी के एक्शन चरण के दौरान, वह ऐसे एक्शन कार्ड का उपयोग कर सकता है, जिसके दुष्प्रभाव या तो स्वयं पर हों, या एक या एक से अधिक खिलाड़ियों पर हों। उदाहरण के लिए, एक एक्शन कार्ड एक खिलाड़ी को वर्तमान मोड़ के समापन के तुरंत बाद दूसरा मोड़ लेने की अनुमति देता है। एक अन्य एक्शन कार्ड के कारण अन्य सभी खिलाड़ी अपने हाथों से दो कार्ड छोड़ सकते हैं। एक और एक्शन कार्ड वर्तमान मोड़ के लिए कुछ भी नहीं करता है, लेकिन एक खिलाड़ी को उसके अगले मोड़ पर अतिरिक्त कार्ड खींचने की अनुमति देता है। चीजों को और अधिक जटिल बनाने के लिए, खेल में अक्सर नए विस्तार होते हैं जो नए कार्ड जोड़ते हैं। मुझे ऐसा लगता है कि गेम की स्टेट मशीन में हर एक्शन कार्ड के परिणाम को हार्ड-कोडिंग करना बदसूरत और असाध्य दोनों होगा। टर्न-आधारित रणनीति लूप का जवाब विस्तार के एक स्तर पर नहीं जाता है जो इस समस्या को हल करने के लिए डिजाइन को संबोधित करता है।
इस तरह के प्रोग्रामिंग मॉडल का उपयोग मुझे इस तथ्य को शामिल करने के लिए करना चाहिए कि टर्न लेने के लिए सामान्य पैटर्न को टर्न के भीतर होने वाली क्रियाओं द्वारा संशोधित किया जा सकता है? क्या गेम ऑब्जेक्ट को हर एक्शन कार्ड के प्रभावों का ट्रैक रखना चाहिए? या, यदि कार्डों को अपने स्वयं के प्रभाव को लागू करना चाहिए (जैसे एक इंटरफ़ेस को लागू करके), तो उन्हें पर्याप्त शक्ति देने के लिए क्या सेटअप आवश्यक है? मैंने इस समस्या का कुछ समाधान सोचा है, लेकिन मैं सोच रहा हूं कि क्या इसे हल करने का कोई मानक तरीका है। विशेष रूप से, मैं यह जानना चाहता हूं कि हर वस्तु को एक एक्शन कार्ड के रूप में किए जाने वाले कार्यों पर नज़र रखने के लिए क्या वस्तु / वर्ग / जो कुछ भी जिम्मेदार है, और यह भी कि सामान्य अनुक्रम में अस्थायी परिवर्तनों से संबंधित कैसे हैं। बारी राज्य मशीन।