vertiria Away   07-14-2012, 04:12 PM
#1
ตัวแปร จาก RPG Maker


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

ตัวแปรคืออะไร สำหรับคนที่เรียนคณิตศาสตร์จนถึง ม.ต้น คงจะพอเข้าใจเรื่องนี้แล้ว ตัวแปรคืออะไรก็ได้ ที่สมมุติขึ้นมาแทนตัวเลข ไม่ว่าจะเป็น x,y,z,ก,ข,ค,ฯลฯ สำหรับตัวแปรใน RPG Maker ก็มีลักษณะคล้ายๆกัน คือ สมมุติค่าขึ้นมาเพื่อแทนตัวเลข

เพื่อที่จะอธิบายให้เข้าใจง่ายๆ ผมจะสมมุติว่า ตัวแปรคือกล่องที่เขียนว่า "X" อยู่ที่ฝากล่อง และภายในกล่องมีก้อนหินอยู่ 10 ก้อน ก็คือ ตัวแปร X มีค่าเท่ากับ 10 ทีนี้ ผมจะเอาก้อนหินออกมาจากกล่อง 5 ก้อน ก็คือ X-5 นั่นเอง

ตัวแปรกับ RPG Maker

RPG Maker มีระบบตัวแปรขึ้นเพื่อให้นักสร้างเกมสามารถดำเนินการต่างๆเกี่ยวกับตัวเลข ได้ ซึ่งระบบตัวแปรนี้ค่อนข้างกว้างขวางและครอบคลุมแทบทุกส่วนในเกม นอกจากนี้ตัวแปรยังสามารถพลิกเพลงในการสร้างระบบใหม่ๆในตัวเกมได้อีกมากมาย แต่เนื่องจากระบบตัวแปรจะดำเนินการอยู่หลังฉากของเกม (ไม่สามารถมองเห็นได้) จึงเป็นการยากในการใช้ตัวแปร เราสามารถตรวจสอบตัวแปรได้ในขณะทดสอบเกม โดยกดปุ่ม F9

การใช้ตัวแปรใน RPG Maker สามารถควบคุมได้โดยใช้คำสั่ง "ความคุมตัวแปร" (หรือ "Variable Operation" ในเวอร์ชั่นภาษาอังกฤษ) ในหน้าของเหตุการณ์ ซึ่งจำนวนตัวแปรที่โปรแกรมกำหนดให้ใช้ได้มีถึง 9999 ตัวแปร โดยวิธีใช้คำสั่งมีดังนี้

[Image: 0capture.png]

นอกจากนี้ ตัวแปรยังเกี่ยวข้องกับคำสั่ง "ตรวจเช็คเงือนไข" (หรือ "Condition Branch") ซึ่งมักจะใช้เพื่อดำเนินเนื้อเรื่องภายใต้เงื่อนไขของตัวแปร และเป็นคำสั่งที่ค่อนข้างใช้บ่อยมากในการสร้างเกม

[Image: capture.png]



ตัวอย่างการใช้ตัวแปรดำเนินเนื้อเรื่อง : ต้องการให้ฮีโร่เลเวล มากกว่า 30 จึงจะให้ผ่านไปได้

  1. สร้างเหตุการณ์ขึ้นมา ใส่รูปตามที่ต้องการลงไป
  2. ใช้คำสั่ง "ควบคุมตัวแปร" กำหนดให้ตัวแปรชื่อ Level เลือก "กำหนด" เลือกฮีโร่และเลือก ระดับ (Level)
  3. ใช้คำสั่ง ตรวจเช็คเงื่อนไข เลือก ตัวแปร ใส่ค่าลงไปเป็น 30 กำหนดเงื่อนไขให้เป็นมากว่าหรือเท่ากับ และติ๊กที่ช่องเพิ่มเคสหากเงื่อนไขไม่ตรงตามกำหนด
  4. ให้เราใส่เหตุการณ์เมื่อฮีโร่เลเวล 30(หรือมากกว่า) ลงไปในคำสั่ง ตรวจเช็คเงื่อนไข และใส่เหตุการณ์เมื่อฮีโร่เลเวลต่ำกว่า 30 ลงในช่อง เพิ่มเคส (Else Handler)
  5. ลองทดสอบเกม

####วิเคราะห์คำสั่ง####

จากข้อ 2: เราได้ใส่คำสั่ง ควบคุมตัวแปร ซึ่งคำสั่งนี้ จะกำหนดค่าตัวแปล Level ของเราให้มีค่าเท่ากับ Level ของฮีโร่ (เหมือนกับ เอาก้อนหินใส่ลงไปในกล่องชื่อ Level ตามจำนวนเลเวลของฮีโร่ เช่น ฮีโร่เลเวล 18 ในกล่องนี้ก็จะมีก้อนหิน 18 ก้อน)

จากข้อ 3: เราได้ใส่คำสั่ง ตรวจเช็คเงื่อนไข ซึ่งกำหนดให้ตรวจเช็คตัวแปร Level ของเรา ว่ามีค่ามากกว่าหรือเท่ากับ 30 หรือไม่ (เหมือนกับ ตรวจดูว่า ภายในกล่องมีก้อนหินมากกว่าหรือเท่ากับ 30 ก้อนหรือเปล่า)

จากข้อ 4: เราใส่เหตุการณ์เมื่อเงื่อนไขตรงตามต้องการ คือมีเลเวล สูงกว่าหรือเท่ากับ 30 และไม่ตรงตามเงื่อนไข คือมีเลเวลต่ำกว่า 30 (เหมือนกับกำหนดว่า ถ้าภายในกล่องมีก้อนหินมากกว่าหรือเท่ากับ 30 ก้อนจะเกิดอะไรขึ้น และถ้าในกล่องมีก้อนหินน้อยกว่า 30 ก้อน จะเกิดอะไรขึ้น)

สุดท้ายนี้ ผมหวังว่า ท่านที่ได้อ่านบทความของผมทั้งหมด จะสามารถนำระบบตัวแปรไปใช้และพลิกแพลงในการพัฒนาเกมของท่านให้ดีขึ้นไปอีก ขอขอบคุณที่อ่านบทความนี้ครับ
This post was last modified: 07-14-2012, 05:32 PM by LuZi.
Shinryu   07-14-2012, 07:20 PM
#2
เสริมนิด

ตัวแปร นอกจากจะใช้เฉพาะตัวเลขแล้วยังจะสามารถใช้เป็นตัวหนังสือได้ด้วย

เช่น
เราจะกำหนดตัวแปร1 ให้จำคำว่า "วันจันทร์" เพื่อใช้ตรวจเช็คระบบวันเวลา
ก็ใส่คำสั่ง เรียกใช้สคริป ว่า
Code:
$game_variables[1] = "วันจันทร์"
แล้วเวลาจะเอาใช้ใช้ เช่น ต้องการให้ตัวแปร1เป็นวันจันทร์ถึงจะผ่านเควสไปได้
ก็ใช้คำสั่ง ตรวจเช็คเงื่อนไข ว่า
Code:
$game_variables[1] == "วันจันทร์"
ถ้าตั้งชื่อเป็นอย่างอื่นก็จะไม่ผ่านเควสนั่นเอง
สามารถเอาไปประยุกต์ใช้ได้มากมาย

หรือจะเอาเป็นจำคำพูดก็ได้เช่น
Code:
$game_variables[1] = "เมมซุมหมดบอร์ทเลยเงียบเหมือนป่าช้าเลยเนอะ"
เวลาใช้คำสั่งโชว์เมสเสสก็ใส่ไปว่า
Code:
\v[1]
เวลาไปคุยตัวละครก็จะพูดว่า "เมมซุมหมดบอร์ทเลยเงียบเหมือนป่าช้าเลยเนอะ"


ต่ออีกหน่อย

การใช้ตัวแปรนอกจากจะเรียกใช้ผ่านคำสั่ง "ตัวแปร" แล้ว
ยังสามารถเรียกใช้ผ่านคำสั่ง "เรียกใช้สคริปต์"(หน้าที่3 อันสุดท้าย) ด้วย

โดยคำสั่งตัวแปรเมื่อเขียนเป็นสคริปต์จะเขียนว่า
Code:
$game_variables[id]

แล้วใส่คำสั่งทางคณิตศาสาตร์ต่อท้ายไป เช่น
Code:
$game_variables[1] += 1
แปลว่า + ค่าตัวแปร1 ไป1หน่วย

หรือสามารถนำค่าอื่นๆที่เป็นตัวเลขมาใส่ในการคำนวน เช่น พวกพลังชีวิต พลังเวทย์ พลังโจมตี เช่น
Code:
$game_variables[1] == $game_party.actors[0].hp*100/$game_party.actors[0].maxhp
แปลว่า ตัวแปร1 มีค่าเท่ากับ hp ที่เหลืออยู่เป็น %

Code:
$game_variables[1] == ($game_party.actors.size*3)+$game_party.steps/2
แปลว่า ตัวแปร1 มีค่าเท่ากับ จำนวนคนในปาร์ตี้x3+จำนวนก้าวเดิน/2

ค่าอะไรที่เอามาใส่ได้ดูตัวอย่างได้ที่กระทู้นี้
การเขียน Script อย่างง่ายๆ บทที่ 2 การตรวจเช็คเงื่อนไข
ในจุดนี้เองที่สามารถใส่คำสั่งซับซ้อนขึ้น ทำให้คำสั่ง "เรียกใช้สคริปต์" จะค่อนข้างสะดวกกว่าคำสั่ง "ตัวแปร" ค่อนข้างเยอะ
This post was last modified: 09-04-2012, 04:59 PM by Shinryu.

[Image: 7f7cb68ce0.png][Image: rlogo.png]
Show ContentSpoiler:
LuZi   07-14-2012, 07:46 PM
#3
เนื้อหาแจ่มแน่นปึ้ก;w;b



sharifyasan Away   07-14-2012, 07:51 PM
#4
พื้นฐานตัวแปรนี้ถ้าศึกษาดีๆแล้วเอาไปพลิกแพลงโน้นนี้สบายเลยครับ ;w;b
suprawee   08-02-2012, 10:51 PM
#5
ขอบคุณค่ะ
ekatotoro   09-30-2012, 11:48 AM
#6
ไม่รู้เรื่องฮะ สมองผมไม่ดี ถ้าเป็นภาษาชาวบ้านมากกว่านี้ผมคงเข้าใจ
ยังไงก็ต้องพยายามลองผิดลองถูกต่อไป งือ
ขอบคุณฮะ
kongwasd   12-16-2013, 03:42 PM
#7
ขอบคุณ
Darwhima Away   12-16-2013, 10:34 PM
#8
(09-30-2012, 11:48 AM)ekatotoro Wrote: ไม่รู้เรื่องฮะ สมองผมไม่ดี ถ้าเป็นภาษาชาวบ้านมากกว่านี้ผมคงเข้าใจ
ยังไงก็ต้องพยายามลองผิดลองถูกต่อไป งือ
ขอบคุณฮะ

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

ส่วนเรื่องตัวแปร ถ้าไม่เข้าใจก็ถามได้นะ เราเคยเขียนโปรแกรมที่ใช้ตัวแปรซับซ้อนกว่านี้อีกเยอะ

ประกาศปิดบัญชีสมาชิกนี้ถาวร 22 ต.ค. 2558
  
Users browsing this thread: 1 Guest(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.