# గేమ్‌ను మాక్ అప్ చేయండి: డిజైన్ ప్యాటరన్లు అప్లై చేయండి ## అసైన్‌మెంట్ సమీక్ష డిజైన్ ప్యాటరన్లపై మీ కొత్త జ్ఞానాన్ని ఉపయోగించి ఒక సింపుల్ గేమ్ ప్రొటోటైప్ సృష్టించండి! ఈ అసైన్‌మెంట్ మీరు ఆర్కిటెక్చరల్ ప్యాటరన్లు (ఇన్హెరిటెన్స్ లేదా కంపోజిషన్) మరియు లెషన్‌లో నేర్చుకున్న పబ్/సబ్ కమ్యూనికేషన్ సిస్టమ్‌ను ప్రాక్టీస్ చేయడంలో సహాయపడుతుంది. ## సూచనలు ఈ లెషన్‌లో ఉన్న డిజైన్ ప్యాటరన్లను ప్రదర్శించే ఒక సింపుల్ గేమ్ ప్రాతినిధ్యం సృష్టించండి. మీ గేమ్ ఫంక్షనల్‌గా ఉండాలి కానీ క్లిష్టమైన గ్రాఫిక్స్ అవసరం లేదు – క్రింద ఉన్న ఆర్కిటెక్చర్ మరియు కమ్యూనికేషన్ ప్యాటరన్లపై దృష్టి పెట్టండి. ### అవసరాలు **మీ ఆర్కిటెక్చర్ ప్యాటరన్ ఎంచుకోండి:** - **ఎంపిక ఏ**: క్లాస్-ఆధారిత ఇన్హెరిటెన్స్ ఉపయోగించండి (ఉదాహరణకు `GameObject` → `Movable` → `Hero` మాదిరి) - **ఎంపిక బి**: కంపోజిషన్ ఉపయోగించండి (ఫ్యాక్టరీ ఫంక్షన్ విధానంతో మిక్స్ చేసిన ప్రవర్తనల మాదిరి) **కమ్యూనికేషన్ అమలు చేయండి:** - **రాబట్టండి** `EventEmitter` క్లాస్ పబ్/సబ్ మెసేజింగ్ కోసం - **సెట్ చేయండి** కనీసం 2-3 వేర్వేరు మెసేజ్ రకాలును (ఉదా: `PLAYER_MOVE`, `ENEMY_SPAWN`, `SCORE_UPDATE`) - **కనెక్ట్ చేయండి** యూజర్ ఇన్‌పుట్ (కీబోర్డ్/మౌస్) ను గేమ్ ఈవెంట్లతో ఈవెంట్ సిస్టమ్ ద్వారా **గేమ్ అంశాలు చేర్చండి:** - కనీసంగా ఒక ప్లేయర్ నియంత్రిత క్యారెక్టర్ - కనీసం ఒకటి మరొక గేమ్ ఆబ్జెక్ట్ (ఎనమీ, సేకరించే వస్తువు లేదా పరిసర అంశం) - ఆబ్జెక్టుల మధ్య ప్రాథమిక ఇంటరాక్షన్ (కొలిజన్, సేకరణ, లేదా కమ్యూనికేషన్) ### సూచించిన గేమ్ ఆలోచనలు **పరిగణించదగిన సింపుల్ గేమ్స్:** - **స్నేక్ గేమ్** – స్నేక్ సెగ్మెంట్లు తల‌ను అనుసరిస్తాయి, ఆహారం యాదృచ్ఛికంగా స్పాన్ అవుతుంది - **పాంగ్ వెరియేషన్** – ప్యాడిల్ ఇన్‌పుట్‌కు స్పందిస్తుంది, బంతి గోడలకు తగిలి తిరుగుతుంది - **కలెక్టర్ గేమ్** – ప్లేయర్ వస్తువులను సేకరించే సమయంలో అడ్డంకులను తప్పుకుంటూ మళ్ళిశీలిస్తాడు - **టవర్ డిఫెన్స్ బేసిక్స్** – టవర్లు పొడవుగా నడిచే శత్రువులను గుర్తించి వాటిపై షూట్ చేస్తాయి ### కోడ్ నిర్మాణ మార్గదర్శకాలు ```javascript // ఉదాహరణ ప్రారంభ నిర్మాణం 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 */ } ``` ### మీ అమలును పరీక్షించడం **మీ కోడ్ పనిచేస్తుందా అని సరిచూడండి:** - **ఫలితంగా** ఆబ్జెక్టులు ఈవెంట్లు ట్రిగ్గర్ అయినప్పుడు కదిలితే లేదా మారితే - **పట్టుకుని ఉండు** ఒకే ఈవెంట్‌కు అనేక ఆబ్జెక్టులు స్పందిస్తాయేమో - **తీయండి** మీరు కొత్త ప్రవర్తనలు చేర్చడంలో ప్రస్తుతం ఉన్న కోడ్ మార్చాల్సిన అవసరం లేకుండా చేయగలుగుతారు - **ఖచ్చితంగా చూసుకోండి** మీ కీబోర్డ్/మౌస్ ఇన్‌పుట్ గేమ్ ఈవెంట్లను సరికొత్తగా ట్రిగ్గర్ చేస్తుందని ## సమర్పణ మార్గదర్శకాలు **మీ సమర్పణలో ఉండాలి:** 1. **JavaScript ఫైల్(లు)** మీ గేమ్ అమలుతో 2. **HTML ఫైల్** మీ గేమ్‌ని రన్ చేసి పరీక్షించడానికి (సింపుల్ కావచ్చు) 3. **వ్యాఖ్యలు** మీరు ఎంచుకున్న ప్యాటరన్ ఏది మరియు ఎందుకు ఎంచుకున్నారో వివరిస్తూ 4. **సంక్షిప్త డాక్యుమెంటేషన్** మీ మెసేజ్ రకాల గురించి మరియు అవి ఏవీ చేస్తాయో ## రూబ్రిక్ | ప్రమాణం | ఉదాత్తమైనది (3 పాయింట్లు) | సరైనది (2 పాయింట్లు) | మెరుగుపరచాల్సినదే (1 పాయింట్) | |----------|---------------------|---------------------|------------------------------| | **ఆర్కిటెక్చర్ ప్యాటరన్** | ఇన్హెరిటెన్స్ లేదా కంపోజిషన్ లో సరైన క్లాస్/ఆబ్జెక్ట్ హైరార్కీ తో అమలు | ఎంచుకున్న ప్యాటర్న్ ను సన్న jooksలతో ఉపయోగిస్తుంది | ప్యాటర్న్ వాడదలచిన ప్రయత్నం కానీ అమలులో పెద్ద సమస్యలు ఉన్నాయి | | **పబ్/సబ్ అమలు** | EventEmitter సరిగ్గా మల్టిపుల్ మెసేజ్ రకాలతో మరియు సరైన ఈవెంట్ ఫ్లో తో పనిచేస్తుంది | ప్రాథమిక పబ్/సబ్ సిస్టమ్ కొంత ఈవెంట్ హ్యాండ్లింగ్ తో పనిచేస్తుంది | ఈవెంట్ సిస్టమ్ ఉంది కానీ విశ్వసనీయంగా పనిచేయదు | | **గేమ్ ఫంక్షనాలిటీ** | ఈవెంట్ల ద్వారా కమ్యూనికేట్ చేసే మూడు లేదా అంతకు మించి ఇంటరాక్టివ్ అంశాలు | రెండు ఇంటరాక్టివ్ అంశాలు ప్రాథమిక ఈవెంట్ కమ్యూనికేషన్ తో | ఒక అంశం ఈవెంట్లకు స్పందిస్తుంది లేదా ప్రాథమిక ఇంటరాక్షన్ ఉంది | | **కోడ్ నాణ్యత** | పరిశుభ్రమైన, బాగుగా వ్యాఖ్యానించిన కోడ్ లాజికల్ ఆర్గనైజేషన్ తో తాజా JavaScript ఉపయోగించి | సాధారణంగా బాగున్న కోడ్ సరైన వ్యాఖ్యలతో | కోడ్ పనిచేస్తుంది కానీ ఆర్గనైజేషన్ లేదా స్పష్టమైన వ్యాఖ్యలు లేవు | **బోనస్ పాయింట్లు:** - **సృజనాత్మక గేమ్ యంత్రాంగాలు** ప్యాటరన్ల ఆసక్తికరమైన ఉపయోగాలను ప్రదర్శించేవి - **అనేక ఇన్‌పుట్ విధానాలు** (కీబోర్డ్ మరియు మౌస్ ఈవెంట్లు) - **విస్తరించదగిన ఆర్కిటెక్చర్** దీని ద్వారా కొత్త ఫీచర్లను సులభంగా జోడించవచ్చు --- **అస్పష్టత**: ఈ పత్రాన్ని AI అనువాద సేవ అయిన [Co-op Translator](https://github.com/Azure/co-op-translator) ఉపయోగించి అనువదించాము. మనం సరిచూడటానికి ప్రయత్నిస్తే కూడా, ఆటోమేటెడ్ అనువాదాల్లో పాపదోషాలు లేదా తప్పులుంటే ఉండొచ్చు. అసలు పత్రం అసలు భాషలో ఉన్నది అధికారిక వనరు గా పరిగణించాలి. కీలక సమాచారం కోసం, ప్రొఫెషనల్ మానవ అనువాదాన్ని సిఫారసు చేస్తాము. ఈ అనువాదం వలన సంఘటనలైన ఎలాంటి అపార్థాలు లేదా తప్పుదోపిడుల బాధ్యత మేము తీసుకోవము.