สารบัญ:

เกม Arduino Touch Tic Tac Toe: 6 ขั้นตอน (พร้อมรูปภาพ)
เกม Arduino Touch Tic Tac Toe: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เกม Arduino Touch Tic Tac Toe: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เกม Arduino Touch Tic Tac Toe: 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Make An Arduino Tic Tac Toe Game With An AI Opponent 2024, มิถุนายน
Anonim
Image
Image
เกม Arduino Touch Tic Tac Toe
เกม Arduino Touch Tic Tac Toe
เกม Arduino Touch Tic Tac Toe
เกม Arduino Touch Tic Tac Toe
เกม Arduino Touch Tic Tac Toe
เกม Arduino Touch Tic Tac Toe

เพื่อนๆ ที่รัก ยินดีต้อนรับสู่บทช่วยสอน Arduino อื่น! ในบทช่วยสอนโดยละเอียดนี้ เราจะสร้างเกม Arduino Tic Tac Toe อย่างที่คุณเห็น เรากำลังใช้หน้าจอสัมผัสและเรากำลังเล่นกับคอมพิวเตอร์ เกมง่ายๆ อย่าง Tic Tac Toe คือบทนำที่ยอดเยี่ยมสำหรับการเขียนโปรแกรมเกมและปัญญาประดิษฐ์ แม้ว่าเราจะไม่ใช้อัลกอริทึมปัญญาประดิษฐ์ในเกมนี้ แต่เราจะเข้าใจว่าทำไมอัลกอริทึมปัญญาประดิษฐ์จึงมีความจำเป็นในเกมที่ซับซ้อนมากขึ้น

การพัฒนาเกมสำหรับ Arduino ไม่ใช่เรื่องง่ายและต้องใช้เวลามาก แต่เราสามารถสร้างเกมง่ายๆ สำหรับ Arduino ได้เพราะมันสนุก และมันจะช่วยให้เราสำรวจหัวข้อการเขียนโปรแกรมขั้นสูงเพิ่มเติม เช่น ปัญญาประดิษฐ์ มันเป็นประสบการณ์การเรียนรู้ที่ยอดเยี่ยม และในตอนท้าย คุณจะมีเกมที่ดีสำหรับเด็ก ๆ !

มาสร้างโครงการนี้กัน

ขั้นตอนที่ 1: รับชิ้นส่วนทั้งหมด

Image
Image
2.8
2.8

ชิ้นส่วนที่จำเป็นในการสร้างโครงการนี้มีดังต่อไปนี้:

Arduino Uno ▶

หน้าจอสัมผัสขนาด 2.8” ▶

ต้นทุนของโครงการต่ำมาก มันเป็นเพียง 15 $

ก่อนที่จะพยายามสร้างโปรเจ็กต์นี้ โปรดดูวิดีโอที่ฉันเตรียมไว้เกี่ยวกับหน้าจอสัมผัส ฉันได้แนบไว้ในคำแนะนำนี้ มันจะช่วยให้คุณเข้าใจรหัสและปรับเทียบหน้าจอสัมผัส

ขั้นตอนที่ 2: Touch Color Display ขนาด 2.8" สำหรับ Arduino

Image
Image
2.8
2.8
2.8
2.8

ฉันค้นพบหน้าจอสัมผัสนี้บน banggood.com และตัดสินใจซื้อเพื่อลองใช้กับบางโครงการของฉัน อย่างที่คุณเห็นจอแสดงผลมีราคาไม่แพง โดยมีราคาประมาณ 11 เหรียญ

ได้ที่นี่ ▶

จอแสดงผลมีความละเอียด 320x240 พิกเซลและเป็นเกราะป้องกันที่ทำให้การเชื่อมต่อกับ Arduino ทำได้ง่ายมาก อย่างที่คุณเห็น จอแสดงผลใช้หมุดดิจิทัลและอนาล็อกเกือบทั้งหมดของ Arduino Uno เมื่อใช้โล่นี้ เราจะเหลือเพียงหมุดดิจิทัล 2 พินและพินอะนาล็อก 1 อันสำหรับโครงการของเรา โชคดีที่จอแสดงผลทำงานได้ดีกับ Arduino Mega เช่นกัน ดังนั้นเมื่อเราต้องการพินเพิ่มเติม เราก็สามารถใช้ Arduino Mega แทน Arduino Uno ได้ ขออภัย จอแสดงผลนี้ใช้ไม่ได้กับบอร์ด Arduino Due หรือ Wemos D1 ESP8266 ข้อดีอีกประการของตัวป้องกันคือมีช่องเสียบ micro SD ซึ่งใช้งานง่ายมาก

