11 KiB
खेलको नमुना: डिजाइन ढाँचाहरू लागू गर्नुहोस्
असाइनमेन्टको अवलोकन
डिजाइन ढाँचाहरूको नयाँ ज्ञानलाई प्रयोग गरेर एउटा साधारण खेलको प्रोटोटाइप बनाउनुहोस्! यो असाइनमेन्टले तपाईंलाई आर्किटेक्चरल ढाँचाहरू (इनहेरिटेन्स वा कम्पोजिसन) र पाठमा सिकाइएको पब/सब कम्युनिकेशन प्रणाली अभ्यास गर्न मद्दत गर्नेछ।
निर्देशनहरू
पाठबाट डिजाइन ढाँचाहरू प्रदर्शन गर्ने एउटा साधारण खेलको प्रतिनिधित्व बनाउनुहोस्। तपाईंको खेल कार्यात्मक हुनुपर्छ तर जटिल ग्राफिक्स आवश्यक छैन \u2013 आधारभूत आर्किटेक्चर र कम्युनिकेशन ढाँचामा ध्यान दिनुहोस्।
आवश्यकताहरू
आफ्नो आर्किटेक्चर ढाँचा चयन गर्नुहोस्:
- विकल्प A: क्लास-आधारित इनहेरिटेन्स प्रयोग गर्नुहोस् (जस्तै
GameObject→Movable→Heroउदाहरण) - विकल्प B: कम्पोजिसन प्रयोग गर्नुहोस् (जस्तै मिक्स्ड बिहेभियर्सको साथ फ्याक्टरी फङ्सन दृष्टिकोण)
कम्युनिकेशन कार्यान्वयन गर्नुहोस्:
- समावेश गर्नुहोस्
EventEmitterक्लास पब/सब मेसेजिङका लागि - सेट अप गर्नुहोस् कम्तीमा २-३ विभिन्न मेसेज प्रकारहरू (जस्तै
PLAYER_MOVE,ENEMY_SPAWN,SCORE_UPDATE) - जोड्नुहोस् प्रयोगकर्ता इनपुट (किबोर्ड/माउस) खेल घटनाहरूमा इभेन्ट प्रणाली मार्फत
खेलका तत्वहरू समावेश गर्नुहोस्:
- कम्तीमा एक खेलाडी-नियन्त्रित पात्र
- कम्तीमा एक अन्य खेल वस्तु (शत्रु, सङ्कलनयोग्य वस्तु, वा वातावरणीय तत्व)
- वस्तुहरू बीचको आधारभूत अन्तरक्रिया (टक्कर, सङ्कलन, वा कम्युनिकेशन)
सुझाइएको खेलका विचारहरू
साधारण खेलहरू विचार गर्न:
- स्नेक खेल \u2013 सर्पका खण्डहरू टाउकोको पछि लाग्छन्, खाना अनियमित रूपमा उत्पन्न हुन्छ
- पङ्ग भेरिएसन \u2013 पेडल इनपुटमा प्रतिक्रिया दिन्छ, बल पर्खालबाट फर्किन्छ
- सङ्कलन खेल \u2013 खेलाडी वस्तुहरू सङ्कलन गर्दै बाधाहरूबाट बच्दै हिँड्छ
- टावर डिफेन्स आधारभूत \u2013 टावरहरूले चलिरहेका शत्रुहरूलाई पत्ता लगाउँछन् र तिनीहरूलाई प्रहार गर्छन्
कोड संरचना दिशानिर्देशहरू
// Example starting structure
const Messages = {
// Define your game messages here
};
class EventEmitter {
// Your event system implementation
}
// Choose either class-based OR composition approach
// Class-based example:
class GameObject { /* base properties */ }
class Player extends GameObject { /* player-specific behavior */ }
// OR Composition example:
const gameObject = { /* base properties */ };
const movable = { /* movement behavior */ };
function createPlayer() { /* combine behaviors */ }
आफ्नो कार्यान्वयन परीक्षण गर्नुहोस्
तपाईंको कोड काम गर्छ भनेर पुष्टि गर्नुहोस्:
- परीक्षण गर्नुहोस् कि वस्तुहरू घटनाहरू ट्रिगर हुँदा सर्छन् वा परिवर्तन हुन्छन्
- पुष्टि गर्नुहोस् कि धेरै वस्तुहरू एउटै घटनामा प्रतिक्रिया दिन सक्छन्
- जाँच गर्नुहोस् कि नयाँ बिहेभियर्स थप्न सकिन्छ बिना मौजुदा कोड परिवर्तन नगरी
- सुनिश्चित गर्नुहोस् कि किबोर्ड/माउस इनपुटले खेल घटनाहरू ठीकसँग ट्रिगर गर्छ
सबमिशन दिशानिर्देशहरू
तपाईंको सबमिशनमा समावेश हुनुपर्छ:
- जाभास्क्रिप्ट फाइल(हरू) तपाईंको खेल कार्यान्वयनको साथ
- HTML फाइल खेल चलाउन र परीक्षण गर्न (साधारण हुन सक्छ)
- टिप्पणीहरू कुन ढाँचा चयन गरियो र किन भनेर व्याख्या गर्दै
- संक्षिप्त दस्तावेजीकरण तपाईंको मेसेज प्रकारहरू र तिनीहरूले के गर्छन्
मूल्याङ्कन मापदण्ड
| मापदण्ड | उत्कृष्ट (३ अंक) | पर्याप्त (२ अंक) | सुधार आवश्यक (१ अंक) |
|---|---|---|---|
| आर्किटेक्चर ढाँचा | इनहेरिटेन्स वा कम्पोजिसन सही रूपमा कार्यान्वयन गरिएको छ र स्पष्ट क्लास/वस्तु संरचना छ | चयन गरिएको ढाँचा सानो समस्या वा असंगततासहित प्रयोग गरिएको छ | ढाँचा प्रयोग गर्ने प्रयास गरिएको छ तर कार्यान्वयनमा महत्त्वपूर्ण समस्या छ |
| पब/सब कार्यान्वयन | EventEmitter सही रूपमा काम गर्छ विभिन्न मेसेज प्रकारहरू र उचित इभेन्ट फ्लोको साथ | आधारभूत पब/सब प्रणाली काम गर्छ केही इभेन्ट ह्यान्डलिङको साथ | इभेन्ट प्रणाली उपस्थित छ तर विश्वसनीय रूपमा काम गर्दैन |
| खेल कार्यक्षमता | तीन वा बढी अन्तरक्रियात्मक तत्वहरू छन् जो घटनाहरू मार्फत कम्युनिकेशन गर्छन् | दुई अन्तरक्रियात्मक तत्वहरू छन् आधारभूत इभेन्ट कम्युनिकेशनको साथ | एक तत्व घटनाहरूमा प्रतिक्रिया दिन्छ वा आधारभूत अन्तरक्रिया |
| कोडको गुणस्तर | सफा, राम्रोसँग टिप्पणी गरिएको कोड तार्किक संगठन र आधुनिक जाभास्क्रिप्टको साथ | सामान्यतया राम्रोसँग संगठित कोड पर्याप्त टिप्पणीहरूको साथ | कोड काम गर्छ तर संगठन वा स्पष्ट टिप्पणीको अभाव छ |
बोनस अंकहरू:
- रचनात्मक खेल यान्त्रिकी जसले ढाँचाहरूको रोचक प्रयोग प्रदर्शन गर्छ
- धेरै इनपुट विधिहरू (किबोर्ड र माउस घटनाहरू)
- स्केलेबल आर्किटेक्चर जसलाई नयाँ सुविधाहरूको साथ विस्तार गर्न सजिलो हुनेछ
अस्वीकरण:
यो दस्तावेज़ AI अनुवाद सेवा Co-op Translator प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादहरूमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषामा रहेको दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुनेछैनौं।