irpg Community
[advance]การทำเมนูคำสั่ง - Printable Version

+- irpg Community (https://irpg.in.th)
+-- Forum: irpg Fabella Game Maker Academia (https://irpg.in.th/forum-29.html)
+--- Forum: The Great Game Maker Library (https://irpg.in.th/forum-31.html)
+--- Thread: [advance]การทำเมนูคำสั่ง (/thread-741.html)



[advance]การทำเมนูคำสั่ง - arkman - 11-06-2012

ในเกมต่างๆที่เราเล่นนั้น จะมีตัวเลือกให้เลือกแบบต่างๆ เพื่อความหลากหลายของเกมที่เล่น
ตั้งแต่เมนูเข้าเกม เมนูคั่นเกม เมนูเลือกคำสั่งแบบเกมRPG ในวันนี้จะสอนวิธีสร้างเมนูจากเกมเมกเกอร์แบบง่ายๆกันครับ

วางแผนงานกันก่อนเลย...!
[Image: E410E1C0E190E200E320E1E01.jpg]

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

1.สร้างspriteขึ้นมา3อัน ได้แก่ New game Load game Exit game โดยสร้างอย่างละ2เฟรมคือ ไม่ถูกเลือก และถูกเลือก
และตั้งชื่อ sprite ง่ายๆ เช่น new load exit ดังรูป
*image 0 คืออันที่ไม่ได้เลือกตัวคำสั่งนั้น ส่วน image 1 คืออันที่ถูกเลือก
[Image: gmp001.png]

2.สร้าง object ขึ้นมา3อัน ห้ามตั้งชื่อซ้ำกับ sprite นะครับ เพราะตัวโปรแกรมจะสับสนในตอนเขียนโค้ด แต่ละอันให้มี event เป็น create ส่วนของ action เป็น
ดังนี้
newg -> image_single =1 ------------------>อันนี้เป็นตัวเลือกแรก
loadg -> image_single =0
exitg -> image_single =0
[Image: gmp002.png]
...ติดตามตอนต่อไปครับ


RE: [advance]การทำเมนูคำสั่ง - gol-a-khung - 11-07-2012

รอชมตอนต่อไป ขอบคุณครับ


RE: [advance]การทำเมนูคำสั่ง - arkman - 11-08-2012

3.สร้าง object อีกตัว ที่เป็นตัวควบคุมการเลือกของข้อหัว ในที่นี้ผมตั้งชื่อมันว่า choose1 หมายถึงการเลือก1
โดยเราจะกำหนด Event ให้กับมัน3อัน คือ กดup กดdown และ กดenter ดังรูป
[Image: gmp003.png]

ต่อไปจะเป็นการเขียนโค้ดล่ะครับ
4.เริ่มที่ event กดup ก่อนนะครับ ให้เขียนสคริปต์ดังนี้
[Image: gmp004.png]
อธิบายง่ายๆว่า เป็นการเปลี่ยน image_single ของแต่ละ objectที่เลือก เป็นการเรียงลำดับแบบย้อนกลับทุกครั้งที่กดปุ่ม
ลูกศรบน
newg--->exitg--->loadg--->วนลูป

5.ส่วนของ event กดdown ให้เขียนสคริปต์ดังนี้
[Image: gmp005.png]
อธิบายง่ายๆว่า เป็นการเปลี่ยน image_single ของแต่ละ objectที่เลือก เป็นการเรียงลำดับแบบไปข้างหน้าทุกครั้งที่กดปุ่ม
ลูกศรล่าง
newg--->loadg--->exitg--->วนลูป

6.และส่วนของ event กด enter หรือก็คือ การเลือกคำสั่งโดยกดปุ่ม enter นั่นเอง ให้จัดวางรูปแบบดังนี้
[Image: gmp006.png]
อธิบายได้ว่า เมื่อกด enterตอนที่ newg มี image_singleเป็น1(ถูกเลือกอยู่) ก็จะทำการไปที่ฉาก(room)ต่อไป
เมื่อกด enterตอนที่ loadg มี image_singleเป็น1(ถูกเลือกอยู่) ก็จะทำการโหลดเกม(ตามชื่อไฟล์ที่เซฟเกม)
เมื่อกด enterตอนที่ exitg มี image_singleเป็น1(ถูกเลือกอยู่) ก็จะออกจากเกม

7.สร้างฉาก(room) เพื่อจัดวางobject เมนูคำสั่ง ซึ่งจะจัดวางยังไงก็ได้ จะตรง เฉียง เอียง หรือจัดวางเป็นสามเหลี่ยมก็ได้ อิๆ แต่ควรวางให้ครบทั้ง4ตัว มีเช่นนั้นอาจจะเกิด eror ได้
[Image: gmp007.png]

แล้วก็จะได้เมนูเข้าเกมมาใช้งานแล้ว เย้!!!

วิธีนี้สามารถทำหัวตัวเลือกได้หลากหลาย ทั้งหัวขนนก หัวสามเหลี่ยม หัวรูปมือ(แบบที่เกมไฟนอลฯใช้กัน) หรือเล่นสีสันกับตัวเลือกได้ตามสบาย
ข้อเสียวิธีนี้คือ ใช้ objectค่อนข้างเยอะ และถ้าใช้ตัวเลือก2ตัว แบบ 'ใช่' 'ไม่ใช่' แนะนำให้ลองใช้การกดป่มแบบ2ตัวเลือก เช่น y:yes n:no ดีกว่า เพราะจะประหยัดobject


ข้อแนะนำ
1.ตอนที่ทำการกำหนดปุ่ม newgให้ไปฉากต่างๆ แนะนำว่าให้ทำฉากนั้นให้เสร็จก่อน ค่อยกำหนดให้เชื่อมไปฉากนั้น
เพราะถ้าโปรแกรมพบว่า ฉากที่จะข้ามไปไม่มี ก็จะ eror
2.เขียนชื่อรีซอร์สอย่าซ้ำกัน ใกล้เคียงได้ และเลี่ยงที่จะใช้ชื่อเดียวกันกับฟังค์ชั่นในการเขียนโค๊ด เช่น if else exit เป็นต้น


RE: [advance]การทำเมนูคำสั่ง - Holy_Master - 11-08-2012

โอ๊ะ เยี่ยม ผมกำลังคิดอยุ่เลยว่าจะทำ Menu เปลี่ยนอาวุธในเกมยังไงอยู่พอดี ขอบคุณมากสำหรับ tutorial นี้ครับ ^^