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