|
|
# បង្កើតហ្គេមមួយ៖ អនុវត្តគំរូរចនាសម្ព័ន្ធ
|
|
|
|
|
|
## សេចក្តីផ្តើម ឧទាហរណ៍
|
|
|
|
|
|
យកចំណេះដឹងថ្មីរបស់អ្នកអំពីគំរូរចនាសម្ព័ន្ធមកប្រើប្រាស់ដោយបង្កើតគំរូហ្គេមសាមញ្ញមួយ! ការងារនេះនឹងជួយអ្នកហ្វឹកហាត់ទាំងគំរូស្ថាបត្យកម្ម (អាជីពរកស៊ីឬសមាសធាតុ) និងប្រព័ន្ធផ្សព្វផ្សាយ/pubsub ដែលអ្នកបានរៀនក្នុងវគ្គសិក្សា។
|
|
|
|
|
|
## សេចក្តីណែនាំ
|
|
|
|
|
|
បង្កើតតំណាងហ្គេមសាមញ្ញមួយដែលបង្ហាញពីគំរូរចនាសម្ព័ន្ធពីវគ្គនេះ។ ហ្គេមរបស់អ្នកគួរតែអាចដំណើរការ យ៉ាងไรก็ตาม មិនចាំបាច់ខ្លាំងនូវក្រាហ្វិកស្មុគស្មាញទេ — សំខាន់គឺផ្តោតលើស្ថាបត្យកម្មជាគ្រឹះ និងគំរូខ្ទង់ផ្សព្វផ្សាយ។
|
|
|
|
|
|
### តម្រូវការ
|
|
|
|
|
|
**ជ្រើសរើសគំរូស្ថាបត្យកម្មរបស់អ្នក៖**
|
|
|
- **ជម្រើស ក**៖ ប្រើការទាញទារកនៅលើថ្នាក់ (ឧ. `GameObject` → `Movable` → `Hero`)
|
|
|
- **ជម្រើស ខ**៖ ប្រើសមាសធាតុ (ឧ. វិធីសាស្រ្តរោងចក្រជាមួយឥរិយាបថចម្រុះ)
|
|
|
|
|
|
**អនុវត្តការទំនាក់ទំនង៖**
|
|
|
- **រួមបញ្ចូល** ថ្នាក់ `EventEmitter` សម្រាប់សារផ្សព្វផ្សាយ/pubsub
|
|
|
- **រៀបចំ** ប្រភេទសារចំនួនយ៉ាងហោចណាស់ 2-3 (ឧ. `PLAYER_MOVE`, `ENEMY_SPAWN`, `SCORE_UPDATE`)
|
|
|
- **ភ្ជាប់** ការបញ្ចូលអ្នកប្រើ (ក្តារចុច/មណ្ឌលសុីម៉ៅ) ទៅកាន់ព្រឹត្តិការណ៍ហ្គេមតាមរយៈប្រព័ន្ធព្រឹត្តិការណ៍
|
|
|
|
|
|
**ធាតុហ្គេមដែលត្រូវរួមបញ្ចូល៖**
|
|
|
- តួអង្គមួយយ៉ាងហោចណាស់ដែលគ្រប់គ្រងដោយអ្នកលេង
|
|
|
- វត្ថុហ្គេមមួយផ្សេងទៀត (សត្រូវ, វត្ថុប្រមូលបាន, ឬធាតុបរិស្ថាន)
|
|
|
- ការប៉ះទង្គិចមូលដ្ឋានរវាងវត្ថុ (ប៉ះទង្គិច ប្រមូល ឬទំនាក់ទំនង)
|
|
|
|
|
|
### គំនិតហ្គេមសម្រាប់ពិចារណា
|
|
|
|
|
|
**ហ្គេមសាមញ្ញដែលអាចជ្រើសរើស៖**
|
|
|
- **ហ្គេមព្រួញ** – ខ្សែមាត់ប្រតិបត្តិទៅផ្នែកមុខ, អាហារបង្ហាញបៃតងពីចម្ងាយ
|
|
|
- **ការប្រែប្រួល Pong** – ខ្សែប៊ិចឆ្លើយតបនឹងការបញ្ចូល, បាល់ត្រៀមកែតម្រូវលើជញ្ជាំង
|
|
|
- **ហ្គេមប្រមូល** – អ្នកលេងផ្លាស់ទីប្រមូលវត្ថុខណៈរត់គេចខ្លួនពីឧបសគ្គ
|
|
|
- **មូលដ្ឋានការពារកាណូត** – ប្រដាប់បាញ់កាំភ្លើងចាប់ផ្តើមប្រយុទ្ធប្រឆាំងសត្រូវចល័ត
|
|
|
|
|
|
### แนวทางរចនាសម្ព័ន្ធកូដ
|
|
|
|
|
|
```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 ពិន្ទុ) |
|
|
|
|----------|---------------------|---------------------|-----------------------------|
|
|
|
| **គំរូស្ថាបត្យកម្ម** | អនុវត្តត្រឹមត្រូវនៅក្នុងអាជីពរកស៊ី ឬសមាសធាតុជាមួយលំដាប់ថ្នាក់/វត្ថុច្បាស់លាស់ | ប្រើគំរូបាន ប៉ុន្តែមានបញ្ហាពិបាកខ្លះៗ ឬមិនស៊ាំល្អ | ព្យាយាមប្រើគំរូ តែការអនុវត្តមានបញ្ហាសំខាន់ៗ |
|
|
|
| **ប្រព័ន្ធ Pub/Sub** | EventEmitter ដំណើរការបានត្រឹមត្រូវជាមួយប្រភេទសារជាច្រើន និងដំណើរការព្រឹត្តិការណ៍ត្រឹមត្រូវ | ប្រព័ន្ធ pub/sub មូលដ្ឋានដំណើរការបានមានការគ្រប់គ្រងព្រឹត្តិការណ៍ខ្លះៗ | ប្រព័ន្ធព្រឹត្តិការណ៍មាន ប៉ុន្តែមិនដំណើរការបានយកចិត្តទុកដាក់ទេ |
|
|
|
| **មុខងារហ្គេម** | មានធាតុអន្តរកម្មបីឬច្រើនជាង ប្រាស្រ័យទាក់ទងតាមព្រឹត្តិការណ៍ | មានធាតុអន្តរកម្មពីរជាមួយការប្រាស្រ័យទាក់ទងព្រឹត្តិការណ៍មូលដ្ឋាន | មានធាតុមួយឆ្លើយតបនឹងព្រឹត្តិការណ៍ ឬមានអន្តរកម្មមូលដ្ឋាន |
|
|
|
| **គុណភាពកូដ** | កូដស្អាត មានមតិយោបល់ល្អ និងមានរៀបចំត្រឹមត្រូវជាមួយ JavaScript ពេលបច្ចុប្បន្ន | កូដរៀបចំបានល្អជាទូទៅ មានមតិយោបល់គ្រប់គ្រាន់ | កូដដំណើរការ បាន ប៉ុន្តែខ្វះរចនាសម្ព័ន្ធឬមតិយោបល់ច្បាស់លាស់ |
|
|
|
|
|
|
**ពិន្ទុបន្ថែម៖**
|
|
|
- **ប្រព័ន្ធហ្គេមច្នៃប្រឌិត** ដែលបង្ហាញកម្រិតប្រើប្រាស់គំរូអស្ចារ្យ
|
|
|
- **វិធីបញ្ចូលច្រើន** (ទាំងក្តារចុច និងមណ្ឌលសុីម៉ៅ)
|
|
|
- **ស្ថាបត្យកម្មអាចពង្រីកបាន** ដែលងាយស្រួលបន្ថែមមុខងារថ្មីៗ
|
|
|
|
|
|
---
|
|
|
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
|
|
**ការបដិសេធ**៖
|
|
|
ឯកសារនេះត្រូវបានបកប្រែដោយប្រើសេវាកម្មបកប្រែ AI [Co-op Translator](https://github.com/Azure/co-op-translator)។ ខណៈពេលដែលយើងខំប្រឹងប្រែងសម្រាប់ភាពត្រឹមត្រូវ សូមដឹងថាការបកប្រែដោយអូតូម៉ាទិកអាចមានកំហុស ឬការខកខានបាន។ ឯកសារដើមដោយភាសាម្ដុំណឹងគួរត្រូវបានគិតថាជាដើមពិតប្រាកដ។ សម្រាប់ព័ត៌មានសំខាន់ៗ គឺមានការផ្ដល់អនុសាសន៍ឲ្យប្រើការបកប្រែដោយមនុស្សវិជ្ជាជីវៈ។ យើងមិនទទួលខុសត្រូវចំពោះការយល់ច្រឡំ ឬការបកស្រាយខុស ដែលកើតមានពីការប្រើប្រាស់ការបកប្រែនេះឡើយ។
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |