สารบัญ:

เกม Arduino Space Rocks: 3 ขั้นตอน
เกม Arduino Space Rocks: 3 ขั้นตอน

วีดีโอ: เกม Arduino Space Rocks: 3 ขั้นตอน

วีดีโอ: เกม Arduino Space Rocks: 3 ขั้นตอน
วีดีโอ: เพลง อ๊อดแอด - เท่ง เถิดเทิง (Music Video) 2024, กรกฎาคม
Anonim
เกม Arduino Space Rocks
เกม Arduino Space Rocks

ไม่ว่าจะเล่นบนคอมพิวเตอร์ โทรศัพท์ เกมคอนโซล หรือกล่องแยก วิดีโอเกมจำนวนมากมีองค์ประกอบในการหลีกเลี่ยงสิ่งกีดขวาง แน่นอนว่าอาจมีคะแนนที่ได้รับจากการรวบรวมโทเค็นหรือค้นหาทางผ่านเขาวงกต แต่โปรดวางใจว่าอาจมีบางอย่างในเกมที่มีจุดประสงค์เพื่อป้องกันไม่ให้คุณทำเช่นนั้น วิดีโอเกมแรกคือ Pong แต่หลังจากนั้นเกมที่ได้รับความนิยมมากที่สุดก็เช่น "Asteroids" หรือ "Pac-Man" รูปแบบล่าสุดน่าจะเป็นเกม "Flappy Birds" ที่เรียบง่าย แต่น่าติดตาม

เมื่อเร็ว ๆ นี้ฉันเห็นว่ามีคนสร้าง "Flappy Bird" สองระดับง่ายๆ ซึ่งเล่นบนจอ LCD รุ่น 1602 ทั่วไป ฉันคิดว่านั่นจะเป็นสิ่งที่หลานๆ อาจชอบ ฉันจึงตัดสินใจทำการเปลี่ยนแปลงของตัวเองตั้งแต่ต้น รุ่น 1602 มีเพียงสองระดับเท่านั้น ดังนั้นฉันจึงตัดสินใจใช้ LCD 2004 (20x4) แทนเพื่อเพิ่มความยากในการเล่นเล็กน้อย ฉันยังเลือกที่จะทำให้มันเป็นเหมือน "ดาวเคราะห์น้อย" โดยให้ผู้เล่นนำทาง "เรือ" ผ่านเขาวงกตของ "หินอวกาศ" แม้ว่าคุณจะไม่สนใจที่จะสร้างเกม แต่อาจมีองค์ประกอบบางอย่างของซอฟต์แวร์ที่คุณสามารถใช้ได้ในโครงการของคุณเอง

ขั้นตอนที่ 1: ฮาร์ดแวร์

ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์

ฮาร์ดแวร์สามารถใช้กับ Arduino เวอร์ชันใดก็ได้ ฉันสร้างต้นแบบโดยใช้นาโน แล้วเบิร์นโค้ดลงในชิป ATMega328 นั่นคือชิปตัวเดียวกับที่ใช้ในนาโน แต่การใช้เพียงตัวมันเองช่วยให้มีโครงสร้างที่กะทัดรัดยิ่งขึ้นและใช้พลังงานน้อยลง อย่างที่คุณเห็น ฉันสร้างวงจรบนเขียงหั่นขนมขนาดเล็กที่เสียบไว้บนโมดูล LCD อีกแง่มุมที่แตกต่างคือนาโนทำงานที่ 16-MHz โดยใช้คริสตัลภายนอก แต่ฉันเลือกใช้ออสซิลเลเตอร์ 8-MHz ในตัวสำหรับชิป ATMega328 ที่ช่วยประหยัดชิ้นส่วนและพลังงาน

อินเทอร์เฟซ LCD 2004 กับ Arduino เช่นเดียวกับ 1602 LCD ความแตกต่างที่น่าสนใจอยู่ที่การระบุตำแหน่งที่แสดง เห็นได้ชัดว่ามีความแตกต่างกันเนื่องจากมีสี่บรรทัดแทนที่จะเป็นสอง แต่ในปี 2547 บรรทัดที่สามเป็นส่วนต่อขยายของบรรทัดแรกและบรรทัดที่สี่เป็นส่วนต่อขยายของบรรทัดที่สอง กล่าวอีกนัยหนึ่ง หากคุณมีโปรแกรมทดสอบที่เพิ่งส่งสตริงอักขระไปยัง LCD อักขระที่ 21 จะปรากฏขึ้นที่จุดเริ่มต้นของบรรทัดที่สาม และอักขระที่ 41 จะกลับมาที่จุดเริ่มต้นของบรรทัดแรก ฉันใช้คุณลักษณะดังกล่าวในซอฟต์แวร์เพื่อเพิ่มความยาวของเขาวงกตเป็นสองเท่าอย่างมีประสิทธิภาพ

ฉันตัดสินใจที่จะใช้แบตเตอรี่เวอร์ชันของฉันดังนั้นฉันจึงใช้แบตเตอรี่ Li-ion 18650 ทั่วไป 3.6 โวลต์ ฉันต้องเพิ่มบอร์ดขนาดเล็กเพื่อให้สามารถชาร์จ USB และบอร์ดขนาดเล็กอีกอันเพื่อเพิ่มแรงดันแบตเตอรี่เป็น 5 โวลต์สำหรับ LCD และชิป ATMega รูปภาพแสดงโมดูลที่ฉันใช้ แต่ก็มีโมดูลแบบครบวงจรที่ทำหน้าที่ทั้งสองอย่าง

ขั้นตอนที่ 2: ซอฟต์แวร์

ซอฟต์แวร์เหมือนกันสำหรับทั้งชิป Nano และ ATMega328 ข้อแตกต่างเพียงอย่างเดียวคือวิธีการเขียนโปรแกรม ฉันใช้ซอฟต์แวร์ LCD 1602 รุ่นแบร์โบนของตัวเอง และซอฟต์แวร์ LCD ในโครงการนี้อิงตามนั้น ฉันจำเป็นต้องเพิ่มความสามารถเพื่อจัดการกับบรรทัดพิเศษของจอแสดงผลในปี 2547 และเพิ่มกิจวัตรในการขยับจอแสดงผลด้วย การเปลี่ยนการแสดงผลให้เอฟเฟกต์การเคลื่อนไหวของ "หิน" ผ่าน "เรือ"

ดังที่กล่าวไว้ก่อนหน้านี้ บรรทัดที่ 1 และ 3 สร้างคิวแบบวงกลม และบรรทัดที่ 2 และ 4 ก็ทำเช่นกัน นั่นหมายความว่าหลังจาก 20 กะ บรรทัดที่ 1 และ 3 จะถูกสลับและสายที่ 2 และ 4 จะถูกสลับ หลังจาก 40 กะเส้นจะกลับสู่ตำแหน่งเดิม เนื่องจากพฤติกรรมนี้ เขาวงกตเดิมที่มีอักขระ 20 ตัวจึงแตกต่างไปจากเดิมอย่างสิ้นเชิงเมื่อเส้นสลับกัน นั่นทำให้ชีวิตน่าสนใจเมื่อฉันพยายามสร้างเขาวงกต ในที่สุดฉันก็เปิดสเปรดชีต Excel เพื่อที่ฉันจะได้สร้างแผนภูมิเส้นทางโดยไม่ต้องเปลี่ยนซอฟต์แวร์ตลอดเวลา ซอฟต์แวร์ที่มีให้ในที่นี้จะมีเขาวงกตสองเวอร์ชัน (เวอร์ชันหนึ่งแสดงความเห็น) ดังนั้นคุณสามารถเลือกเวอร์ชันที่ต้องการหรือสร้างขึ้นเองได้

เดิมทีฉันต้องการให้มันเรียบง่ายพอที่หลานๆ จะเล่นได้ แต่ฉันก็อยากให้มันมีสิ่งท้าทายพิเศษบางอย่างหากพวกเขา (หรือคนอื่น) เล่นเก่งเกินไป เกมเริ่มต้นด้วยอัตราการเปลี่ยนแปลงที่ตั้งไว้ที่ 1 วินาที อัตรา Tic ภายในคือ 50ms ซึ่งหมายความว่ามีช่วงเวลา 20 ช่วงที่สามารถกดปุ่มขึ้น/ลงได้ ในความเป็นจริง การกดปุ่มจะใช้ 2 สำบัดสำนวน เนื่องจากช่วงเวลา 50 มิลลิวินาทีจะใช้ในการตรวจจับการกด และอีก 50 มิลลิวินาทีจะใช้เพื่อรอการปล่อย ด้วยค่าเริ่มต้นเขาวงกต จำนวนการกดสูงสุดที่จำเป็นก่อนกะถัดไปคือสามครั้ง วิธีง่ายๆ ในการเพิ่มความยากของเกมคือการย่นเวลาระหว่างกะเพื่อให้โค้ดสองสามบรรทัดทำอย่างนั้นเมื่อคะแนนเพิ่มขึ้น อัตรากะถูกตั้งค่าให้เร็วขึ้น 50ms ทุกๆ 20 กะ โดยจำกัดอัตราขั้นต่ำไว้ที่ 500ms การเปลี่ยนพารามิเตอร์เหล่านี้ทำได้ง่าย

นอกเหนือจากการเปลี่ยนอัตรากะแล้ว ตรรกะหลักในซอฟต์แวร์คือการย้าย "เรือรบ" และตรวจสอบว่า "เรือรบ" ชนกับ "หิน" หรือไม่ ฟังก์ชันเหล่านี้ใช้ประโยชน์จากอาร์เรย์ "ร็อค/สเปซ" ที่กำหนดไว้และอาร์เรย์ที่กำหนดตำแหน่งหน่วยความจำในจอแสดงผล จำนวนกะสอดคล้องกับความยาวบรรทัดของ LCD (0-19) และใช้เป็นดัชนีในอาร์เรย์เหล่านี้ ตรรกะค่อนข้างซับซ้อนโดยข้อเท็จจริงที่ว่าเส้นสลับกันทุกๆ 20 กะนับ ตรรกะที่คล้ายกันนี้ใช้เพื่อกำหนดตำแหน่งของ "เรือรบ" ซึ่งสามารถอยู่บนเส้นใดก็ได้ในสี่เส้น

คะแนนสำหรับการเล่นแต่ละครั้งเป็นเพียงการนับจำนวนกะที่เกิดขึ้น และคะแนนสูงจะถูกบันทึกไว้ใน EEROM ภายในไมโครคอนโทรลเลอร์ ไลบรารี EEPROM ใช้สำหรับอ่านและเขียนหน่วยความจำนี้ รูทีนที่พร้อมใช้งานอนุญาตให้อ่าน/เขียนและอ่าน/เขียนค่าทศนิยมแบบไบต์เดียว ค่า 0xA5 จะถูกเก็บไว้ในตำแหน่ง EEROM แรกเพื่อระบุว่าได้บันทึกคะแนนสูงแล้ว หากค่านั้นปรากฏเมื่อเปิดเครื่อง ค่าจุดลอยตัวสำหรับคะแนนสูงจะถูกอ่านและแสดง หากไม่มีค่า 0xA5 รูทีนจะถูกเรียกเพื่อเริ่มต้นคะแนนสูงเป็นค่า 1 รูทีนเดียวกันนั้นจะถูกเรียกหากต้องการรีเซ็ตคะแนนสูง คะแนนสูงสุดจะถูกตั้งค่ากลับเป็นค่า 1 โดยกดปุ่มขึ้น/ลงปุ่มใดปุ่มหนึ่งค้างไว้ จากนั้นกดปุ่มรีเซ็ตชั่วขณะ

ขั้นตอนที่ 3: การเล่นเกม

เล่นเกมส์
เล่นเกมส์
เล่นเกม
เล่นเกม

เมื่อใช้พลังงาน คะแนนสูงสุดในปัจจุบันจะปรากฏขึ้น หลังจากที่คะแนนสูงสุดปรากฏขึ้น เขาวงกตของ "หิน" และ "เรือรบ" จะปรากฏขึ้น จากนั้นเกมจะเริ่มในไม่กี่วินาทีต่อมา เมื่อ "เรือ" กระทบ "หิน" ข้อความ "CRASH AND BURN" จะกะพริบสองสามครั้งก่อนที่จะแสดงคะแนนสำหรับเกม หากทำคะแนนสูงสุดใหม่ ข้อความนั้นก็จะปรากฏขึ้นด้วย เกมใหม่เริ่มต้นโดยกดปุ่มรีเซ็ต

แนะนำ: