10 KiB
एक खेल का मॉक अप करें: डिज़ाइन पैटर्न लागू करें
असाइनमेंट का अवलोकन
डिज़ाइन पैटर्न का अपना नया ज्ञान कार्य में लाएं और एक सरल खेल प्रोटोटाइप बनाएं! यह असाइनमेंट आपको वास्तुशिल्प पैटर्न (विरासत या संयोजन) और लेसन में सीखे गए pub/sub संचार प्रणाली दोनों का अभ्यास करने में मदद करेगा।
निर्देश
इस पाठ से डिज़ाइन पैटर्न दिखाने वाला एक सरल खेल प्रतिनिधित्व बनाएं। आपका खेल कार्यात्मक होना चाहिए लेकिन इसमें जटिल ग्राफिक्स की आवश्यकता नहीं है – ध्यान मूल वास्तुकला और संचार पैटर्न पर दें।
आवश्यकताएँ
अपनी आर्किटेक्चर पैटर्न चुनें:
- विकल्प A: क्लास-आधारित विरासत का उपयोग करें (जैसे
GameObject→Movable→Heroउदाहरण) - विकल्प B: संयोजन का उपयोग करें (जैसे मिश्रित व्यवहारों के साथ फैक्ट्री फ़ंक्शन विधि)
संचार लागू करें:
- एक
EventEmitterक्लास शामिल करें pub/sub संदेश प्रणाली के लिए - कम से कम 2-3 विभिन्न संदेश प्रकार सेट करें (जैसे
PLAYER_MOVE,ENEMY_SPAWN,SCORE_UPDATE) - उपयोगकर्ता इनपुट (कीबोर्ड/माउस) को गेम ईवेंट्स से कनेक्ट करें इवेंट सिस्टम के माध्यम से
खेल के तत्व जो शामिल हों:
- कम से कम एक खिलाड़ी-नियंत्रित पात्र
- कम से कम एक अन्य खेल वस्तु (दुश्मन, संग्रहणीय वस्तु, या पर्यावरणीय तत्व)
- वस्तुओं के बीच बुनियादी बातचीत (टकराव, संग्रह, या संचार)
सुझाए गए खेल विचार
सरल खेल जो विचार करने योग्य हैं:
- साँप खेल – साँप के खंड सिर का अनुसरण करते हैं, भोजन यादृच्छिक रूप से स्पॉन होता है
- पोंग संस्करण – पैडल इनपुट पर प्रतिक्रिया करता है, गेंद दीवारों से टकराती है
- संग्रहकर्ता खेल – खिलाड़ी वस्तुएँ इकट्ठा करते हुए बाधाओं से बचता है
- टावर डिफेंस बेसिक्स – टावर चलते हुए दुश्मनों को डिटेक्ट और शूट करते हैं
कोड संरचना दिशानिर्देश
// उदाहरण प्रारंभिक संरचना
const Messages = {
// यहाँ अपने खेल संदेश परिभाषित करें
};
class EventEmitter {
// आपका इवेंट सिस्टम कार्यान्वयन
}
// वर्ग-आधारित या संयोजन दृष्टिकोण में से चुनें
// वर्ग-आधारित उदाहरण:
class GameObject { /* base properties */ }
class Player extends GameObject { /* player-specific behavior */ }
// या संयोजन उदाहरण:
const gameObject = { /* base properties */ };
const movable = { /* movement behavior */ };
function createPlayer() { /* combine behaviors */ }
अपने कार्यान्वयन का परीक्षण करें
अपने कोड की जांच करें:
- परीक्षण करें कि वस्तुएं ईवेंट्स सक्रिय होने पर हिलती या बदलती हैं
- पुष्टि करें कि एक ही ईवेंट पर कई वस्तुएं प्रतिक्रिया दे सकती हैं
- जांचें कि आप मौजूदा कोड को बदले बिना नए व्यवहार जोड़ सकते हैं
- सुनिश्चित करें कि कीबोर्ड/माउस इनपुट सही ढंग से गेम ईवेंट्स को ट्रिगर करता है
सबमिशन दिशानिर्देश
आपका सबमिशन शामिल होना चाहिए:
- JavaScript फाइल(ओं) जिसमें आपका गेम कार्यान्वयन हो
- HTML फाइल जिससे आपका गेम चलाया और परीक्षण किया जा सके (सरल हो सकती है)
- टिप्पणियाँ जो बताएँ कि आपने कौन सा पैटर्न चुना और क्यों
- संक्षिप्त दस्तावेज़ीकरण आपके संदेश प्रकारों और उनके कार्य का
मूल्यांकन मापदंड
| मापदंड | EXEMPLARY (3 अंक) | ADEQUATE (2 अंक) | NEEDS IMPROVEMENT (1 अंक) |
|---|---|---|---|
| आर्किटेक्चर पैटर्न | विरासत या संयोजन में से किसी एक को सही ढंग से स्पष्ट क्लास/ऑब्जेक्ट हायरेरकी के साथ लागू किया गया | चुने गए पैटर्न का उपयोग किया गया लेकिन मामूली त्रुटियाँ या असंगतियां हैं | पैटर्न का प्रयास किया गया लेकिन कार्यान्वयन में महत्वपूर्ण समस्याएं हैं |
| Pub/Sub कार्यान्वयन | EventEmitter सही ढंग से काम करता है, कई संदेश प्रकारों और उचित इवेंट फ्लो के साथ | बुनियादी pub/sub सिस्टम काम करता है लेकिन कुछ इवेंट हैंडलिंग सीमित है | इवेंट सिस्टम मौजूद है पर विश्वसनीय रूप से काम नहीं करता |
| गेम कार्यक्षमता | तीन या अधिक इंटरैक्टिव एलिमेंट्स जो इवेंट्स के माध्यम से संवाद करते हैं | दो इंटरैक्टिव एलिमेंट्स जिनमें बुनियादी इवेंट संचार है | एक एलिमेंट ईवेंट्स या बुनियादी इंटरैक्शन पर प्रतिक्रिया देता है |
| कोड गुणवत्ता | साफ-सुथरा, अच्छी तरह टिप्पणी किया गया कोड जिसमें तार्किक संगठन और आधुनिक जावास्क्रिप्ट है | सामान्यतः सुव्यवस्थित कोड जिसमें पर्याप्त टिप्पणियाँ हैं | कोड काम करता है लेकिन संगठन या स्पष्ट टिप्पणियों का अभाव है |
बोनस अंक:
- रचनात्मक गेम मैकेनिक्स जो पैटर्न के रोचक उपयोग को दर्शाते हैं
- कई इनपुट विधियाँ (कीबोर्ड और माउस दोनों ईवेंट्स)
- विस्तार योग्य वास्तुकला जिसे नए फीचर्स के साथ आसानी से बढ़ाया जा सके
अस्वीकरण: यह दस्तावेज़ AI अनुवाद सेवा Co-op Translator का उपयोग करके अनूदित किया गया है। हम सटीकता के लिए प्रयासरत हैं, लेकिन कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियाँ या गलतियां हो सकती हैं। मूल दस्तावेज़ अपनी मूल भाषा में प्रामाणिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सलाह दी जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं।