แสดงบทความที่มีป้ายกำกับ Instance Variables แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ Instance Variables แสดงบทความทั้งหมด
วันอังคารที่ 27 กันยายน พ.ศ. 2559
Construct 2 : ปุ่มเดียว เสียวทุกเมนู
วันนี้มาในแนวเสียวๆ ครับ ไม่ใช่อะไรหรอกครับ ไปเจอน้องคนหนึ่ง เขาเอาโปรแกรม Construct 2 ที่สร้างเกมมาให้ดู บอกว่า ตัวอย่างเขาทำปุ่มเป็น family แต่อยากเลียนแบบบ้าง แต่ของเรามันของฟรี จะไปทำอะไรเสียวๆ แบบเขาก็ไม่ได้ ผมก็เลยขำก๊ากเลยทีเดียว ที่แท้ก็อยากทำเสียวแบบเขานั่นเอง เลยเป็นที่มาของชื่อบทความในวันนี้
อันที่จริงแล้ว การสร้างปุ่มในลักษณะของ family นั่น มีจุดประสงค์เพื่อให้สามารถสั่งงานเมื่อคลิกปุ่มด้วยคำสั่งหรือ event เดียว ให้ครอบคลุมการทำงานของปุ่มทุกปุ่ม แล้วทำไมต้องรวมกลุ่มแต่ละปุ่มแต่ละปุ่มไว้ด้วยกันล่ะ ผมจะยกตัวอย่างให้ดูว่า ถ้าแยก จะต้องเขียนคำสั่งมากขนาดไหน
จะเห็นว่า แต่ละปุ่มก็ต้องใช้คำสั่งควบคุมเฉพาะตัว หากมีปุ่มจำนวนมาก คำสั่งก็จะมากไปด้วย หากใช้ปุ่มแบบ family นั้น จะใช้คำสั่งสำหรับเรียกใช้งานแค่คำสั่งเดียว แต่ผมจะไม่ขอยกตัวอย่างการใช้งานไว้ในบทความนี้ เพราะเรื่องของ family นั้น ไม่ใช่ของฟรี ที่จะใช้งานได้ทั่วไป ผมจึงของนำเสนอวิธีการที่จะใช้ของฟรี แต่ทำให้หรู ดูดีแบบเสียตังค์กัน
สิ่งที่ต้องรู้ก่อนที่จะทำตามเนื้อหาในบทความนี้
1. การทำ sprite แบบ animation คลิกกลับไปอ่านบทความ
2. การใช้งาน function ในโปรแกรม Construct 2 (ค้นหาอ่านจาก google ก่อนนะครับ ยังไม่ได้เขียน)
ลงมือกันเลย
ขั้นแรก ให้รวมเมนูต่าง ๆ เข้าเป็นปุ่มเดียวในลักษณะของ animation ก่อนนะครับ กำหนด speed ของ animation เป็น 0 เพื่อไม่ใช้ animation ของปุ่มทำงาน
นำปุ่มมาวางในหน้าเกม ตามจำนวนปุ่มหรือเมนูที่ต้องการ และกำหนด instance variable ให้กับปุ่ม เพื่อใช้แสดงภาพ frame ปุ่มตามค่าของ buttonID เปลี่ยนค่าไปเรื่อยๆ ตามหมายเลขของภาพใน frame ของ animation
กำหนดค่าให้แสดงปุ่ม เมื่อเริ่มทำงานทุกครั้งที่ load layout
เมื่อทดสอบการทำงานของปุ่มที่วางไว้ แสดงผลถูกต้องตามต้องการ ขั้นต่อไป ต้องเพิ่ม instance variable อีกหนึ่งตัว เพื่อใช้เก็บค่าชื่อ function ที่จะถูกเรียกใช้เมื่อปุ่มถูกคลิกให้ทำงาน
เปลี่ยนค่าของ instance variable ให้เป็นชื่อ function ที่ต้องการเรียกใช้ ตรงตามปุ่มแต่ละปุ่ม
กำหนดคำสั่งสำหรับการทำงาน เมื่อคลิกที่ปุ่มต่าง ๆ ที่เราได้วางไว้ในเกมแล้ว โดยอาศัยการทำงานคุณสมบัติของ Function คือ Function.Call โดยอาศัยชื่อ function ที่ส่งมาจากค่า instance variable ที่ชื่อ callback
ถ้าปุ่มที่กด เป็นค่า playback การทำงานของ function "callback" จะไปเรียกใช้งาน function "playback" อีกต่อหนึ่ง
เป็นอันเรียบร้อย เขียนการทำงานของ function ให้ครบทุกปุ่ม แค่นี้ ปุ่มเดียวของเราก็ทำเสียวไปได้ทุกเมนูแล้วครับ ไม่ต้องใช้คุณสมบัติของ family ก็สามารถทำงานได้เช่นเดียวกัน ขอให้สนุกกับการสร้างเกมนะครับ
วันเสาร์ที่ 9 เมษายน พ.ศ. 2559
Action RPG ตอน 1
มีเพื่อน สอบถามเข้ามาว่า เราจะมีแนวทางสร้างเกมแบบคลาสสิก ประเภทสวมบทบาท และออกต่อสู้ ตีให้ตาย ได้ค่าประสบการณ์ มีของหล่น เก็บเอาไปขาย หรือตีแล้วได้พลังงานชีวิต ได้พลังฟื้นฟู เกมแนวนี้สมัยก่อนมีเยอะมากครับ เกม diablo สมัยก่อน (รุ่นเก๋า ตีกันทั้งคืน) พอมายุคนี้อยากจะลองทำด้วย construct 2 ดูบ้าง ก็ไม่ยากครับ แต่จะขอแนะนำแนวทางการออกแบบเกมและการสร้างเกมบางส่วน
ที่มา : https://en.wikipedia.org/wiki/File:Diabloscreen.jpg
ในตอนที่ 1 นี้ เรามาออกแบบคุณลักษณะของตัวละครของเราก่อนนะครับ การออกแบบตัวละครในเกม construct 2 นี้ ต้องคิด วางแผน ให้ครบถ้วน ว่าตัวละครของเราทำอะไรได้บ้าง เขียนรวมๆ เอาไว้ จะช่วยสร้างกรอบความคิดของเราได้ดี ตัวละครที่ผมจะสร้างนี้ต้องทำสิ่งเหล่านี้ได้
1. มีพลังชีวิต หรือที่เราเรียกว่า Health มีพลังชีวิตแสดงว่าอะไร แสดงว่าโดนตีแล้วตายได้ครับ แบบนี้เล่นเกมไม่ระวัง ตายได้ (นี่แหละความสนุกของเกมแนวต่อสู้ มันเหมือนชีวิตจริงเสียนี่กระไร) พลังชีวิต หรือ Health จะลดลง เมื่อถูกทำร้าย และสามารถเพิ่มได้เมื่อเราเก็บขวดพลังชีวิตมาใช้
2. มีกำลังที่จะช่วยให้ต่อสู้ได้ยืนนาน หรือ stamina พูดง่ายๆ แบบบ้านๆ คือ ค่าความอดทนนั่นเองครับ ตัวละครตัวไหนมีเยอะ ก็จะตีได้ต่อเนื่อง ไม่เหนื่อยง่าย ถือของหนักๆ ได้ ดาบเล่มใหญ่ๆ วิ่งได้นานๆ ตัวละครตัวไหนมีน้อย วิ่งไปก็เหนื่อย ต้องหยุดพัก แวะดื่มน้ำกันบ่อยๆ ตีศัตรูไม่ทันไหร่ก็เหนื่อย ต้องวิ่งออกมาพัก
3. มีเป้ใส่ของ แน่นอนครับ วิ่งไปตีชาวบ้านเขา ได้ของมาก็ต้องมีเป้ใส่ของ แต่ตามจริง เป้เราไม่ได้ใหญ่ ดังนั้น ขนาดของเป้ก็จะต้องถูกกำหนดเอาไว้ ว่าใส่ของได้กี่หน่วย เลือกของใส่ และทิ้งของได้
4. เปลี่ยนอาวุธได้ อันนี้ทำให้เราเก่งขึ้น เก็บอาวุธใหม่ๆ มาใช้สู้รบ ถ้าเป็นเกมยิงกัน ก็เปลี่ยนปืนได้นั้นเอง บางทีก็อยากใช้มีด เดินไปเชือดเงียบๆ ถ้าเกมตี บางทีก็เปลี่ยนดาบเป็นค้อน ทำให้เราทำภารกิจได้สำเร็จ และเล่นจนจบเกมได้อย่างสนุก แต่บางครั้งก็ไม่เสมอไปครับ สมัยเรียน มีเพื่อนผมคนหนึ่ง เล่นจนจบเกม ชุดเกาะอันเดิมตั้งแต่ตอนเริ่มเกม ดาบกับโล่อันเดิม ไม่เคยเปลี่ยน แต่ก็เล่นจนจบเกมได้ สุดยอดจริงๆ เลยครับ
5. มีประสบการณ์ หรือ Experience แน่นอนครับ เมื่อออกทำภารกิจบ่อยๆ ย่อมจะมีประสบการณ์ในการต่อสู้ พอสู้ไปเยอะๆ ก็ต้องเก่งขึ้นเรื่อยๆ และพอเก่งก็ต้องเพิ่ม ระดับ เหมือนเลื่อนขั้นให้มี level สูงขึ้นเรื่อยๆ ครับ
6. พลังโจมตีและการป้องกัน ตัวละครของเราเวลาต่อสู้กับศัตรู จะโจมตีให้พลังชีวิตของศัตรูลดลงได้ทีละเท่าไร และเมื่อโดนตีกลับ จะสามารถป้องกันการโจมตีได้เท่าไร เช่น เขาตีมา 500 เกราะเรากันได้ 300 เราก็โดนตีแค่ 200 เป็นลักษณะแบบนี้ครับ
เมื่อเราสร้างตัวละครในใจของเราขึ้นมาแล้ว เราต้องมาสร้างให้เป็นจริงกันใน construct 2 กันเลยครับ การกำหนดคุณลักษณะของตัวละครให้ จะอาศัย Instance value ซึ่งเป็นค่าตัวแปรเฉพาะของวัตถุ วัตถุแต่ละตัวก็จะมีค่าที่แตกต่างกันออกไป ถ้าสงสัยว่า Instance value คืออะไร ย้อนกลับไปศึกษาก่อนก็ได้นะครับ
ผมเพิ่ม instance value จำนวน 8 ตัว คือ
Health เป็นค่าพลังชีวิต เป็นชนิด Number มีค่าเริ่มต้นเท่ากับ 500
Stamina เป็นค่าความอดทน เป็นชนิด Number มีค่าเริ่มต้นเท่ากับ 500
Bagsize เป็นขนาดของเป้ใส่ของ เป็นชนิด Number มีค่าเริ่มต้นเท่ากับ 10
WeaponID เป็นรหัสของอาวุธที่ถือ มีค่าเริ่มต้นเท่ากับ 1
Experience เป็นค่าประสบการณ์ของตัวละคร เป็นชนิด Number มีค่าเริ่มต้นเท่ากับ 0
Level เป็นระดับของตัวละคร เป็นชนิด Number มีค่าเริ่มต้นเท่ากับ 0
Damage เป็นพลังในการโจมตีของตัวละคร เป็นชนิด Number มีค่าเริ่มต้นเท่ากับ 250
Defense เป็นพลังในการป้องกันการโจมตีของตัวละคร เป็นชนิด Number มีค่าเริ่มต้นเท่ากับ 100
เมื่อเรากำหนดค่า Instance value เสร็จแล้ว ผมขอพักไว้ก่อนนะครับ ตอนต่อไปจะนำเสนอวิธีการในการกำหนดค่า Health ให้เพิ่มหรือลด เวลาต่อสู้ และการเปลี่ยนแปลงค่า Stamina ในระหว่างการทำภารกิจในเกม
วันพฤหัสบดีที่ 10 มีนาคม พ.ศ. 2559
Construct 2 : Instance Variables
Instance Variables หรือจะเรียกง่าย ๆ
ว่าตัวแปรเฉพาะ ซึ่งตัวแปรดังกล่าวนี้ จะกำหนดให้เฉพาะวัตถุแต่ละตัว
ชนิดข้อมูลที่สามารถกำหนดได้ จะเป็นตัวเลข ข้อความ และตรรกะ ค่าตัวแปรที่กำหนดนี้
จะมีความเฉพาะของวัตถุแต่ละตัว เช่น
ค่าพลังชีวิต (health) ค่าสถานะ (state) เป็นต้น การกำหนดค่า instance variables จะสามารถกำหนดได้จากแถบ
Properties โดยจะมีกล่องโต้ตอบสำหรับเพิ่มหรือลบค่าตัวแปรเฉพาะ
Instance Variables จะช่วยในการควบคุมวัตถุแบบอิสระ เช่น การกำหนดตัวแปร ชนิดตรรกะ
เพื่อให้บอกสถานะของศัตรูว่าจะวิ่งเข้าทำร้ายตัวเอก (Hero) ซึ่งกำหนดค่าเป็นจริง หรือวิ่งหนีจากตัวเอกของเกม
โดยกำหนดค่าเป็นเท็จ
กลุ่มวัตถุชนิดเดียวกัน แต่ถูกกำหนดค่า instance variables ที่แตกต่างกัน
ส่งผลให้ตัวสถานะของศัตรูถูกแบ่งแยกออกไป บางตัวจะวิ่งเข้ามาทำร้ายตัวเอก
แต่บางตัวจะวิ่งหนีไป วัตถุถึงแม้จะเป็นชนิดเดียวกัน
แต่ก็จะมีพฤติกรรมที่แตกต่างกันไปอย่างอิสระ ด้วยการกำหนดค่า instance variables ที่แตกต่างกัน
Instance Variables dialog
การกำหนดค่า instance variables จะสามารถกำหนดได้จากแถบ Properties โดยคลิกที่คำสั่ง
Add/Edit Instance Variables จะปรากฏกล่องโต้ตอบสำหรับเพิ่มหรือลบค่า
Instance Variables
Name จะใช้กำหนดชื่อเฉพาะของตัวแปร
ชื่อที่กำหนดขึ้นมาจะเป็นส่วนขยายของชื่อวัตถุ เช่น Sprite.MyVariable ซึ่งจะใช้อ้างถึงค่า instance variable ที่กำหนดขึ้นในวัตถุแต่ละตัว
แต่ชื่อที่กำหนดขึ้นนี้ต้องไม่ซ้ำกับชื่อวัตถุ หรือคำสงวนที่สำคัญต่าง ๆ
ของโปรแกรม Construct 2
Type เป็นการกำหนดชนิดของตัวแปร สามารถกำหนดได้ 3 ชนิด คือ ตัวเลข (Number) ข้อความ (Text) และ ตรรกะ
(Boolean)
Initial value คือ ค่าเริ่มต้นของตัวแปร
โดยจะกำหนดตามชนิดของตัวแปรนั้น เช่น ตัวเลข ข้อความ
ข้อความที่กำหนดเป็นค่าเริ่มต้น จะไม่สามารถเป็นค่าว่างได้
และข้อความจะต้องอยู่ภายใต้เครื่องหมาย ""
และค่าข้อมูลแบบตรรกะ จะกำหนดได้สองค่า คือ true และ false
เท่านั้น
Description คือ คำอธิบายเพิ่มเติม
เพื่ออธิบายการใช้งานตัวแปร หรือวัตถุประสงค์ของการสร้างตัวแปร
ซึ่งจะกำหนดหรือไม่ก็ได้
การใช้งาน instance variables เป็นประโยชน์อย่างมากในการสร้างเกม ขอให้ฝึกฝนและใช้งานกันบ่อย ๆ
ขอให้สร้างเกมอย่างมีความสุขนะครับ
สมัครสมาชิก:
บทความ (Atom)