ขั้นตอนที่ 3: สร้างโครงการและทดสอบ

การสร้างโครงการและการทดสอบ
การสร้างโครงการและการทดสอบ
การสร้างโครงการและการทดสอบ
การสร้างโครงการและการทดสอบ
การสร้างโครงการและการทดสอบ
การสร้างโครงการและการทดสอบ

หลังจากเชื่อมต่อหน้าจอกับ Arduino Uno แล้ว เราก็สามารถโหลดโค้ดและพร้อมเล่นได้เลย

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

Arduino ดีมากในเกมนี้ มันจะชนะเกือบทุกเกม หรือถ้าคุณเป็นผู้เล่นที่ดีมาก เกมก็จะจบลงด้วยผลเสมอ ฉันตั้งใจออกแบบอัลกอริทึมนี้เพื่อทำผิดพลาดเพื่อให้ผู้เล่นที่เป็นมนุษย์มีโอกาสชนะ ด้วยการเพิ่มโค้ดของเกมอีกสองบรรทัด เราสามารถทำให้ Arduino เป็นไปไม่ได้ที่จะแพ้เกม แต่ชิป 2$, Arduino CPU จะเอาชนะสมองมนุษย์ได้อย่างไร? โปรแกรมที่เราพัฒนาขึ้นนั้นฉลาดกว่าสมองของมนุษย์หรือไม่?

ขั้นตอนที่ 4: อัลกอริทึมของเกม

อัลกอริทึมของเกม
อัลกอริทึมของเกม
อัลกอริทึมของเกม
อัลกอริทึมของเกม

เพื่อตอบคำถามนี้ ลองดูที่อัลกอริทึมที่ฉันใช้

คอมพิวเตอร์จะเล่นก่อนเสมอ การตัดสินใจครั้งนี้เพียงอย่างเดียวทำให้ Arduino ชนะเกมได้ง่ายขึ้นมาก การย้ายครั้งแรกมักจะเป็นมุม การย้ายครั้งที่สองสำหรับ Arduino ยังเป็นมุมสุ่มจากส่วนที่เหลือโดยไม่สนใจการเคลื่อนไหวของผู้เล่นเลย จากจุดนี้เป็นต้นไป Arduino จะตรวจสอบก่อนว่าผู้เล่นสามารถชนะในการย้ายครั้งต่อไปและบล็อกการเคลื่อนไหวนั้นได้หรือไม่ หากผู้เล่นไม่สามารถชนะได้ในการย้ายครั้งเดียว ผู้เล่นจะเล่นแบบมุมถ้ามีหรือสุ่มจากที่เหลือ เพียงเท่านี้ อัลกอริธึมอย่างง่ายนี้สามารถเอาชนะผู้เล่นที่เป็นมนุษย์ได้ทุกครั้งหรือในกรณีที่เลวร้ายที่สุด เกมจะส่งผลให้เสมอกัน นี่ไม่ใช่อัลกอริธึมเกม tic tac toe ที่ดีที่สุด แต่เป็นหนึ่งในวิธีที่ง่ายที่สุด

อัลกอริธึมนี้สามารถนำไปใช้กับ Arduino ได้อย่างง่ายดายเพราะเกม Tic Tac Toe นั้นง่ายมาก และเราสามารถวิเคราะห์และแก้ไขได้อย่างง่ายดาย หากเราออกแบบผังเกม เราสามารถค้นพบกลยุทธ์ที่ชนะและนำไปใช้ในโค้ดได้อย่างง่ายดาย หรือเราสามารถให้ CPU คำนวณผังเกมแบบเรียลไทม์และเลือกการเคลื่อนไหวที่ดีที่สุดได้ด้วยตัวเอง แน่นอนว่าอัลกอริธึมที่เราใช้ในเกมนี้ง่ายมาก เพราะเกมนี้เรียบง่ายมาก หากเราพยายามออกแบบอัลกอริธึมที่ชนะสำหรับหมากรุก แม้ว่าเราจะใช้คอมพิวเตอร์ที่เร็วที่สุด เราก็ไม่สามารถคำนวณแผนผังเกมได้ภายในพันปี! สำหรับเกมเช่นนี้ เราต้องการแนวทางอื่น เราต้องการอัลกอริธึมปัญญาประดิษฐ์และพลังการประมวลผลมหาศาล เพิ่มเติมเกี่ยวกับเรื่องนี้ในวิดีโอหน้า

ขั้นตอนที่ 5: รหัสของโครงการ

รหัสโครงการ
รหัสโครงการ

มาดูโค้ดของโครงการกัน เราต้องการห้องสมุดสามแห่งเพื่อรวบรวมรหัส

  1. Adafruit TFTLCD:
  2. Adafruit GFX:
  3. หน้าจอสัมผัส:

