10 KiB
สร้างเกมจำลอง: ใช้รูปแบบการออกแบบ
ภาพรวมของงาน
นำความรู้ใหม่เกี่ยวกับรูปแบบการออกแบบมาใช้โดยการสร้างต้นแบบเกมง่ายๆ! งานนี้จะช่วยให้คุณฝึกฝนทั้งรูปแบบสถาปัตยกรรม (การสืบทอดหรือการประกอบ) และระบบการสื่อสาร pub/sub ที่คุณได้เรียนรู้ในบทเรียน
คำแนะนำ
สร้างตัวแทนเกมง่ายๆ ที่แสดงให้เห็นถึงรูปแบบการออกแบบจากบทเรียนนี้ เกมของคุณควรใช้งานได้ แต่ไม่จำเป็นต้องมีกราฟิกที่ซับซ้อน \u2013 เน้นที่สถาปัตยกรรมพื้นฐานและรูปแบบการสื่อสาร
ข้อกำหนด
เลือกแบบสถาปัตยกรรมของคุณ:
- ตัวเลือก A: ใช้การสืบทอดแบบคลาส (เช่นตัวอย่าง
GameObject→Movable→Hero) - ตัวเลือก B: ใช้การประกอบ (เช่นวิธีการฟังก์ชันโรงงานที่มีพฤติกรรมผสม)
การสื่อสาร:
- รวม คลาส
EventEmitterสำหรับการส่งข้อความแบบ pub/sub - ตั้งค่า ประเภทข้อความอย่างน้อย 2-3 ประเภท (เช่น
PLAYER_MOVE,ENEMY_SPAWN,SCORE_UPDATE) - เชื่อมต่อ การป้อนข้อมูลของผู้ใช้ (คีย์บอร์ด/เมาส์) กับเหตุการณ์ในเกมผ่านระบบเหตุการณ์
องค์ประกอบของเกมที่ต้องมี:
- ตัวละครที่ผู้เล่นควบคุมได้อย่างน้อยหนึ่งตัว
- วัตถุเกมอื่นอย่างน้อยหนึ่งอย่าง (ศัตรู, สิ่งที่เก็บได้, หรือองค์ประกอบสิ่งแวดล้อม)
- การโต้ตอบพื้นฐานระหว่างวัตถุ (การชนกัน, การเก็บ, หรือการสื่อสาร)
ไอเดียเกมที่แนะนำ
เกมง่ายๆ ที่ควรพิจารณา:
- เกมงู \u2013 ส่วนของงูตามหัว งูจะกินอาหารที่เกิดขึ้นแบบสุ่ม
- เกมปิงปอง \u2013 แป้นรับการป้อนข้อมูล ลูกบอลเด้งออกจากกำแพง
- เกมเก็บของ \u2013 ผู้เล่นเคลื่อนที่ไปรอบๆ เพื่อเก็บไอเท็มและหลบหลีกสิ่งกีดขวาง
- เกมป้องกันฐาน \u2013 หอคอยตรวจจับและยิงศัตรูที่เคลื่อนที่
แนวทางโครงสร้างโค้ด
// Example starting structure
const Messages = {
// Define your game messages here
};
class EventEmitter {
// Your event system implementation
}
// Choose either class-based OR composition approach
// Class-based example:
class GameObject { /* base properties */ }
class Player extends GameObject { /* player-specific behavior */ }
// OR Composition example:
const gameObject = { /* base properties */ };
const movable = { /* movement behavior */ };
function createPlayer() { /* combine behaviors */ }
การทดสอบการใช้งาน
ตรวจสอบว่าโค้ดของคุณทำงานโดย:
- ทดสอบ ว่าวัตถุเคลื่อนที่หรือเปลี่ยนแปลงเมื่อมีการเรียกเหตุการณ์
- ยืนยัน ว่าวัตถุหลายตัวสามารถตอบสนองต่อเหตุการณ์เดียวกันได้
- ตรวจสอบ ว่าคุณสามารถเพิ่มพฤติกรรมใหม่ได้โดยไม่ต้องแก้ไขโค้ดที่มีอยู่
- ตรวจสอบ ว่าการป้อนข้อมูลจากคีย์บอร์ด/เมาส์เรียกเหตุการณ์ในเกมได้อย่างถูกต้อง
แนวทางการส่งงาน
งานที่คุณส่งควรประกอบด้วย:
- ไฟล์ JavaScript ที่มีการใช้งานเกมของคุณ
- ไฟล์ HTML เพื่อรันและทดสอบเกมของคุณ (สามารถเรียบง่ายได้)
- ความคิดเห็น อธิบายว่าคุณเลือกใช้รูปแบบใดและเหตุผล
- เอกสารสั้นๆ เกี่ยวกับประเภทข้อความและสิ่งที่พวกมันทำ
เกณฑ์การให้คะแนน
| เกณฑ์ | ดีเยี่ยม (3 คะแนน) | เพียงพอ (2 คะแนน) | ต้องปรับปรุง (1 คะแนน) |
|---|---|---|---|
| รูปแบบสถาปัตยกรรม | ใช้การสืบทอดหรือการประกอบอย่างถูกต้องพร้อมลำดับชั้นคลาส/วัตถุที่ชัดเจน | ใช้รูปแบบที่เลือกด้วยปัญหาเล็กน้อยหรือไม่สอดคล้องกัน | พยายามใช้รูปแบบแต่การใช้งานมีปัญหาสำคัญ |
| การใช้งาน Pub/Sub | EventEmitter ทำงานได้อย่างถูกต้องกับประเภทข้อความหลายประเภทและการไหลของเหตุการณ์ที่เหมาะสม | ระบบ pub/sub พื้นฐานทำงานได้พร้อมการจัดการเหตุการณ์บางส่วน | ระบบเหตุการณ์มีอยู่แต่ทำงานไม่เสถียร |
| ฟังก์ชันการทำงานของเกม | มีองค์ประกอบที่โต้ตอบได้สามอย่างขึ้นไปที่สื่อสารผ่านเหตุการณ์ | มีองค์ประกอบที่โต้ตอบได้สองอย่างพร้อมการสื่อสารเหตุการณ์พื้นฐาน | มีองค์ประกอบหนึ่งที่ตอบสนองต่อเหตุการณ์หรือการโต้ตอบพื้นฐาน |
| คุณภาพของโค้ด | โค้ดสะอาด มีความคิดเห็นที่ดี พร้อมการจัดระเบียบที่มีเหตุผลและใช้ JavaScript สมัยใหม่ | โค้ดจัดระเบียบได้ดีโดยทั่วไปพร้อมความคิดเห็นที่เพียงพอ | โค้ดทำงานได้แต่ขาดการจัดระเบียบหรือความคิดเห็นที่ชัดเจน |
คะแนนโบนัส:
- กลไกเกมที่สร้างสรรค์ ที่แสดงให้เห็นการใช้รูปแบบที่น่าสนใจ
- วิธีการป้อนข้อมูลหลายแบบ (เหตุการณ์คีย์บอร์ดและเมาส์)
- สถาปัตยกรรมที่ขยายได้ ซึ่งสามารถเพิ่มฟีเจอร์ใหม่ได้ง่าย
ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราจะไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้