ตัวสาธิต (Demonstrator)
เรากำลังสร้างตัวสาธิตสำหรับงานแสดงผลงาน โดยใช้บอร์ดตระกูล Arduino-Pro ตัวเลือกของเราคือบอร์ด Portenta C33 ที่ใช้โปรเซสเซอร์ Renesas Cortex M33 วิ่งได้สูงสุดถึง 200MHz (ว้าว!) MCU ตัวนี้อยู่ในซีรีย์ RA6M5 และรองรับ RAM ขนาด 512K กับ Flash 2MB ซึ่งจัดว่าพอจะสร้างงานสาธิตกราฟิกสวยๆ ได้สบายๆ โดยใช้ HAT expander board ทำให้มันดูคล้ายๆ กับ Raspi เลยล่ะ :)

โปรเจค Arduino Space Invaders นี่ถือเป็นพิธีกรรมบังคับสำหรับนักพัฒนาเกมเลยนะตัวนี้ มันบังคับให้คุณจัดการกับวัตถุเคลื่อนไหวเป็นสิบๆ ชิ้น (ลำแสงเลเซอร์, มนุษย์ต่างดาว, ยานผู้เล่น) พร้อมๆ กันภายใต้ข้อจำกัดหน่วยความจำอันจำกัดของไมโครคอนโทรลเลอร์ 8-bit
การเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming - OOP)
เวลาต้องจัดการมนุษย์ต่างดาว 20 ตัวบนหน้าจอ คุณจะมานั่งประกาศตัวแปร X กับ Y เอง 20 ชุดไม่ได้หรอก โปรเจคนี้แหละคือข้ออ้างชั้นดีที่จะได้เรียนเรื่อง Structs หรือ Classes สักที
- คุณสร้างคลาส
Alienที่เก็บค่าตำแหน่ง X, ตำแหน่ง Y และความเร็วของมัน - จากนั้นก็สร้างอาร์เรย์ของออบเจกต์
Alienออกมา - ใน
loop()หลัก คุณก็แค่ใช้forloop เดียวสั่งให้มนุษย์ต่างดาวทุกตัว.moveDown()และ.checkCollision()ได้เลย
อุปกรณ์ที่ต้องใช้
- Arduino Uno หรือ ESP32 (ถ้าอยากได้กราฟิกลื่นๆ FPS สูง)
- จอ OLED ขนาด 0.96 นิ้ว แบบ I2C (128x64): พอจะวาดสไปรต์ซับซ้อนๆ ได้
- ปุ่มกด (x3): ซ้าย, ขวา, และยิง!
- Piezo Buzzer: สำคัญมากสำหรับสร้างจังหวะเสียงหัวใจเต้นตึกตักของฝูงมนุษย์ต่างดาวที่รุกเข้ามา
การจัดการหน่วยความจำ
เพราะว่า Uno มีแรมแค่ 2KB คุณต้องใช้ PROGMEM ในการเก็บอาร์เรย์กราฟิกของยานไว้ในหน่วยความจำแฟลช ไม่งั้น Arduino จะรวนทันทีที่เปิดเครื่อง มันเป็นโปรเจคที่ท้าทายแต่ให้ความภูมิใจสูงมากสำหรับโปรแกรมเมอร์ระดับกลาง
ลองไปดูรายละเอียดเพิ่มเติมเกี่ยวกับโปรเจคนี้ได้นะ