อย่างที่คุณเห็น แม้แต่เกมง่ายๆ แบบนี้ ก็ยังต้องการโค้ดมากกว่า 600 บรรทัด รหัสมีความซับซ้อน ดังนั้นฉันจะไม่พยายามอธิบายมันในบทแนะนำสั้นๆ ฉันจะแสดงให้คุณเห็นถึงการใช้อัลกอริทึมสำหรับการเคลื่อนไหวของ Arduino

ตอนแรก เราเล่นสองมุมสุ่ม

<int firstMoves={0, 2, 6, 8}; // จะใช้ตำแหน่งเหล่านี้ก่อนสำหรับ(counter=0;counter<4;counter++) //นับการเคลื่อนไหวแรกที่เล่น { if(board[firstMoves[counter]!=0) // การย้ายครั้งแรกมีการเล่นโดยใครบางคน { movePlayed++; } } do{ if(ย้าย<=2) { int randomMove =random(4); int c=firstMove[randomMove]; ถ้า (บอร์ด [c]==0) { ล่าช้า (1000); กระดาน[c]=2; Serial.print (firstMoves [randomMove]); Serial.println(); drawCpuMove (firstMoves [สุ่มย้าย]); ข=1; } }

ต่อไปในแต่ละรอบเราจะตรวจสอบว่าผู้เล่นสามารถชนะในการย้ายครั้งต่อไปหรือไม่

int checkOpponent()

{ if(board[0]==1 && board[1]==1 && board[2]==0) return 2; อื่น if(board[0]==1 && board[1]==0 && board[2]==1) return 1; อื่น if (board[1]==1 && board [2]==1 && board[0]==0) return 0; อื่น if (board[3]==1 && board[4]==1 && board[5]==0) return 5; อื่น if (board[4]==1 && board[5]==1&& board[3]==0) return 3; else if (board[3]==1 && board[4]==0&& board[5]==1) return 4; else if (board[1]==0 && board[4]==1&& board[7]==1) คืนค่า 1; อย่างอื่นส่งคืน 100; }

ถ้าใช่เราบล็อกการเคลื่อนไหวนั้นเกือบทุกครั้ง เราไม่ปิดกั้นการเคลื่อนไหวทั้งหมดเพื่อให้ผู้เล่นที่เป็นมนุษย์มีโอกาสชนะ คุณสามารถหาการเคลื่อนไหวใดที่ไม่ถูกบล็อก? หลังจากบล็อกการย้าย เราเล่นมุมที่เหลือ หรือย้ายแบบสุ่ม คุณสามารถศึกษาโค้ด และใช้อัลกอริธึมที่เหนือชั้นของคุณเองได้อย่างง่ายดาย คุณสามารถหารหัสของโครงการที่แนบมากับคำแนะนำนี้ได้เช่นเคย

หมายเหตุ: เนื่องจาก Banggood มีจอแสดงผลแบบเดียวกันโดยมีไดรเวอร์แสดงผลสองแบบที่แตกต่างกัน หากโค้ดด้านบนใช้ไม่ได้ ให้เปลี่ยนฟังก์ชัน initDisplay เป็นดังต่อไปนี้:

เป็นโมฆะ initDisplay()

{ tft.รีเซ็ต (); tft.begin(0x9341); tft.setRotation(3); }

ขั้นตอนที่ 6: ความคิดสุดท้ายและการปรับปรุง

ความคิดสุดท้ายและการปรับปรุง
ความคิดสุดท้ายและการปรับปรุง

อย่างที่คุณเห็น แม้แต่กับ Arduino Uno เราก็สามารถสร้างอัลกอริธึมที่ไม่มีใครเทียบได้สำหรับเกมง่ายๆ โครงการนี้ยอดเยี่ยมเพราะสร้างได้ง่าย และในขณะเดียวกันก็เป็นการแนะนำที่ดีเกี่ยวกับปัญญาประดิษฐ์และการเขียนโปรแกรมเกม ฉันจะพยายามสร้างโปรเจ็กต์ขั้นสูงด้วยปัญญาประดิษฐ์ในอนาคตโดยใช้ Raspberry Pi ที่ทรงพลังกว่า ดังนั้นคอยติดตาม! ฉันชอบที่จะได้ยินความคิดเห็นของคุณเกี่ยวกับโครงการนี้

กรุณาโพสต์ความคิดเห็นของคุณด้านล่างและอย่าลืมที่จะชอบผู้สอนถ้าคุณพบว่าน่าสนใจ ขอบคุณ!

แนะนำ: