แนะนำเกมหมากฮอสและหมากหนีบ จากวิชา Object Oriented Design พร้อม Source Code
สวัสดีครับ ต่อเนื่องกันเลย จากบทความที่ผ่านมา จะเห็นว่าผมได้นำผลงาน โปรเจคที่ได้ทำมาตอนเรียนออกมาเขียนเป็นบทความเรื่อยๆ เพราะ ไม่อยากเก็บไว้ปล่าวๆ เอามาเป็นแนวทางให้คนที่สนใจดีกว่า บทความนี้ก็เช่นกัน ผมจะมารีวิว แนะนำเกี่ยวกับเกมหมากฮอส หมากหนีบ เป็นโปรเจคในวิชา Object Oriented Design ครับ เกมนี้ผมแจกเป็น open source ไปเลย เผื่อมีคนสนใจ เอาไปปรับปรุงต่อ โดยวิชา OOD เป็นวิชาที่เน้นเกี่ยวการออกแบบในเชิงวัตถุ วิชานี้ อาจารย์ได้สอนทฤษฎีแล้วก็ให้ทำโปรเจคไปพร้อมๆกัน พอท้ายเทอมก็นำเสนอครับ เป็นวิชาที่สนุกและท้าทายวิชาหนึ่งเลย หากใครมีโอกาสเรียนก็ขอให้ตั้งใจเรียนเลยนะ เพราะการทำงานอาจใช้เยอะมาก
(บทความนี้รูปเยอะหน่อยนะครับ)
ดาวน์โหลด
การพัฒนา
โปรเจคนี้เป็นโปรแกรมในรูปแบบของเกม เป็น Visual studio project พัฒนาด้วย .NET C# แบบ Windows Form Application โดยมีฟีเจอร์หลักๆคือ สามารถเล่นได้ 2 คนได้ สลับๆกันเดิน ตามแผนคือมีแค่นี้ แต่ผมอยากจะเขียน AI ด้วย แบบโง่ๆก็ได้ กล่าวคือเล่นกับคอมพิวเตอร์นี่แหละ แต่ว่าตอนที่ทำโปรเจคอยู่นี้ ผมยังไม่เคยเรียนเกี่ยวกับ AI ด้วยซ้ำ เลยไปถามคนใน pantip ดู ก็ได้เรื่องอยู่บ้างละ จนพอเข้าใจคอนเซ็ป แต่ด้วยระยะเวลาจำกัด และสำหรับผมเอง มันก็ยากมาก จนสุดท้ายหมากหนีบได้ AI แบบโง่ๆมาเล่นได้ แต่หมากฮอสทำ AI ไม่สำเร็จ
เริ่มต้น
โปรเจคที่ผมทำในวิชา OOD เป็นเกมหมากฮอสกับหมากหนีบ แบบ 2 in 1 ในโปรแกรมเดียว เปิดโปรแกรมเดียว เล่นได้สองเกมเลย กติกาของเกมก็คือ หมากฮอส กับหมากหนีบปกตินี่แหละ แต่ในตัวเกมมีมากกว่านั้น เดี๋ยวเรามาดูกันครับ
เปิดเกมขึ้นมาจะเป็นหน้าจอ เมนูแบบนี้ (UI อาจจะดูแย่หน่อยนะ ทำได้เท่านี้แหละ)
ก็มีเล่นเกม โหลดเซฟ ตั้งค่า มีสอนเล่นด้วย แล้วก็มีเมนูสร้างกระดานครับ
เมนูเล่น
พอเข้าเมนู PLAY มาจะเจอหน้าแบบนี้ เห้ยทำไม มันขึ้น “this feature is not support” ล่ะ นั่นก็เพราะ เรายังไม่ได้ติดตั้ง Map นั่นเอง ผมหมายถึงกระดานน่ะ ซึ่งตรงนี้ผมดันทำแบบงูๆปลาๆ ซึ่งมันไม่ใช่ best practise เกี่ยวกับเกมที่ใช้ local storage
ติดตั้งกระดาน
ผมมักจะเรียกกระดานในเกมนี้ว่า Map
ผมเขียนแผนที่หรือกระดานหมากเอาไว้เป็น XML ไฟล์ แล้วบันทึกใน Local App ดังนั้นเราต้องเอาไฟล์ไปไว้ตาม path ที่กำหนด (ที่จริงน่าจะมีวิธีที่ดีกว่านี้)
ดาวน์โหลด Map (หรือที่ท้ายบทความ)
https://benzneststudios.com/blog/wp-content/uploads/2016/04/boardator_map.rar
นำไฟล์ทั้งหมดไปไว้ในโฟลเดอร์นี้
C:\Users\ชื่อคอมพิวเตอร์\AppData\Local\boardatorMoreMap
เอาไฟล์กระดาน (Map) ไปไว้ใน path นี้ จะได้ดังรูป
ลองเข้าเกมใหม่อีกครั้ง จะพบว่า มีกระดานมาให้เล่นเรียบร้อยแล้ว มีทั้งหมากฮอสหมากหนีบ โดยกระดานมี 2 ขนาด คือ 8×8 12×12 เล่นให้จุใจไปเลย มีแบบ 1 แถว 2 แถว (ไม่ใช่รถนะ) แล้วก็แบบที่ฝรั่งเล่นคือ 3 แถว แล้วก็มีแบบอื่นๆอีกพอสมควร
สามารถเลือกเปลี่ยนสีกระดานได้ตามใจได้ มีกำหนดให้ 15 สี แต่ละกระดานก็จะมีหมากเริ่มต้นต่างกัน อย่างกระดานนี้ คือ Professional Dream เป็นดังรูป เริ่มต้นก็มีฮอสให้ สู้กันมันส์เลย
ส่วนกระดานนี้เป็นกระดาน The Matrix super star เป็นแบบ 12×12 และเริ่มต้นหมากก็วางแบบแปลกๆด้วย อย่าพึ่ง งง
มาดูกระดานหมากหนีบบ้าง อาจจะมีให้เลือกน้อยกว่าหมากฮอส แต่เล่นได้จุใจอยู่ละมั้ง
มาลองเล่นกันครับ เลือกแผนที่ กระดาน เลือกสี เสร็จแล้วก็กดที่ปุ่ม Play จากนั้นเราก็มาเลือกกันว่าใครจะเล่นก่อน (ภาษาอังกฤษอาจจะผิดเล็กน้อย) มีให้เลือกสุ่มด้วย
ลองเล่นหมากฮอส
ผมจะเล่นหมากฮอสละกัน กติกาการเล่นคงทราบดีอยู่แล้ว คือสลับกันเดิน แต่เกมของผมนี้มีให้เลือกข้ามตาได้ด้วย คือ skip turn แต่สำหรับใครที่ไม่อยากให้มีข้ามก็ไปปิดได้ เดี๋ยวจะพาไปดูอีกที ลองเล่นดูก่อนนะ หน้าตาแรกของกระดานเป็นแบบนี้
เดิน
Player 1 ได้เดินก่อน ซึ่งคือ ผู้เล่นด้านบน เมื่อคลิกที่หมาก ก็จะแสดงช่องที่เดินได้ พอกดแล้วมันก็จะเดินไปช่องนั้น ถ้าจะยกเลิกก็กดที่อื่นนั่นเอง
สังหารศัตรู
เดินไปเดินมา มันก็ต้องมีกินกัน ฆ่ากันแบบนี้ ตอนกินหมากศัตรูใเกมมีเสียงด้วยนะ ตึ๊กย๊าก !!
บังคับกิน
หลายคนสงสัย หมากฮอสมันมีบังคับกินด้วยนะ แน่นอนผมก็ชอบเล่นแบบบังคับกันเหมือนกัน มันก็ต้องบังคับสิ โดยโหมดบังคับกินนี้สามารถไปปิดได้ที่เมนูตั้งค่า แต่มันจะเปิดเป็นค่าเริ่มต้น ดังนั้นถ้าเราบังคับกิน แล้วไม่ยอมกินก็ไม่ได้นะ จะเดินหนีเรอะ ไม่ได้ๆๆ
การกินต่อเนื่อง
หากมีฝีมือละก็ เราก็จะหลอกล้อ แล้วก็สามารถสังหารได้มากกว่า 1 ตัวในคราวเดียวได้ 2 3 4 5 ก็ทำได้ทั้งนั้น
เข้าฮอสก็จะเทพขึ้น
พอเราเดินถึงจุดหมายเราจะเทพขึ้นทันที โดยมันเดินได้สุดกระดานแบบนี้เลย
การกินต่อเนื่องของฮอส
กระดานที่แล้วเผลอกินเยอะไปหน่อยเลยไม่มี กินต่อเนื่องของฮอสให้ดูเลย มาเริ่มตาใหม่ละกัน อันนี้เป็นการกิน 3 ต่อของฮอสเลย
จบเกม
จบเกมก็จะขึ้นว่า ใครชนะ แล้วก็มีให้เลือกคือเล่นกระดานเดิมอีกรอบ หรือจะกลับเมนู
กระดาน 12×12
กระดานอีกขนาดคือ 12×12 ให้เดินกันจุใจสุดๆไปเลย เดินกันเต็มที่ ได้ทั้งหมากฮอสหมากหนีบ
เมนูระหว่างเกม
ระหว่างเล่น ถ้าเรากดที่ MENU ก็จะมีหน้าต่างขึ่นมาแบบนี้ เดี๋ยวมาดูแต่ละเมนูกันเลยว่าทำอะไรได้บ้าง
ตั้งค่าระหว่างเกม
กดที่ SETTING ก็จะมาหน้านี้ คือสามารถปิด-เปิด เสียงแอฟเฟคได้ ตู๊มต๊าบ ไรนี่แหละ แต่จะเห็นว่าพวกบังคับกินแก้ไขไม่ได้ ต้องไปแก้ไขที่ตั้งค่าเมนูหลักนอกเกมเท่านั้น
แถบเมนูย่อยอีกอันคือ แก้ไขรูปหมากได้ เผื่อบางคนเบื่อหมากแบบดั่งเดิมของเกมก็เปลี่ยนได้ตามใจชอบเลย เลือกอันเดียวกันไม่ได้นะ เดี๋ยวผมจะลองเลือกแบบใหม่ดูนะ
เปลี่ยนเป็นหมากใหม่ทันที สวยงามดีทีเดียว
บันทึกเกม
หากเราเลือก SAVE ก็จะมาหน้าบันทึกเกม ก็ใส่ชื่อที่จะบันทึกลงไปแล้วกด save ได้เลย เอาไว้โหลดมาเล่นทีหลังได้
โหลดเซฟเกม
หากเราเลือก LOAD เราก็จะสามารถโหลดเซฟที่เราเคยเล่นมาเล่นต่อได้เลย ไม่มีสะดุด ซึ่งการโหลดนี้เราสามารถเปลี่ยนสีกระดานได้ด้วย
ลองเล่นหมากหนีบ
หมากหนีบเป็นหมากที่เล่นง่ายกว่าหมากฮอส (ละมั้ง) แต่หลายคนก็เล่นไม่เป็นแหะ สงสัยไม่ค่อยนิยม กติกาคือ มันเดินแนวตรงแบบนี้
การกินของหมากหนีบ
อธิบายค่อนข้างยาก ต้องลองเล่นดู แต่เดี๋ยวผมมีโหมดสอน ไปดูกันเลยที่ TUTORIAL
โหมดสอนเล่น
ผมทำโหมดสำหรับสอนเล่นด้วยทั้งหมากหนีบกับหมากฮอสเลย
หลักๆคือสอนคร่าวๆ โดยให้ผู้เล่นลองกดๆ เล่นตามที่กำหนดเลย รับรองเข้าใจแน่ โดยหมากฮอสมี 5 chapter
สอนเล่นหมากหนีบ ก็มี 5 chapter
ตั้งค่าเกม
เมนูตั้งค่าที่นอกเกมจะสามารถปรับ บังคับกินได้ทั้งหมาฮอสกับหมากหนีบจะแยกกัน แล้วก็สามารถกำหนดจำนวนครั้งที่ข้ามตาได้ด้วย สูงสุด 6 ครั้ง
โหมดสร้างกระดาน
เมนู BOARD EDITOR เราสามารถสร้างกระดานได้เลย โดยสร้างได้ทั้ง หมากฮอสและหมากหนีบ ทั้งขนาด 8×8 12×12
วิธีการก็คือ คลิกที่ Item ด้านล่างและไปคลิกในตาราง ผู้เล่นที่ 1 คือสีแดง จะอยู่ด้านบนของกระดาน ส่วนสีเขียวคือ ผู้เล่นที่ 2 จะอยู่ด้านล่างกระดาน และ r คือ หมากธรรมดา s คือ หมากฮอส
หมากหนีบก็สามารถสร้างได้ แต่ว่าหมากหนีบไม่มีฮอส ดังนั้นใส่อะไรไปมันก็เป็นหมากธรรมดาอยู่ดีแหละ
พอทำเสร็จแล้วจนพอใจก็กดปุ่ม Export เพื่อบันทึก ก็ใส่ชื่อที่ต้องการและกด save ได้เลย
แล้วเราก็สามารถโหลดกระดานที่เราสร้างไว้มาเล่นได้เลย เย้
จบแล้ว
รีวิวยาวมาก รูปเยอะไปหน่อยนึง ขออภัยด้วยครับ โปรเจคนี้เป็นโปรเจคนึงที่ผมคิดว่า ผมทุ่มเวลาไปมากทีเดียว มันได้อะไรกลับมามากกว่าที่คิดเมื่อเราได้ลงมือนั่นแหละ เบื้องหลังออกแบบตามหลัก OOD ด้วยละ มีพวก Activity Diagram , Usecase, Usecase spec , Sequence Diagram, Class Diagram เต็มไปหมด แก้กันหลายรอบเลย ผิดๆถูกๆ ถือว่าสนุกและท้าทายมากครับ หวังว่าโปรแกรมเกมหมากฮอสและหมากหนีบแบบ 2 in 1 นี้ จะมีประโยชน์สำหรับคนที่ต้องการแนวทางทำโปรแกรมลักษณะนี้ครับ
ปล. DraughtMaster , Boardator คือ ชื่อโปรแกรมขณะพัฒนา
ดาวน์โหลด Source Code (VS project + .exe + Map)
https://github.com/benznest/MakHorse-MakNeeb
ดาวน์โหลดเฉพาะ Map (.rar)
https://benzneststudios.com/blog/wp-content/uploads/2016/04/boardator_map.rar
ดาวน์โหลดเฉพาะตัวเกม (.exe)
ขอขอบคุณ อาจารย์อารีรัตน์ ตรงรัศมีทอง อาจารย์ผู้สอนวิชา OOD ที่ปรึกษาโปรเจคและให้คำแนะนำครับ