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