สารบัญ:
- ขั้นตอนที่ 1: รับชิ้นส่วนทั้งหมด
- ขั้นตอนที่ 2: Touch Color Display ขนาด 2.8" สำหรับ Arduino
- ขั้นตอนที่ 3: สร้างโครงการและทดสอบ
- ขั้นตอนที่ 4: อัลกอริทึมของเกม
- ขั้นตอนที่ 5: รหัสของโครงการ
- ขั้นตอนที่ 6: ความคิดสุดท้ายและการปรับปรุง
วีดีโอ: เกม Arduino Touch Tic Tac Toe: 6 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
เพื่อนๆ ที่รัก ยินดีต้อนรับสู่บทช่วยสอน Arduino อื่น! ในบทช่วยสอนโดยละเอียดนี้ เราจะสร้างเกม Arduino Tic Tac Toe อย่างที่คุณเห็น เรากำลังใช้หน้าจอสัมผัสและเรากำลังเล่นกับคอมพิวเตอร์ เกมง่ายๆ อย่าง Tic Tac Toe คือบทนำที่ยอดเยี่ยมสำหรับการเขียนโปรแกรมเกมและปัญญาประดิษฐ์ แม้ว่าเราจะไม่ใช้อัลกอริทึมปัญญาประดิษฐ์ในเกมนี้ แต่เราจะเข้าใจว่าทำไมอัลกอริทึมปัญญาประดิษฐ์จึงมีความจำเป็นในเกมที่ซับซ้อนมากขึ้น
การพัฒนาเกมสำหรับ Arduino ไม่ใช่เรื่องง่ายและต้องใช้เวลามาก แต่เราสามารถสร้างเกมง่ายๆ สำหรับ Arduino ได้เพราะมันสนุก และมันจะช่วยให้เราสำรวจหัวข้อการเขียนโปรแกรมขั้นสูงเพิ่มเติม เช่น ปัญญาประดิษฐ์ มันเป็นประสบการณ์การเรียนรู้ที่ยอดเยี่ยม และในตอนท้าย คุณจะมีเกมที่ดีสำหรับเด็ก ๆ !
มาสร้างโครงการนี้กัน
ขั้นตอนที่ 1: รับชิ้นส่วนทั้งหมด
ชิ้นส่วนที่จำเป็นในการสร้างโครงการนี้มีดังต่อไปนี้:
Arduino Uno ▶
หน้าจอสัมผัสขนาด 2.8” ▶
ต้นทุนของโครงการต่ำมาก มันเป็นเพียง 15 $
ก่อนที่จะพยายามสร้างโปรเจ็กต์นี้ โปรดดูวิดีโอที่ฉันเตรียมไว้เกี่ยวกับหน้าจอสัมผัส ฉันได้แนบไว้ในคำแนะนำนี้ มันจะช่วยให้คุณเข้าใจรหัสและปรับเทียบหน้าจอสัมผัส
ขั้นตอนที่ 2: Touch Color Display ขนาด 2.8" สำหรับ Arduino
ฉันค้นพบหน้าจอสัมผัสนี้บน 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: รหัสของโครงการ
มาดูโค้ดของโครงการกัน เราต้องการห้องสมุดสามแห่งเพื่อรวบรวมรหัส
- Adafruit TFTLCD:
- Adafruit GFX:
- หน้าจอสัมผัส:
อย่างที่คุณเห็น แม้แต่เกมง่ายๆ แบบนี้ ก็ยังต้องการโค้ดมากกว่า 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 ที่ทรงพลังกว่า ดังนั้นคอยติดตาม! ฉันชอบที่จะได้ยินความคิดเห็นของคุณเกี่ยวกับโครงการนี้
กรุณาโพสต์ความคิดเห็นของคุณด้านล่างและอย่าลืมที่จะชอบผู้สอนถ้าคุณพบว่าน่าสนใจ ขอบคุณ!
แนะนำ:
เกม Python Tic Tac Toe: 4 ขั้นตอน
เกม Python Tic Tac Toe: เกม python tic tac toe เกมนี้สร้างขึ้นใน python ซึ่งเป็นภาษาคอมพิวเตอร์ ฉันได้ใช้โปรแกรมแก้ไข python ชื่อ: pycharm คุณยังสามารถใช้โปรแกรมแก้ไขโค้ด python ปกติได้อีกด้วย
เกม Tic-Tac-Toe อิเล็กทรอนิกส์ในกล่องไม้: 5 ขั้นตอน
เกม Tic-Tac-Toe อิเล็กทรอนิกส์ในกล่องไม้: สวัสดีฉันแนะนำเกม Tic-Tac-Toe ที่ตลกในฉบับใหม่ ฉันค้นหาเว็บสำหรับโครงการที่คล้ายกัน แต่แนวคิดที่นี่ไม่เหมือนใคร ฉันหวังว่า:) เริ่มกันเลย
เกม Microbit Tic Tac Toe: 4 ขั้นตอน (พร้อมรูปภาพ)
เกม Tic Tac Toe ของ Microbit: สำหรับโครงการนี้ เพื่อนร่วมงานของฉัน - @descartez และฉันได้สร้างเกม tic tac toe ที่ยอดเยี่ยมโดยใช้ฟังก์ชันวิทยุของ microbits หากคุณไม่เคยได้ยินเกี่ยวกับไมโครบิตมาก่อน ไมโครคอนโทรลเลอร์เหล่านี้เป็นไมโครคอนโทรลเลอร์ที่ยอดเยี่ยมที่ออกแบบมาเพื่อสอนการเขียนโปรแกรมสำหรับเด็ก พวกเขา
เกม 3D4x: 3D 4x4x4 Tic-Tac-Toe: 5 ขั้นตอน (พร้อมรูปภาพ)
เกม 3D4x: 3D 4x4x4 Tic-Tac-Toe: คุณเบื่อที่จะเล่น tic-tac-toe แบบเดิม ๆ ที่น่าเบื่อ 2 มิติหรือไม่? เรามีทางออกให้คุณ! ทิก-แทค-โท ใน 3 มิติ!!! สำหรับผู้เล่น 2 คน ในคิวบ์ 4x4x4 นี้ รับไฟ LED 4 ดวงติดต่อกัน (ในทิศทางใดก็ได้) แล้วคุณจะชนะ! คุณทำได้. คุณปลา
เกม Tic-Tac Toe แบบโต้ตอบควบคุมด้วย Arduino: 6 ขั้นตอน
เกม Tic-Tac Toe แบบโต้ตอบที่ควบคุมด้วย Arduino: เป้าหมายของโครงการ Tic-Tac-Toe ทางกายภาพคือการย้ายเกมที่มีชื่อเสียงเข้าสู่ขอบเขตทางกายภาพ เดิมทีเกมนี้เล่นโดยผู้เล่นสองคนบนแผ่นกระดาษ - โดยใส่สัญลักษณ์ 'X' และ 'O' สลับกัน ความคิดของเราคือการตรวจสอบพฤติกรรมของผู้เล่น