LX' Arduino Tetris
เป้าหมายที่ผมตั้งไว้สำหรับอีสเตอร์ปี 2018: ทำให้ เกม Tetris ทำงานบนแผง LED matrix ขนาด 32x32 ได้ โปรเจกต์นี้ใช้ Arduino/Genuino Uno เป็นคอนโทรลเลอร์ ซึ่งมีข้อจำกัดด้านหน่วยความจำค่อนข้างมากตามประสบการณ์ที่ผมพบ ส่วนใหญ่ของโปรเจกต์นี้จึงเป็นการหาวิธีแก้ไขข้อจำกัดเหล่านั้น บางทีในอนาคตอันใกล้ ผมอาจจะปรับให้เข้ากับ Arduino Mega เพื่อเพิ่มหน่วยความจำ
การเดินสายไฟของแผง LED เป็นไปตามที่แนะนำใน เอกสารของ Adafruit ส่วนที่เหลือเป็นเพียง resistor ladder สำหรับปุ่มควบคุมทั้งสี่
การสาธิตการทำงานของเกม:
ซอร์สโค้ดฉบับเต็มของเวอร์ชันล่าสุดสามารถดูได้ที่ GitHub.
รายละเอียดทางเทคนิคเพิ่มเติม
การนำ Logic ของเกมคลาสสิกมาใช้
LX' Tetris เป็นโปรเจกต์ที่เน้นด้านซอฟต์แวร์เป็นหลัก ซึ่งสร้างเกมพัซเซิลอันเป็นเอกลักษณ์ขึ้นมาใหม่บน LED matrix ขนาด 8x8 หรือ 16x32
- การชนกันแบบ Array-Based: "บ่อ" (กระดานเกม) ถูกจัดเก็บเป็น 2D array เฟิร์มแวร์จะตรวจสอบ bitwise overlap ระหว่าง "ชิ้นส่วนที่กำลังตกลงมา" กับ "ชิ้นส่วนที่วางอยู่แล้ว" ในทุก clock cycle
- Rotation Matrix: ใช้การหมุนพิกัดที่กำหนดไว้ล่วงหน้าสำหรับ Tetriminos ทั้ง 7 ตัว (I, J, L, O, S, T, Z) เพื่อให้แน่ใจว่าพวกมันหมุนได้อย่างถูกต้องภายในกริด
การตอบสนองของฮาร์ดแวร์
- เสียงและภาพ: มี buzzer สำหรับเอฟเฟกต์เสียง "Line Clear" และใช้ logic การเปลี่ยนสี หากใช้ RGB matrix ทำให้ได้รับประสบการณ์ที่เหมือน "Game Boy" อย่างแท้จริงในรูปแบบ DIY