# បង្កើតហ្គេមគំរូមួយ ## រូបមន្តការងារ ឥឡូវនេះអ្នកបានឆ្លើយតបទៅនឹងលក្ខខ័ណ្ឌបញ្ចប់ហ្គេម និងមុខងារចាប់ផ្ដើមឡើងវិញក្នុងហ្គេមអាកាសរបស់អ្នករួចហើយ វានៅពេលដើម្បីអនុវត្តគំនិតទាំងនេះទៅនឹងបទពិសោធន៍ហ្គេមថ្មីមួយ។ អ្នកនឹងរចនានិងបង្កើតហ្គេមផ្ទាល់ខ្លួនរបស់អ្នកដែលបង្ហាញពីទំរង់លក្ខខ័ណ្ឌបញ្ចប់ផ្សេងៗ និងគ្រប់គ្រងចាប់ផ្ដើមឡើងវិញ។ ការងារនេះបង្ហាញឲ្យអ្នកគិតដោយច្នៃប្រឌិតអំពីការរចនាហ្គេម ខណៈដែលហ្វឹកហាត់ជំនាញបច្ចេកទេសដែលអ្នកបានរៀន។ អ្នកនឹងស្វែងយល់ពីស្ថានការណ៍ជ័យជំនះ និងការបរាជ័យផ្សេងៗ អនុវត្តន៍ការរីកចម្រើនរបស់អ្នកលេង និងបង្កើតបទពិសោធន៍ចាប់ផ្ដើមឡើងវិញដ៏ទាក់ទាញ។ ## តម្រូវការប្រព្រឹត្តិ ### លក្ខណៈសម្បត្តិមូលដ្ឋានរបស់ហ្គេម ហ្គេមរបស់អ្នកត្រូវមានធាតុដែលចាំបាច់ដូចតទៅ៖ **ចំបាំងលក្ខខ័ណ្ឌបញ្ចប់**៖ អនុវត្តយ៉ាងតិចពីរបៀបទាំងអស់ដែលហ្គេមអាចបញ្ចប់បាន៖ - **ជ័យជំនះដោយពិន្ទុ**៖ អ្នកលេងឈានដល់ពិន្ទុខលើកំណត់ ឬប្រមូលធាតុជាក់លាក់ - **បរាជ័យដោយជីវិត**៖ អ្នកលេងបាត់បង់ជីវិត ឬចំនួនសុខភាពទាំងអស់ - **បញ្ចប់បេសកកម្ម**៖ សម្លាប់សត្រូវទាំងអស់ ប្រមូលធាតុជាក់លាក់ ឬសម្រេចគោលបំណង - **ពេលវេលាកំណត់**៖ ហ្គេមបញ្ចប់បន្ទាប់ពីរយៈពេល កំណត់ឬរាប់ថយដល់សូន្យ **មុខងារចាប់ផ្ដើមឡើងវិញ**៖ - **សម្អាតស្ថានភាពហ្គេម**៖ លុបវត្ថុហ្គេមមុនទាំងអស់ និងកំណត់តម្លៃអថេរ - **ចាប់ផ្ដើមឡើងវិញប្រព័ន្ធ**៖ ចាប់ផ្ដើមឡើងវិញជាមួយស្ថិតិសម្រាប់អ្នកលេង សត្រូវ និងបេសកកម្មថ្មី - **គ្រប់គ្រងងាយស្រួលសម្រាប់អ្នកប្រើ**៖ ផ្តល់ជូននូវសេចក្ដីណែនាំច្បាស់លាស់សម្រាប់ចាប់ផ្ដើមឡើងវិញហ្គេម **មតិប្រតិកម្មពីអ្នកលេង**៖ - **សារ​ជ័យ​ជំនះ**៖ អបអរសាទរជោគជ័យអ្នកលេងដោយមតិយោបល់វិជ្ជមាន - **សារ​បរាជ័យ**៖ ផ្តល់សារចំរូងចំរាសដែលបង្កើនការចាប់ផ្តើមឡើងវិញ - **សង្ខេបជំហាន**៖ បង្ហាញពិន្ទុ បរិមាណជីវិត ឬស្ថានភាពបេសកកម្មបច្ចុប្បន្ន ### គំនិតហ្គេម និងការបង្កើតចិត្ត​ប្រហែល ជ្រើសរើសពីគំនិតហ្គេមទាំងនេះ ឬបង្កើតមួយជាផ្ទាល់៖ #### ១. ហ្គេមការផ្សងព្រេងតាមកុងសូល បង្កើតហ្គេមការផ្សងព្រេងផ្អែកលើអត្ថបទជាមួយប្រព័ន្ធប្រយុទ្ធ៖ ``` Hero> Strikes with broadsword - orc takes 3p damage Orc> Hits with club - hero takes 2p damage Hero> Kicks - orc takes 1p damage Game> Orc is defeated - Hero collects 2 coins Game> ****No more monsters, you have conquered the evil fortress**** ``` **លក្ខណៈសំខាន់ដែលត្រូវអនុវត្ត**៖ - **ប្រយុទ្ធតាមលំដាប់ជុំ** ជាមួយជម្រើសប្រយុទ្ធប្លែកៗ - **ចំនួនសុខភាព** សម្រាប់អ្នកលេង និងសត្រូវ - **ប្រព័ន្ធស្តុកទំនិញ** សម្រាប់ប្រមូលកាក់ ឬធាតុ - **ប្រភេទសត្រូវច្រើន** មានកម្រិតគ្រប់គ្រាន់និងលំបាកខុសគ្នា - **លក្ខណៈជ័យជំនះ** ពេលសម្លាប់សត្រូវទាំងអស់បានជោគជ័យ #### ២. ហ្គេមប្រមូល - **គោលបំណង**៖ ប្រមូលធាតុជាក់លាក់ ខណៈជៀសវាងឧបសគ្គ - **លក្ខខ័ណ្ឌបញ្ចប់**៖ ឈានដល់ចំនួនប្រមូលឬបាត់បង់ជីវិតទាំងអស់ - **ការរីកចម្រើន**៖ ធាតុពិបាកទទួលបានបន្ថែមឡើងទៅពេលហ្គេមដំណើរការ #### ៣. ហ្គេមផាស់ខ្សែ - **គោលបំណង**៖ ដោះស្រាយបញ្ហាពិបាកកាន់តែលំបាក - **លក្ខខ័ណ្ឌបញ្ចប់**៖ បញ្ចប់លំដាប់ទាំងអស់ឬឆ្ងាយច្បាស់ពីចលនាឬពេលវេលា - **ចាប់ផ្ដើមឡើងវិញ**៖ កំណត់ឡើងវិញទៅលំដាប់ទីមួយជាមួយការសម្អាតជំហាន #### ៤. ហ្គេមការពារ - **គោលបំណង**៖ ការពារយកមូលដ្ឋានពីរលំនាំសត្រូវ - **លក្ខខ័ណ្ឌបញ្ចប់**៖ រស់រានមានជីវិតនៅរលំនាំទាំងអស់ (ជ័យជំនះ) ឬមូលដ្ឋានបំផ្លាញ (បរាជ័យ) - **ការរីកចម្រើន**៖ រលំនាំសត្រូវមានកម្រិតលំបាក និងចំនួនកើនឡើង ## មគ្គុទេសក៍អនុវត្តន៍ ### ការចាប់ផ្ដើម 1. **គ្រោងការរចនាហ្គេម**៖ - គំនូរស្ទាត់ចុះនូវរងចង្វាក់លំហាត់ហ្គេមមូលដ្ឋាន - កំណត់លក្ខខ័ណ្ឌបញ្ចប់ឲ្យច្បាស់ - បញ្ជាក់ទិន្នន័យដែលត្រូវបំលែងនៅពេលចាប់ផ្ដើមឡើងវិញ 2. **រៀបចំរចនាសម្ព័ន្ធគម្រោង**៖ ``` my-game/ ├── index.html ├── style.css ├── game.js └── README.md ``` 3. **បង្កើតរងចង្វាក់ហ្គេមមូលដ្ឋាន**៖ - កំណត់ស្ថានភាពហ្គេម - គ្រប់គ្រងការបញ្ចូលពីអ្នកប្រើ - បច្ចុប្បន្នភាពលូហ្គិចហ្គេម - ពិនិត្យលក្ខខ័ណ្ឌបញ្ចប់ - បង្ហាញស្ថានភាពបច្ចុប្បន្ន ### តម្រូវការបច្ចេកទេស **ប្រើ JavaScript ទាន់សម័យ**៖ - ប្រើ `const` និង `let` សម្រាប់ការប្រកាសអថេរ - ប្រើ arrow functions ដែលសមរម្យ - អនុវត្តលក្ខណៈ ES6+ ដូចជារបៀបសរសេរសរសេរពាក្យប្លង់ និងផ្ទុកអថេរ **ស្ថាបត្យកម្មបើកបរ​ដោយព្រឹត្តិការណ៍**៖ - បង្កើតអ្នកដំណើរការព្រឹត្តិការណ៍សម្រាប់អន្តរកម្មអ្នកប្រើ - អនុវត្តការផ្លាស់ប្តូរស្ថានភាពហ្គេមតាមព្រឹត្តិការណ៍ - ប្រើនរណាម្នាក់ស្តាប់ព្រឹត្តិការណ៍សម្រាប់មុខងារចាប់ផ្ដើមឡើងវិញ **អនុវត្តទំនៀមទំលាប់កូដស្អាត**៖ - សរសេរតែម្ដងងាយយល់មុខងារ - ប្រើឈ្មោះអថេរនិងមុខងារដែលពិពណ៌នាបានច្បាស់ - រួមបញ្ចូលមតិយោបល់ពន្យល់លទ្ធផលនិងច្បាប់ហ្គេម - រៀបចំកូដជាផ្នែកមានរបៀប ## តម្រូវការដាក់ស្នើ ### ឯកសារដឹកនាំ 1. **ឯកសារហ្គេមពេញលេញ**៖ នេះរួមមានឯកសារ HTML, CSS និង JavaScript ទាំងអស់ដែលចាំបាច់ដើម្បីដំណើរការហ្គេម 2. **README.md**៖ ឯកសារពិពណ៌នាអំពី៖ - របៀបលេងហ្គេម - លក្ខណៈបញ្ចប់ដែលបានអនុវត្ត - សេចក្ដីណែនាំសម្រាប់ចាប់ផ្ដើមឡើងវិញ - មុខងារពិសេស ឬមេកានិចបន្ថែម 3. **មតិពន្យល់កូដ**៖ ពន្យល់ច្បាស់លាស់អំពីលូហ្គិច និងalgorithm ក្នុងហ្គេមរបស់អ្នក ### បញ្ជីពិនិត្យសម្រាប់សាកល្បង មុនដាក់ទៅ សូមធានា​ឲ្យហ្គេមរបស់អ្នក៖ - [ ] **ដំណើរការជោគជ័យដោយគ្មានកំហុស** នៅក្នុងកុងសូលកម្មវិធី - [ ] **អនុវត្តលក្ខខ័ណ្ឌបញ្ចប់ច្រើនប្រភេទ** ដូចបានបញ្ជាក់ - [ ] **ចាប់ផ្ដើមឡើងវិញបានឡើងវិញ** ជាមួយស្ថានភាពស្អាត - [ ] **ផ្តល់មតិច្បាស់លាស់** ទៅអ្នកលេងអំពីស្ថានភាពហ្គេម - [ ] **ប្រើ JavaScript ទាន់សម័យ** និងការអនុវត្តល្អបំផុត - [ ] **មានឯកសារពេញលេញ** ក្នុង README.md ## វិធីវាយតម្លៃ | ការវាយតម្លៃ | ល្អឥតខ្ចោះ (4) | អាចទទួលយកបាន (3) | កំពុងអភិវឌ្ឍ (2) | ចាប់ផ្ដើម (1) | |--------------|------------------|----------------------|-------------------|---------------| | **មុខងារហ្គេម** | ហ្គេមពេញលេញមានលក្ខខណ្ឌបញ្ចប់ច្រើន ចាប់ផ្ដើមឡើងវិញរលូន និងបទពិសោធន៍លេងល្អ | ហ្គេមពេញលេញ មានលក្ខខណ្ឌបញ្ចប់មូលដ្ឋាននិងមុខងារចាប់ផ្ដើមឡើងវិញប្រើបាន | ហ្គេមមួយផ្នែក អនុវត្តលក្ខខណ្ឌបញ្ចប់ខ្លះៗ ចាប់ផ្ដើមឡើងវិញមានបញ្ហាខ្នាតតូច | ហ្គេមមិនពេញលេញមុខងារកំណត់ និងមានកំហុសធំ | | **គុណភាពកូដ** | កូដស្អាត រៀបចំបានល្អ ប្រើ JavaScript ថ្មីៗ មានមតិយោបល់ពេញលេញ និងរចនាសម្ព័ន្ធល្អ | កូដរៀបចំបានល្អ ប្រើសំណុំរូបមន្តថ្មីៗ មតិត្រឹមត្រូវ និងរចនាសម្ព័ន្ធច្បាស់លាស់ | រៀបចំកូដមូលដ្ឋាន ប្រើរូបមន្តបច្ចុប្បន្នខ្លះៗ មតិតិច | រៀបចំកូដមិនបានល្អ សរសេរចាស់ មិនគ្រប់គ្រាន់មតិ និងរចនាសម្ព័ន្ធខ្សោយ | | **បទពិសោធន៍អ្នកប្រើ** | លំហាត់លេងយ៉ាងស្រួល នឹងមានគោលការណ៍ច្បាស់ លទ្ធផលល្អ និងបញ្ចប់/ចាប់ផ្ដើមឡើងវិញទាក់ទាញ | លំហាត់លេងល្អ មានគោលការណ៍ និងមតិយោបល់គ្រប់គ្រាន់ ចាប់ផ្ដើមឡើងវិញប្រើបាន | លំហាត់លេងមូលដ្ឋាន មានគោលការណ៍តិច និងមតិយោបល់កំណត់ | លំហាត់លេងគ្រាន់តែច្របូកច្របល់ គ្មានគោលការណ៍ និងមតិអ្នកប្រើមិនល្អ | | **ការអនុវត្តបច្ចេកទេស** | បង្ហាញជំនាញខ្ពស់ក្នុងការអភិវឌ្ឍហ្គេម ការគ្រប់គ្រងព្រឹត្តិការណ៍ និងស្ថានភាព | បង្ហាញការយល់ដឹងល្អ ក្នុងមូលដ្ឋានហ្គេម និងការអនុវត្តល្អ | យល់ដឹងមូលដ្ឋាន និងអនុវត្តបានត្រឹមត្រូវ | យល់ដឹងកំណត់ និងអនុវត្តខ្សោយ | | **ឯកសារ** | README ពេញលេញ ជាមួយការណែនាំច្បាស់ កូដពន្យល់ល្អ និងបញ្ជាក់ការសាកល្បង | ឯកសារល្អ មានការណែនាំ និងពន្យល់គ្រប់គ្រាន់ | ឯកសារមូលដ្ឋាន មានការណែនាំតិច | ឯកសារខ្វះ ឬមិនមាន | ### កម្រិតពិន្ទុវាយតម្លៃ - **ល្អឥតខ្ចោះ (16-20 ពិន្ទុ)**៖ លើសកំណត់ជាមួយលក្ខណៈច្នៃប្រឌិត និងការអនុវត្តល្អ - **អាចទទួលយកបាន (12-15 ពិន្ទុ)**៖ ตรงตามทุกតម្រូវការជាមួយការអនុវត្តរឹងមាំ - **កំពុងអភិវឌ្ឍ (8-11 ពិន្ទុ)**៖érielตรงភាពត្រូវបានដល់ភាគច្រើន បញ្ហាតិចតួច - **ចាប់ផ្ដើម (4-7 ពិន្ទុ)**៖ ตรงความត្រូវการខ្លះ ប៉ុន្តែតំរូវការនៅឆ្ងាយទៅ ## ឧបករណ៍រៀន​បន្ថែម - [MDN គណបក្សអភិវឌ្ឍហ្គេម](https://developer.mozilla.org/en-US/docs/Games) - [មេរៀនអភិវឌ្ឍហ្គេម JavaScript](https://developer.mozilla.org/en-US/docs/Games/Tutorials) - [ឯកសារ API ក្រឡាចត្រង្គ](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API) - [គោលការណ៍រចនាហ្គេម](https://www.gamasutra.com/blogs/) > 💡 **របៀបពិសេស**៖ ចាប់ផ្ដើមដោយសាមញ្ញ ហើយបន្ថែមលក្ខណៈដោយជំហាន។ ហ្គេមសាមញ្ញដែលបានផ្ដល់ប្រសិទ្ធភាពល្អលើសហ្គេមស្មុគស្មាញដែលមានខុសត្រូវ! --- **ការបដិសេធ**៖ ឯកសារនេះបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ទោះយើងខិតខំនឹងភាពត្រឹមត្រូវ ក៏សូមដឹងថាការបកប្រែដោយស្វ័យប្រវត្តិកម្មអាចមានការខុសឆ្គង ឬភាពមិនត្រឹមត្រូវខ្លះ។ ឯកសារដើមនៅក្នុងភាសាដើមគួរត្រូវបានគេចាត់ទុកជាដើមទិន្នន័យដែលមានសុពលភាព។ សម្រាប់ព័ត៌មានសំខាន់ៗ អ្នកគួរជ្រើសរើសការបកប្រែដោយមនុស្សជំនាញ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំនិងការបកប្រែខុសដែលកើតមានពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។