บทความนี้จะวิเคราะห์ระบบ AI ของเกมงูโดยอิงจากโปรเจกต์ GitHub: dhillyon/snake-ai ซึ่งใช้ Dijkstra Algorithm ในการหาทางจากหัวงูไปยังแอปเปิ้ล โดยมีการจัดการสถานการณ์ต่าง ๆ อย่างชาญฉลาด เช่น การหาเส้นทางที่ปลอดภัยที่สุดเมื่อไม่สามารถไปหาแอปเปิ้ลได้ทันที


บทนำเกี่ยวกับเกมงูและ AI

เกมงู (Snake) เป็นเกมคลาสสิกที่ผู้เล่นควบคุมงูให้กินแอปเปิ้ลและยาวขึ้นเรื่อย ๆ โดยไม่ชนกับตัวเองหรือตีกรอบจอ ในโปรเจกต์นี้ AI จะควบคุมงูโดยอัตโนมัติ เพื่อให้มันสามารถอยู่รอดและกินแอปเปิ้ลได้มากที่สุด

AI ในโปรเจกต์นี้ใช้ Dijkstra Algorithm เพื่อหาทางที่สั้นที่สุดจากหัวงูไปยังแอปเปิ้ล โดยจะอัปเดตเส้นทางใหม่ทุกครั้งที่เกมรันในแต่ละเฟรม


รายละเอียดเกี่ยวกับ AI Code ว่าทำงานอย่างไร

ในแต่ละเฟรมของเกม (หรือเรียกว่า tick) จะมีขั้นตอนการทำงานของ AI ดังนี้:

  1. ค้นหาเส้นทางที่สั้นที่สุด จากหัวงูไปยังแอปเปิ้ล โดยใช้ Dijkstra Algorithm
  2. จากเส้นทางที่ได้ (ไม่ว่าจะสั้นที่สุดหรือยาวที่สุด) จะนำตำแหน่งของ cell แรกในเส้นทางนั้นมาคำนวณทิศทางใหม่ที่งูควรเคลื่อนที่ โดยใช้สูตร:
snake_dir = (path[0][0] - snake[0][0], path[0][1] - snake[0][1])

ซึ่ง:

  1. จากนั้นงูจะเคลื่อนที่ไป 1 ช่องตามทิศทางที่คำนวณได้จาก snake_dir

การคำนวณใหม่นี้จะเกิดขึ้นทุกเฟรม ทำให้ AI ตอบสนองต่อสถานการณ์ในเกมแบบเรียลไทม์


อธิบายโค้ดว่าทำงานอย่างไร รับแล้วจะได้ผลอย่างไร

ตัวอย่างฟังก์ชันสำคัญใน AI คือ move_snake() ซึ่งจะรับผลลัพธ์จาก Dijkstra แล้วนำไปหาทิศทาง: