You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
171 lines
19 KiB
171 lines
19 KiB
<!--
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
{
|
|
"original_hash": "232d592791465c1678cab3a2bb6cd3e8",
|
|
"translation_date": "2025-10-23T21:19:25+00:00",
|
|
"source_file": "6-space-game/6-end-condition/assignment.md",
|
|
"language_code": "th"
|
|
}
|
|
-->
|
|
# สร้างเกมตัวอย่าง
|
|
|
|
## ภาพรวมของงาน
|
|
|
|
เมื่อคุณเข้าใจเงื่อนไขการจบเกมและฟังก์ชันการเริ่มใหม่ในเกมอวกาศของคุณแล้ว ถึงเวลานำแนวคิดเหล่านี้ไปใช้กับประสบการณ์การเล่นเกมใหม่ทั้งหมด คุณจะออกแบบและสร้างเกมของคุณเองที่แสดงรูปแบบเงื่อนไขการจบเกมและกลไกการเริ่มใหม่ที่แตกต่างกัน
|
|
|
|
งานนี้ท้าทายให้คุณคิดสร้างสรรค์เกี่ยวกับการออกแบบเกม พร้อมกับฝึกฝนทักษะทางเทคนิคที่คุณได้เรียนรู้ คุณจะได้สำรวจสถานการณ์การชนะและแพ้ที่แตกต่างกัน ดำเนินการพัฒนาผู้เล่น และสร้างประสบการณ์การเริ่มใหม่ที่น่าสนใจ
|
|
|
|
## ข้อกำหนดของโปรเจกต์
|
|
|
|
### คุณสมบัติหลักของเกม
|
|
|
|
เกมของคุณต้องมีองค์ประกอบสำคัญดังต่อไปนี้:
|
|
|
|
**ความหลากหลายของเงื่อนไขการจบเกม**: ดำเนินการอย่างน้อยสองวิธีที่เกมสามารถจบได้:
|
|
- **ชัยชนะตามคะแนน**: ผู้เล่นถึงคะแนนเป้าหมายหรือเก็บไอเท็มเฉพาะ
|
|
- **ความพ่ายแพ้ตามชีวิต**: ผู้เล่นสูญเสียชีวิตหรือคะแนนสุขภาพทั้งหมด
|
|
- **การบรรลุเป้าหมาย**: กำจัดศัตรูทั้งหมด เก็บไอเท็มเฉพาะ หรือบรรลุเป้าหมาย
|
|
- **ตามเวลา**: เกมจบหลังจากระยะเวลาที่กำหนดหรือเมื่อการนับถอยหลังถึงศูนย์
|
|
|
|
**ฟังก์ชันการเริ่มใหม่**:
|
|
- **ล้างสถานะเกม**: ลบวัตถุเกมก่อนหน้าและรีเซ็ตตัวแปรทั้งหมด
|
|
- **เริ่มระบบใหม่**: เริ่มต้นใหม่ด้วยสถิติผู้เล่น ศัตรู และเป้าหมายใหม่
|
|
- **การควบคุมที่ใช้งานง่าย**: ให้คำแนะนำที่ชัดเจนสำหรับการเริ่มเกมใหม่
|
|
|
|
**การตอบสนองของผู้เล่น**:
|
|
- **ข้อความชัยชนะ**: ฉลองความสำเร็จของผู้เล่นด้วยข้อความเชิงบวก
|
|
- **ข้อความความพ่ายแพ้**: ให้ข้อความที่สร้างแรงบันดาลใจเพื่อกระตุ้นให้เล่นใหม่
|
|
- **ตัวบ่งชี้ความก้าวหน้า**: แสดงคะแนนปัจจุบัน ชีวิต หรือสถานะเป้าหมาย
|
|
|
|
### ไอเดียเกมและแรงบันดาลใจ
|
|
|
|
เลือกหนึ่งในแนวคิดเกมเหล่านี้หรือสร้างเกมของคุณเอง:
|
|
|
|
#### 1. เกมผจญภัยในคอนโซล
|
|
สร้างเกมผจญภัยแบบข้อความพร้อมกลไกการต่อสู้:
|
|
|
|
```
|
|
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****
|
|
```
|
|
|
|
**คุณสมบัติสำคัญที่ต้องดำเนินการ:**
|
|
- **การต่อสู้แบบเทิร์น** พร้อมตัวเลือกการโจมตีที่แตกต่างกัน
|
|
- **คะแนนสุขภาพ** สำหรับทั้งผู้เล่นและศัตรู
|
|
- **ระบบคลัง** สำหรับการเก็บเหรียญหรือไอเท็ม
|
|
- **ประเภทศัตรูหลายแบบ** ที่มีความยากแตกต่างกัน
|
|
- **เงื่อนไขชัยชนะ** เมื่อกำจัดศัตรูทั้งหมด
|
|
|
|
#### 2. เกมสะสม
|
|
- **เป้าหมาย**: เก็บไอเท็มเฉพาะในขณะที่หลีกเลี่ยงอุปสรรค
|
|
- **เงื่อนไขการจบเกม**: ถึงจำนวนการสะสมเป้าหมายหรือสูญเสียชีวิตทั้งหมด
|
|
- **ความก้าวหน้า**: ไอเท็มจะยากขึ้นในการเข้าถึงเมื่อเกมดำเนินไป
|
|
|
|
#### 3. เกมปริศนา
|
|
- **เป้าหมาย**: แก้ปริศนาที่มีความยากเพิ่มขึ้นเรื่อยๆ
|
|
- **เงื่อนไขการจบเกม**: ผ่านทุกระดับหรือหมดการเคลื่อนไหว/เวลา
|
|
- **การเริ่มใหม่**: รีเซ็ตไปยังระดับแรกพร้อมล้างความก้าวหน้า
|
|
|
|
#### 4. เกมป้องกัน
|
|
- **เป้าหมาย**: ปกป้องฐานของคุณจากคลื่นศัตรู
|
|
- **เงื่อนไขการจบเกม**: เอาชนะคลื่นทั้งหมด (ชัยชนะ) หรือฐานถูกทำลาย (พ่ายแพ้)
|
|
- **ความก้าวหน้า**: คลื่นศัตรูเพิ่มความยากและจำนวน
|
|
|
|
## แนวทางการดำเนินการ
|
|
|
|
### เริ่มต้น
|
|
|
|
1. **วางแผนการออกแบบเกมของคุณ**:
|
|
- ร่างวงจรการเล่นเกมพื้นฐาน
|
|
- กำหนดเงื่อนไขการจบเกมของคุณอย่างชัดเจน
|
|
- ระบุข้อมูลที่ต้องรีเซ็ตเมื่อเริ่มใหม่
|
|
|
|
2. **ตั้งค่าโครงสร้างโปรเจกต์ของคุณ**:
|
|
```
|
|
my-game/
|
|
├── index.html
|
|
├── style.css
|
|
├── game.js
|
|
└── README.md
|
|
```
|
|
|
|
3. **สร้างวงจรเกมหลักของคุณ**:
|
|
- เริ่มต้นสถานะเกม
|
|
- จัดการการป้อนข้อมูลของผู้ใช้
|
|
- อัปเดตตรรกะเกม
|
|
- ตรวจสอบเงื่อนไขการจบเกม
|
|
- แสดงสถานะปัจจุบัน
|
|
|
|
### ข้อกำหนดทางเทคนิค
|
|
|
|
**ใช้ JavaScript สมัยใหม่**:
|
|
- ใช้ `const` และ `let` สำหรับการประกาศตัวแปร
|
|
- ใช้ฟังก์ชันลูกศรในกรณีที่เหมาะสม
|
|
- ใช้คุณสมบัติ ES6+ เช่น template literals และ destructuring
|
|
|
|
**สถาปัตยกรรมที่ขับเคลื่อนด้วยเหตุการณ์**:
|
|
- สร้างตัวจัดการเหตุการณ์สำหรับการโต้ตอบของผู้ใช้
|
|
- ดำเนินการเปลี่ยนแปลงสถานะเกมผ่านเหตุการณ์
|
|
- ใช้ตัวฟังเหตุการณ์สำหรับฟังก์ชันการเริ่มใหม่
|
|
|
|
**แนวปฏิบัติการเขียนโค้ดที่สะอาด**:
|
|
- เขียนฟังก์ชันที่มีความรับผิดชอบเดียว
|
|
- ใช้ชื่อที่อธิบายได้สำหรับตัวแปรและฟังก์ชัน
|
|
- เพิ่มความคิดเห็นที่อธิบายตรรกะและกฎของเกม
|
|
- จัดระเบียบโค้ดเป็นส่วนที่มีเหตุผล
|
|
|
|
## ข้อกำหนดการส่งงาน
|
|
|
|
### สิ่งที่ต้องส่ง
|
|
|
|
1. **ไฟล์เกมที่สมบูรณ์**: ไฟล์ HTML, CSS และ JavaScript ทั้งหมดที่จำเป็นสำหรับการรันเกมของคุณ
|
|
2. **README.md**: เอกสารที่อธิบาย:
|
|
- วิธีเล่นเกมของคุณ
|
|
- เงื่อนไขการจบเกมที่คุณดำเนินการ
|
|
- คำแนะนำสำหรับการเริ่มใหม่
|
|
- คุณสมบัติหรือกลไกพิเศษใดๆ
|
|
3. **ความคิดเห็นในโค้ด**: คำอธิบายที่ชัดเจนเกี่ยวกับตรรกะและอัลกอริทึมของเกม
|
|
|
|
### รายการตรวจสอบการทดสอบ
|
|
|
|
ก่อนส่งงาน ตรวจสอบว่าเกมของคุณ:
|
|
|
|
- [ ] **รันได้โดยไม่มีข้อผิดพลาด** ในคอนโซลของเบราว์เซอร์
|
|
- [ ] **ดำเนินการเงื่อนไขการจบเกมหลายแบบ** ตามที่ระบุไว้
|
|
- [ ] **เริ่มใหม่ได้อย่างถูกต้อง** พร้อมการรีเซ็ตสถานะที่สะอาด
|
|
- [ ] **ให้ข้อเสนอแนะที่ชัดเจน** แก่ผู้เล่นเกี่ยวกับสถานะเกม
|
|
- [ ] **ใช้ไวยากรณ์ JavaScript สมัยใหม่** และแนวปฏิบัติที่ดีที่สุด
|
|
- [ ] **มีเอกสารที่ครอบคลุม** ใน README.md
|
|
|
|
## รูปแบบการประเมิน
|
|
|
|
| เกณฑ์ | ยอดเยี่ยม (4) | ดี (3) | พัฒนา (2) | เริ่มต้น (1) |
|
|
|-------|---------------|--------|-----------|--------------|
|
|
| **ฟังก์ชันการทำงานของเกม** | เกมสมบูรณ์พร้อมเงื่อนไขการจบเกมหลายแบบ การเริ่มใหม่ที่ราบรื่น และประสบการณ์การเล่นเกมที่ขัดเกลา | เกมเต็มรูปแบบพร้อมเงื่อนไขการจบเกมพื้นฐานและกลไกการเริ่มใหม่ที่ใช้งานได้ | เกมบางส่วนพร้อมเงื่อนไขการจบเกมบางอย่างที่ดำเนินการ การเริ่มใหม่อาจมีปัญหาเล็กน้อย | เกมไม่สมบูรณ์พร้อมฟังก์ชันการทำงานที่จำกัดและข้อบกพร่องสำคัญ |
|
|
| **คุณภาพของโค้ด** | โค้ดที่สะอาดและจัดระเบียบดี ใช้แนวปฏิบัติ JavaScript สมัยใหม่ มีความคิดเห็นที่ครอบคลุม และโครงสร้างที่ยอดเยี่ยม | การจัดระเบียบโค้ดที่ดีพร้อมไวยากรณ์สมัยใหม่ ความคิดเห็นที่เพียงพอ และโครงสร้างที่ชัดเจน | การจัดระเบียบโค้ดพื้นฐานพร้อมแนวปฏิบัติสมัยใหม่บางส่วน ความคิดเห็นน้อย | การจัดระเบียบโค้ดไม่ดี ไวยากรณ์ล้าสมัย ขาดความคิดเห็นและโครงสร้าง |
|
|
| **ประสบการณ์ผู้ใช้** | การเล่นเกมที่ใช้งานง่ายพร้อมคำแนะนำที่ชัดเจน ข้อเสนอแนะที่ยอดเยี่ยม และประสบการณ์การจบ/เริ่มใหม่ที่น่าสนใจ | การเล่นเกมที่ดีพร้อมคำแนะนำและข้อเสนอแนะที่เพียงพอ การจบ/เริ่มใหม่ที่ใช้งานได้ | การเล่นเกมพื้นฐานพร้อมคำแนะนำขั้นต่ำ ข้อเสนอแนะเกี่ยวกับสถานะเกมจำกัด | การเล่นเกมที่สับสนพร้อมคำแนะนำที่ไม่ชัดเจนและข้อเสนอแนะผู้ใช้ที่ไม่ดี |
|
|
| **การดำเนินการทางเทคนิค** | แสดงความเชี่ยวชาญในแนวคิดการพัฒนาเกม การจัดการเหตุการณ์ และการจัดการสถานะ | แสดงความเข้าใจที่มั่นคงในแนวคิดเกมพร้อมการดำเนินการที่ดี | ความเข้าใจพื้นฐานพร้อมการดำเนินการที่ยอมรับได้ | ความเข้าใจจำกัดพร้อมการดำเนินการที่ไม่ดี |
|
|
| **เอกสารประกอบ** | README ที่ครอบคลุมพร้อมคำแนะนำที่ชัดเจน โค้ดที่มีความคิดเห็นดี และหลักฐานการทดสอบที่ละเอียด | เอกสารที่ดีพร้อมคำแนะนำที่ชัดเจนและความคิดเห็นโค้ดที่เพียงพอ | เอกสารพื้นฐานพร้อมคำแนะนำขั้นต่ำ | เอกสารที่ไม่ดีหรือขาดหายไป |
|
|
|
|
### เกณฑ์การให้คะแนน
|
|
- **ยอดเยี่ยม (16-20 คะแนน)**: เกินความคาดหวังพร้อมคุณสมบัติที่สร้างสรรค์และการดำเนินการที่ขัดเกลา
|
|
- **ดี (12-15 คะแนน)**: ตรงตามข้อกำหนดทั้งหมดพร้อมการดำเนินการที่มั่นคง
|
|
- **พัฒนา (8-11 คะแนน)**: ตรงตามข้อกำหนดส่วนใหญ่พร้อมปัญหาเล็กน้อย
|
|
- **เริ่มต้น (4-7 คะแนน)**: ตรงตามข้อกำหนดบางส่วนแต่ต้องปรับปรุงอย่างมาก
|
|
|
|
## แหล่งข้อมูลการเรียนรู้เพิ่มเติม
|
|
|
|
- [MDN คู่มือการพัฒนาเกม](https://developer.mozilla.org/en-US/docs/Games)
|
|
- [บทเรียนการพัฒนาเกมด้วย JavaScript](https://developer.mozilla.org/en-US/docs/Games/Tutorials)
|
|
- [เอกสาร API Canvas](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) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ |