สารบัญ:
วีดีโอ: Flappy Bird บน ATtiny85 และ OLED Display SSD1306: 6 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
เฮ้ทุกคน, วันนี้ฉันจะแสดงให้คุณเห็นโคลนนิ่งนกพื้นฐานที่ฉันสร้างขึ้น และวิธีที่คุณจะทำเกมที่คล้ายกัน โดยพื้นฐานแล้วฉันจะใช้รหัสของฉันกับคุณและอธิบายว่ามันทำงานอย่างไรในทุกขั้นตอน เกมนี้สร้างขึ้นเพื่อทำงานบน ATtiny85 โอเวอร์คล็อกที่ 1MHz พร้อมจอแสดงผล I2C OLED ต่อไปข้างหน้า!
ขั้นตอนที่ 1: ฮาร์ดแวร์
หากคุณไม่ได้สนใจที่จะสร้างวงจรสำหรับเกมจริงๆ แต่เข้าใจทฤษฎีเบื้องหลัง คุณสามารถข้ามขั้นตอนนี้ได้
เกมของฉันต้องใช้สองปุ่ม ได้แก่ ATtiny85 หน้าจอ I2C OLED 128x64px และแหล่งพลังงานบางส่วน นามบัตร/เกมคอนโซลที่สอนได้ของฉัน: หน้าจอ ATtiny85 และ OLED จะแสดงวิธีสร้างบอร์ดที่มีทุกสิ่งที่คุณต้องการ หากคุณไม่สนใจที่จะทำบอร์ดของฉัน ให้เอาเขียงหั่นขนมของคุณออกมา แล้วฉันจะบอกข้อมูลจำเพาะให้คุณทราบ คุณสามารถใช้ ATtiny85 รุ่นใดก็ได้ ฉันแนะนำจอแสดงผล OLED แบบนี้
- ต่อด้านหนึ่งของปุ่มกดสองปุ่มเข้ากับหมุด 2 และ 3 บน ATtiny85 ของคุณ บนสายไฟเหล่านี้ ให้เพิ่มตัวต้านทาน 10k ohm ที่เชื่อมต่อกับกราวด์ด้วย (ตัวต้านทานแบบดึงลง)
- ต่ออีกด้านของปุ่มกดเหล่านี้เข้ากับแรงดันไฟฟ้า เมื่อไม่ได้กดปุ่ม สถานะพินจะต่ำ เมื่อกดแล้ว สถานะพินจะสูง
- เชื่อมต่อพิน 7 กับพิน SCL บนจอแสดงผล และพิน 5 กับพิน SDA บนจอแสดงผลของคุณ ต่อสายไฟ (VCC และ GND) บนจอแสดงผลตามลำดับ
- สุดท้าย เชื่อมต่อพิน 4 บน ATtiny กับกราวด์ และพิน 8 กับแรงดันไฟฟ้า
ขั้นตอนที่ 2: ซอฟต์แวร์
แนบมาที่นี่คือโฟลเดอร์ที่มีไฟล์ทั้งหมดที่คุณต้องการเพื่อเรียกใช้เกม ไฟล์สองไฟล์ FlappyBird.ino และ WallFunctions.h ได้รับการวิจารณ์อย่างดีเพื่อความเพลิดเพลินในการอ่านของคุณ คุณสามารถอัปโหลดภาพร่าง FlappyBird.ino ไปยัง ATtiny85 ของคุณ (ที่ 1MHz) แล้วเล่นได้เลย! หากการเรียนรู้ทฤษฎีเบื้องหลังเกมนี้สนใจคุณ หรือคุณต้องการสร้างเกมของคุณเอง อ่านต่อ!
ยังมีปัญหาเล็กน้อยกับเกมของฉัน I2C ไม่ใช่วิธีที่ดีที่สุดในการส่งข้อมูลด้วยวิธีการใดๆ ตามโพสต์นี้ จอแสดงผลสามารถรับข้อมูลที่ประมาณ 100KHz เท่านั้น ดังนั้นแม้ว่าเราจะเพิ่มความเร็วสัญญาณนาฬิกา ATtiny เป็น 8MHz ช่องสัญญาณ I2C ก็ยังคงเป็นคอขวด จอแสดงผลสามารถส่งออกได้สูงสุดประมาณ 10fps ยิ่งต้องวาดภาพแยกกันมากเท่าใด กระบวนการทั้งหมดก็จะยิ่งช้าลงเท่านั้น ดังนั้นเกมของฉันจึงค่อนข้างง่ายเพราะคุณไม่สามารถทำให้กำแพงเคลื่อนที่อย่างรวดเร็วผ่านหน้าจอได้! ด้านล่างนี้คือความท้าทายบางอย่างสำหรับคุณ หากคุณคิดว่าคุณพร้อมทำงาน:
- ในการทำให้เกมยากขึ้น ให้ลองดูว่าคุณสามารถเว้นระยะห่างระหว่างกำแพงเป็น 2 แทนที่จะเป็น 4 ได้หรือไม่ มันไม่ควรยากเกินไปเมื่อคุณเข้าใจวิธีการทำงานของโปรแกรมของฉัน:) กรุณาโพสต์ในความคิดเห็นหากคุณสามารถทำงานได้!
- อีกสิ่งหนึ่งที่เกมของฉันขาดคือระบบคะแนนและวิธีแสดงคะแนนและบันทึก ดูว่าคุณสามารถนำไปใช้ได้หรือไม่!
- สุดท้ายนี้ แทนที่จะให้กำแพงขยับทีละคอลัมน์ ให้ลองทำให้แต่ละกำแพงขยับทีละพิกเซลเพื่อให้การเคลื่อนไหวราบรื่นขึ้น
ขั้นตอนที่ 3: Flappy Bird ATtiny85: ทฤษฎี
แม้ว่าจอแสดงผลที่เราใช้อยู่จะมีความสูง 64 พิกเซลเพื่อใช้สำหรับเกม แต่ก็เป็นไปได้ที่จะจัดตำแหน่งองค์ประกอบในบล็อกขนาด 8 พิกเซลเท่านั้น ดังนั้น พิกัด y ที่เป็นไปได้มีเพียง 8 ตัวเท่านั้น เพื่อให้ง่ายขึ้น ในซอฟต์แวร์ ฉันแบ่งหน้าจอทั้งหมดในลักษณะนี้ โดยสร้างตารางขนาด 16 บล็อกคูณ 8 บล็อก โดยแต่ละบล็อกมีขนาด 8x8 พิกเซล ในการเติมแต่ละบล็อก สไปรท์ทุกตัวในเกมจะมีขนาด 8x8 พิกเซล ทำให้ทุกอย่างจัดการได้ง่ายขึ้นมาก หากคุณดูภาพด้านบน คุณจะเห็นว่าฉันแบ่งหน้าจออย่างไร ผนังแต่ละหลังประกอบด้วย 6 บล็อก โดยมีหลุมสูง 2 บล็อก ทำให้สูงรวมของผนังแต่ละช่วง 8 บล็อก
ในโปรแกรม แต่ละวอลล์จะแสดงเป็นโครงสร้าง เรียกว่า วอลล์ โครงสร้างผนังแต่ละอันมีคุณสมบัติสองประการ - ตำแหน่งรูและคอลัมน์ 'ตำแหน่งหลุม' คือตัวเลข 0-6 เนื่องจากมีเพียง 7 ตำแหน่งที่เป็นไปได้ในกำแพง 8 ช่วงตึกสำหรับหลุมสูง 2 ช่วงตึก 'คอลัมน์' เป็นตัวเลข 0-15 เนื่องจากมีบล็อก 16 คอลัมน์บนหน้าจอ
แนะนำ:
Muscle Powered Flappy Bird: 9 ขั้นตอน (พร้อมรูปภาพ)
Muscle Powered Flappy Bird: คุณอาจจำได้เมื่อ Flappy Bird ยึดครองโลกโดยพายุ ในที่สุดก็กลายเป็นที่นิยมอย่างมาก ผู้สร้างจึงลบมันออกจาก App Store เพื่อหลีกเลี่ยงการเผยแพร่ที่ไม่ต้องการ นี่คือ Flappy Bird อย่างที่คุณไม่เคยเห็นมาก่อน โดยการรวมองค์ประกอบบางส่วนจากชั้นวาง
Blinds Control ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: 5 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมมู่ลี่ด้วย ESP8266, Google Home และ Openhab Integration และ Webcontrol: ในคำแนะนำนี้ ฉันจะแสดงให้คุณเห็นว่าฉันเพิ่มระบบอัตโนมัติให้กับมู่ลี่ของฉันอย่างไร ฉันต้องการเพิ่มและลบระบบอัตโนมัติได้ ดังนั้นการติดตั้งทั้งหมดจึงเป็นแบบหนีบ ส่วนหลักคือ: สเต็ปเปอร์มอเตอร์ ตัวขับสเต็ปควบคุม bij ESP-01 เกียร์และการติดตั้ง
เล่นเกมปิงปองด้วยจอแสดงผล Arduino Uno และ OLED 0.96 SSD1306: 6 ขั้นตอน
เล่นเกม PONG ด้วย Arduino Uno และ OLED 0.96 SSD1306 Display: สวัสดีทุกคน วันนี้เราจะสร้างเกม PONG ด้วย Arduino เราจะใช้จอแสดงผล 0.96 oled ของ adafruit เพื่อแสดงเกม & กดปุ่มเพื่อควบคุมเกม
RuuviTag และ PiZero W และ Blinkt! เทอร์โมมิเตอร์แบบ Bluetooth Beacon: 3 ขั้นตอน (พร้อมรูปภาพ)
RuuviTag และ PiZero W และ Blinkt! เครื่องวัดอุณหภูมิที่ใช้ Bluetooth Beacon: คำแนะนำนี้อธิบายวิธีการอ่านข้อมูลอุณหภูมิและความชื้นจาก RuuviTag โดยใช้ Bluetooth กับ Raspberry Pi Zero W และเพื่อแสดงค่าเป็นเลขฐานสองบน Pimoroni กะพริบตา! pHAT.หรือเรียกสั้นๆ ว่า จะสร้างสถานะอย่างไร
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): 25 ขั้นตอน (พร้อมรูปภาพ)
วิธีการสร้าง Quadcoptor (NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS 3DR Radio และ FlySky TH9X): นี่คือบทแนะนำเกี่ยวกับวิธีการสร้าง Quadcopter โดยใช้มอเตอร์ NTM 28-30S 800kV 300W และ Arducopter APM 2.6 & 6H GPS & วิทยุ 3DR ฉันพยายามอธิบายแต่ละขั้นตอนด้วยรูปภาพจำนวนหนึ่ง หากคุณมีคำถามหรือความคิดเห็นใด ๆ โปรดตอบกลับ