|
|
# ഒരു ഗെയിം മോക്ക് അപ്പ് ചെയ്യുക: ഡിസൈൻ പാറ്റേണുകൾ പ്രയോഗിക്കുക
|
|
|
|
|
|
## അസൈൻമെന്റ് അവലോകനം
|
|
|
|
|
|
ഡിസൈൻ പാറ്റേണുകളിലെ നിങ്ങളുടെ പുതിയ അറിവ് ഉപയോഗിച്ച് ഒരു ലളിതമായ ഗെയിം പ്രോട്ടോട്ടൈപ്പ് സൃഷ്ടിക്കുക! ഈ അസൈൻമെന്റ് വർഗ്ഗതല പാറ്റേണുകളും (ഇനംവരമ്പ് അല്ലെങ്കിൽ ഘടന) നിങ്ങൾ പാഠത്തിൽ പഠിച്ച പബ്ലിഷ്/സബ്സ്ക്രൈബ് (pub/sub) കമ്മ്യൂണിക്കേഷൻ സിസ്റ്റവും പ്രായോഗികമായി അഭ്യാസത്തിന് സഹായിക്കും.
|
|
|
|
|
|
## നിർദ്ദേശങ്ങൾ
|
|
|
|
|
|
ഈ പാഠത്തിൽ നിന്നുള്ള ഡിസൈൻ പാറ്റേണുകൾ പ്രകടിപ്പിക്കുന്ന ലളിതമായ ഒരു ഗെയിം പ്രതിനിധാനം സൃഷ്ടിക്കുക. നിങ്ങളുടെ ഗെയിം പ്രവർത്തനക്ഷമമായിരിക്കണം, എന്നാൽ പരീകൃത ഗ്രാഫിക്കുകൾ ആവശ്യമില്ല – അടിസ്ഥാന ആർക്കിടെക്ചറും കമ്മ്യൂണിക്കേഷൻ പാറ്റേണുകളും നേരത്തെ പ്രത്യേകം ശ്രദ്ധിക്കുക.
|
|
|
|
|
|
### ആവശ്യകതകൾ
|
|
|
|
|
|
**നിങ്ങളുടെ ആർക്കിടെക്ചർ പാറ്റേൺ തിരഞ്ഞെടുക്കുക:**
|
|
|
- **ഓപ്ഷൻ A**: ക്ലാസ്-അധിഷ്ഠിത രൂപത്തിൽ ഇൻഹെറിറ്റൻസ് ഉപയോഗിക്കുക (`GameObject` → `Movable` → `Hero` ഉദാഹരണമായ പോലെ)
|
|
|
- **ഓപ്ഷൻ B**: ഘടന (കമ്പോസിഷൻ) ഉപയോഗിക്കുക (നിരവധി ബിഹേവിയറുകളോടെ ഫാക്ടറി ഫങ്ഷൻ സമീപനം പോലുള്ളത്)
|
|
|
|
|
|
**കമ്മ്യൂണിക്കേഷൻ നടപ്പിലാക്കുക:**
|
|
|
- **`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 പോയിന്റ്) |
|
|
|
|----------|---------------------|---------------------|------------------------------|
|
|
|
| **ആർക്കിടെക്ചർ പാറ്റേൺ** | ഇൻഹെറിറ്റൻസ് അല്ലെങ്കിൽ ഘടന ശരിയായി ക്ലാസ്/ഓബ്ജക്റ്റ് వరിശയിൽ നടപ്പാക്കിയത് | തെരഞ്ഞെടുക്കപ്പെട്ട പാറ്റേൺ ചെറിയ പിശകുകളോടെ പ്രയോഗിച്ചിരിക്കുന്നു | പാറ്റേൺ uporabിക്കാൻ ശ്രമം, എന്നാൽ നടപ്പാക്കലിൽ പ്രധാന വീഴ്ചകൾ ഉള്ളത് |
|
|
|
| **പബ്ലിഷ്/സബ്സ്ക്രൈബ് നടപ്പാക്കൽ** | EventEmitter പരമാവധി മെസ്സേജ് തരംകളോടെ ശരിയായി പ്രവർത്തിക്കുന്നു | അടിസ്ഥാന പബ്ലിഷ/സബ്സ്ക്രൈബ് സിസ്റ്റം ചില ഇവന്റ് കൈകാര്യം ചെയ്യൽ കുഴപ്പങ്ങൾ സഹിതം പ്രവർത്തിക്കുന്നു | ഇവന്റ് സിസ്റ്റം ഉണ്ടായെങ്കിലും വിശ്വസനീയമായി പ്രവർത്തിക്കുന്നില്ല |
|
|
|
| **ഗെയിം പ്രവർത്തനം** | ഇവന്റുകൾ മുഖേന ആശയവിനിമയം നടത്തുന്ന മൂന്നു അല്ലെങ്കിൽ അതിനധികം ഇന്ററാക്ടീവ് ഘടകങ്ങൾ ഉണ്ടാകണം | രണ്ടു ഇന്ററാക്ടീവ് ഘടകങ്ങൾ അടിസ്ഥാന ഇവന്റ് കമ്മ്യൂണിക്കേഷൻ ഉപയോഗിച്ച് | ഒരേയൊന്നും അല്ലെങ്കിൽ അടിസ്ഥാന ഇന്ററാക്ഷൻ വരുന്ന ഘടകം മാത്രം |
|
|
|
| **കോഡ് ഗുണമേന്മ** | നിരാകരണം ലളിതം, മെച്ചപ്പെട്ട കമന്റ് ഉപയോഗം, യുക്തിപരമായ സംഘടന, ആധുനിക ജാവാസ്ക്രിപ്റ്റ് | പൊതുവിൽ വിശിഷ്ടമായ കോഡ് കമന്റുകളില്ലാതെയെങ്കിലും നന്നായി ക്രമീകരിച്ചിരിക്കുന്നു | കോഡ് പ്രവർത്തിക്കുന്നെങ്കിലും സംഘാടനവും കമന്റിംഗും അഭാവം കാണിക്കുന്നു |
|
|
|
|
|
|
**ബോണസ് പോയിന്റുകൾ:**
|
|
|
- പാറ്റേണുകൾ രസകരമായി പ്രയോഗിക്കുന്ന സൃഷ്ടിപരമായ ഗെയിം മെക്കാനിക്സ്
|
|
|
- അടക്കം അനേകം ഇൻപുട്ട് രീതികൾ (കീബോർഡും മൗസും)
|
|
|
- പുതിയ ഫീച്ചറുകളുമായി വിപുലീകരിക്കാൻ എളുപ്പമുള്ള സ്കേബിൾ ആർക്കിടെക്ചർ
|
|
|
|
|
|
---
|
|
|
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
|
|
**വ്യക്തിഗത നഷ്ടപരിഹാരം**:
|
|
|
ഈ ഡോക്യുമെന്റ് എഐ തർജ്ജമാ സേവനം [Co-op Translator](https://github.com/Azure/co-op-translator) ഉപയോഗിച്ച് പരിഭാഷപ്പെടുത്തിയതാണ്. ഞങ്ങൾ കൃത്യത നിലനിർത്താൻ ശ്രമിച്ചിട്ടുണ്ടെങ്കിലും, അതോത്യന്തം ശരിയായതിന് പകരം ഓട്ടോമാറ്റഡ് തർജ്ജമകളിൽ തെറ്റുകൾ ഉണ്ടായേക്കാം. സകല അവകാശവും ഉദ്ദേശിച്ച ഭാഷയിലുള്ള ആദിമ ഡോക്യുമെന്റ് യഥാർത്ഥ സൂത്രധാരമായി കാണപ്പെടണം. നിർണായക വിവരങ്ങൾക്കായി പ്രൊഫഷണൽ മനുഷ്യ തർജ്ജമ നടപ്പിലാക്കാനുള്ള ശുപാർശ ഉണ്ട്. ഈ തർജ്ജമ ഉപയോഗിച്ചതിലൂടെ ഉണ്ടാകാവുന്ന ഏതൊരു തെറ്റായ ധാരണയ്ക്കോ അവബോധക്കേടിനോ ഞങ്ങൾ ഉത്തരവാദ órgãoളല്ല.
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |