ติดตามเราได้ที่ Facebook ชื่อเพจ Planila Game Developer
ตั้งกระทู้ในหมวด Completed Project เพราะจุดประสงค์หลักคือการแจกเกมพร้อม source code ส่วนการสอนอธิบายนั่นเป็นแค่สิ่งที่เพิ่มเติมมา (ถึงแม้จะยาวก็เถอะ
)
นักสร้างเกมมือใหม่หลายคนศึกษาวิธีสร้างเกมมากมาย อ่านมาหลายตำราหลายทฤษฎี แต่กลับพบว่าหลายคนยังสร้างเกมด้วยตนเองไม่ได้สักที ถ้าคิดว่าแค่อ่านตำราให้มากเพียงอย่างเดียวแล้วจะสร้างเกมเป็น ผลลัพธ์ก็ออกมาให้เห็นแล้วว่าไม่จริง การสร้างเกมรวมทั้งการเขียนโปรแกรมมีฐานเป็นสองเสาหลักได้แก่การใช้งาน (ความรู้ด้านภาษาคอมพิวเตอร์, ความรู้ด้านการใช้โปรแกรม, ทฤษฎีต่าง ๆ ฯลฯ) และอัลกอริทึม ถ้าไม่สามารถแปลงความคิดในหัวให้เป็นอัลกอริทึมได้ก็ไม่สามารถสร้างเกมได้อย่างที่ต้องการ ผู้เขียนแนะนำให้นักสร้างเกมมือใหม่ฝึกเรื่องการออกแบบอัลกอริทึมให้คล่อง สำหรับบทความในชุดนี้ไม่ได้เขียนมาเพื่อสอนพื้นฐานหรือฝึกอัลกอริทึมของผู้อ่าน จุดประสงค์ของบทความชุดนี้คือการอธิบายอัลกอริทึมจาก source code จริงของเกมต่าง ๆ ผู้อ่าน
ไฟล์ TicTacToe.zip (ลิงค์ดาวน์โหลดอยู่ท้ายบทความ) ประกอบด้วย source code 3 ชุดได้แก่
- Java
- Visual Basic (VB)
- RPG Maker VX Ace (RMVXA)
Source code ทั้งสามชุดมีอัลกอริทึมเหมือนกัน ต่างกันเพียงความสามารถของแต่ละภาษาหรือโปรแกรม ผู้อ่านสามารถเลือก source code ใดก็ได้
ภาพรวมอัลกอริทึม
ก่อนสร้างเกมอะไรขึ้นมาต้องแปลงความคิดในหัวให้เป็นอัลกอริทึมคร่าว ๆ ก่อน ในตัวอย่างนี้จะออกแบบอัลกอริทึมคร่าว ๆ ดัง flowchart ข้างบน ผู้อ่านต้องเข้าใจอัลกอริทึมข้างต้นให้ชัดเจนก่อนลงมือสร้างเกม เพื่อให้เห็นแนวทางว่าเกมทำงานได้อย่างไร ต้องออกแบบเกมอย่างไร มีหน้าตาอย่างไร เขียนโค้ดอะไรบ้าง
สำหรับอัลกอริทึมคร่าว ๆ นี้จะใส่เพียงแค่สิ่งที่จำเป็นจริง ๆ ในการทำงานของเกม ไม่ลงลึกถึงการเขียนโปรแกรม จะเห็นว่ามีบอกแค่ให้ตรวจสอบ "ชนะแล้ว" และ "เสมอแล้ว" ไม่ได้บอกว่าการชนะหรือการเสมอนั้นเป็นอย่างไร ส่วนตัวแปร player ที่ใส่มาในอัลกอริทึมคร่าว ๆ นี้เป็นสิ่งที่ขาดไม่ได้เพราะเป็นตัวแปรที่เก็บค่าว่าตอนนี้เป็นตาของฝ่าย X หรือเป็นตาของฝ่าย O
ข้างล่างนี้จะเป็นอัลกอริทึมแบบละเอียด ซึ่งนำอัลกอริทึมคร่าว ๆ ข้างบนมาออกแบบให้ละเอียดขึ้น และนำไปใช้งานจริงได้
อธิบายอัลกอริทึมพร้อมตัวอย่าง
1. ออกแบบส่วนแสดงผลที่เป็นกราฟฟิก (Graphic User Interface: GUI) ในตัวอย่างนี้ RMVXA ออกแบบให้แสดงภาพตั้งต้นซึ่งเป็นภาพว่างสีส้มจำนวน 3 x 3 ภาพในแนวตั้งและแนวนอน และแสดงภาพสีน้ำเงินที่โปร่งแสงบางส่วนเพื่อใช้เป็นเคอร์เซอร์ (cursor) ส่วน Java และ VB ออกแบบเป็นปุ่มกด (button) จำนวน 3 x 3 ปุ่มในแนวตั้งและแนวนอน สำหรับภาษา Java ต้องใช้คลาสเพิ่มเติมในการแสดงหน้าต่างแบบ GUI ในตัวอย่างนี้เลือกใช้ JavaFX ในการสร้าง GUI
การเขียนโปรแกรมบางภาษา เช่น Java, C ต้องใช้คลาสพิเศษในการสร้าง GUI ซึ่งอาจยากสำหรับนักสร้างเกมมือใหม่ ถ้าไม่ต้องการออกแบบเกมแบบ GUI สามารถออกแบบเป็น command line ดังรูปข้างล่างแทนได้ แม้ว่าจะไม่สวยงามแต่ก็เขียนโปรแกรมได้ง่ายกว่า และเหมาะสมสำหรับการฝึกอัลกอริทึมสำหรับนักสร้างเกมมือใหม่ เพราะไม่ต้องเสียเวลาศึกษาและออกแบบ GUI
......
นี่เพิ่งแค่ 40% ของบทความนี้เท่านั้น บทความฉบับเต็มมีเยอะกว่านี้อีก!
เนื่องจากติดปัญหาเรื่องนโยบายการเผยแพร่บทความ ทำให้เราไม่สามารถเผยแพร่บทความเต็มและ source code ลงในเว็บนี้ได้ อ่านฉบับเต็มได้ที่บทความต้นฉบับ (ไม่มีค่าใช้จ่าย)
บทความต้นฉบับ https://planila.blogspot.com/2019/06/sou...oe-ai.html