สอนเขียนสคริปต์อย่างง่ายๆ #1 If Else - Printable Version +- irpg Community (https://irpg.in.th) +-- Forum: irpg Fabella Game Maker Academia (https://irpg.in.th/forum-29.html) +--- Forum: Game Maker Engine School (https://irpg.in.th/forum-30.html) +---- Forum: Scripting Academy (https://irpg.in.th/forum-33.html) +---- Thread: สอนเขียนสคริปต์อย่างง่ายๆ #1 If Else (/thread-2968.html) |
สอนเขียนสคริปต์อย่างง่ายๆ #1 If Else - slost - 10-16-2016 สอนเขียนสคริปต์อย่างง่ายๆ #1 If Else วันนี้ผมจะมาสอนอะไรที่โคตรจะเบสิคของการเขียนสคริปต์เลยแหละ นั่นก็คือการใช้ If ถ้าท่านใช้เป็น ท่านจะเอาไปประยุกต์อะไรได้อีกมากมาย และแน่นอนไม่ใช่เฉพาะ GMS ทุกโปรแกรมเอาไปใช้ได้หมด (เพียงแต่การเขียนจะแตกต่างกันไป) เริ่มแรก ผมอยากจะให้ทุกคนเข้าใจหลักการทำงานก่อน If คือการตรวจสอบเงื่อนไขว่าเป็นจริงหรือไม่ และจะเกิดอะไรขึ้นถ้าหากมันจริง ยกตัวอย่างง่ายๆ เช่น ถ้าหิวจริง ก็ออกไปซื้อข้าวกิน ถ้าซื้อข้าวกิน ก็ต้องเสียเงิน เป็นต้น โครงสร้างของภาษา GML if เงื่อนไข { สิ่งที่จะกระทำ } เปรียบการซื้อข้าวเป็นภาษาโค้ด if ความหิว = 100 { ออกไปซื้อข้าวกิน } แล้วถ้าหากไม่จริงล่ะ ? จะทำอย่างไรให้มันกระทำอีกอย่าง ...นั่นก็คือการใช้ Else if เงื่อนไข { สิ่งที่จะกระทำ } else { สิ่งที่จะกระทำเมื่อไม่จริง } if ความหิว = 100 { ออกไปซื้อข้าวกิน } else { ความหิวเพิ่มนาทีละ 1 } เราสามารถใส่ if ซ้อนทับไปอีก เพื่อให้มันทำงานไปเรื่อยๆ if ความหิว = 100 { รู้สึกหิว if ออกไปซื้อข้าวกิน { เงิน -= 50 } } หมายเหตุ : ในการลด หรือเพิ่มตัวแปรนั้น เราไม่สามารถใช้ + , - ไปตรงๆได้ จำเป็นต้องใช้ = มาช่วยด้วย เช่นจะลดเงิน ไม่สามารถใช้ เงิน - 50 ได้ ต้องใช้ เงิน -= 50 หรือ เงิน =- 50 เท่านั้น ถ้าเคยใช้ RPG Maker คงจะเข้าใจแล้วใช่ไหมครับ มันก็คือคำสั่งตรวจเช็คเงื่อนไขนั่นเอง เพียงแต่การเขียนสคริปต์ มันจะไม่มีอะไรมาให้เรามาเลยครับ เราต้องมานั่งเขียนคำสั่งเอง ดังนั้น if จึงสำคัญมาก เราจะเขียนสคริปต์เดินได้อย่างไร ถ้าเราไม่ตรวจสอบว่ามันกดปุ่มเดินหรือไม่ ? กล่าวคือ สคริปต์ทำงานโดยการตรวจเช็คเงื่อนไขหลายๆอย่างนั่นเอง ถ้าเลเวลอัพ จะเพิ่มพลังโจมตี , ถ้าโดนกระสุน จะลดเลือด , ถ้าเลือดหมด จะเกมโอเวอร์ พอเข้าใจแล้วใช่ไหมครับ ? คราวนี้มาถึงการใช้งานจริง ผมจะสอนถึงวิธีการเขียนสคริปต์บังคับตัวละครด้วยปุ่ม WASD ก่อนอื่นเรามาวางแผนกันก่อนครับ จะให้ตัวสคริปต์เป็นไงมั่ง if กดปุ่ม W { เดินข้างบน } if กดปุ่ม A { เดินข้างซ้าย } if กดปุ่ม S { เดินลง } if กดปุ่ม D { เดินข้างขวา } หมายเหตุ : เราสามารถย่อ { } ให้อยู่ในบรรทัดเดียวกันได้ เพื่อไม่ให้มันบรรทัดเยอะรกหูรกตา หลังจากออกแบบเสร็จแล้ว การจะเขียนสคริปต์ได้จริงนั้น เราจำเป็นจะต้องรู้โค้ดก่อน โค้ดตรวจสอบว่ากดปุ่มนั้นใช้ keyboard_check(key) ในวงเล็บให้ใส่ตัวคีย์ที่ต้องการ โค้ดคีย์ก็จะมีหลายแบบ แต่สำหรับปุ่มตัวอักษรนั้นให้ใช้ ord(‘key’) เช่น ตรวจสอบว่ากดปุ่ม W ให้ใช้ keyboard_check(ord(‘W’) ) ทีนี้เราก็จะได้ขั้นหนึ่งแล้ว if keyboard_check(ord(‘W’) ) { เดินข้างบน } ส่วนจะให้มันเดินยังไง การเดินก็จะมีหลายแบบครับ เช่นเดินเป็นช่อง เดินเป็น บลาๆ แต่ทีผมจะใช้คือการสั่งให้ Object ย้ายตำแหน่งใน Room ครับ สิ่งสำคัญที่ต้องรู้ก็คือเรื่องของตำแหน่ง เพราะมันจำเป็นต้องใช้มากๆ x คือตำแหน่งแนวนอน y คือตำแหน่งแนวตั้ง x , y ก็คือค่าหนึ่ง ถ้าเราเขียนโค้ดใน Object นั้น มันก็จะหมายถึงตำแหน่งของ Object นั้น ปกติแล้วเมื่อเราเอา Object ไปวางไว้ใน Room ค่า x , y จะถูกตั้งให้เป็น 0 ณ ตำแหน่งนั้น ดังนั้นไม่ว่าจะอยู่ตรงส่วนไหน ค่า x , y ของ Object นั้น จะเท่ากับ 0 เสมอ และถ้าหากเราสั่งให้มันเพิ่มหรือลบ มันก็จะย้ายจากตำแหน่งนั้น มาตรงถึงส่วนการเคลื่อนที่ ถ้าค่า x ติดลบ ตำแหน่งจะเคลื่อนไปด้านซ้าย ถ้าเพิ่มขึ้นจะไปด้านขวา ถ้าค่า y ติดลบ ตำแหน่งจะเคลื่อนลง ถ้าเพิ่มจะเลื่อนขึ้น if กดปุ่ม w { ตำแหน่งแนวตั้งเพิ่ม 10 } if keyboard_check(ord(‘W’) ) { y += 10 } เท่านี้เราก็จะได้โค้ดเคลื่อนที่แล้วครับ เหลือแค่ทำให้ครบทั้งสี่ตัว ลองเอาไปทำดูนะครับ ผมเชือว่าทุกคนทำได้ แล้วพบกันใหม่คราวหน้าครับ Credit : slost Code Codex รวบรวมโค้ด พร้อมคำอธิบายเป็นภาษาไทย RE: สอนเขียนสคริปต์อย่างง่ายๆ #1 If Else - splendith - 10-17-2016 โอ้ว เป็นจุดเริ่มต้นอันดีของบทเรียน script ของ game maker ครับ ส่วนตัวเคยเขียนตอน Game Maker 5.3 - 6.0 แล้วก็ไม่ได้เขียนอีกเลย ไม่รู้ว่าตอนนี้เป็นยังไงบ้างแล้ว แต่ก็แอบสนใจกลับมาเขียนอีกหลังเล่น Undertale นะ *0* ยังไงก็เป็นกำลังใจให้ครับ ปล. เหมือนท่านจะลืม else if |