slost   10-16-2016, 07:57 PM
#1
สอนเขียนสคริปต์อย่างง่ายๆ #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 รวบรวมโค้ด พร้อมคำอธิบายเป็นภาษาไทย


 "กาก"
[Image: bujuroll.gif] แอดเพื่อน Steam จิ้มแรงๆเลย >>> [Image: AddFriend.png]
[Image: 76561198091389336.png]




splendith   10-17-2016, 03:01 AM
#2
โอ้ว เป็นจุดเริ่มต้นอันดีของบทเรียน script ของ game maker ครับ
ส่วนตัวเคยเขียนตอน Game Maker 5.3 - 6.0 แล้วก็ไม่ได้เขียนอีกเลย ไม่รู้ว่าตอนนี้เป็นยังไงบ้างแล้ว
แต่ก็แอบสนใจกลับมาเขียนอีกหลังเล่น Undertale นะ *0*

ยังไงก็เป็นกำลังใจให้ครับ Big Grin

ปล. เหมือนท่านจะลืม else if
  
Users browsing this thread: 1 Guest(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.