ง่ายมากครับ, ตัวแปรคือเจ้าสิ่งที่ใช้กักเก็บค่าทั้งหลายเอาไว้ไงครับ
ในชีวิตประจำวันเราก็เกี่ยวข้องกับค่าต่างๆทั้งหลายที่เราได้จดจำเอาไว้
(อย่างเป็นธรรมชาติ หรือต้องจดจำ) เช่น...
- จำนวนขนมปังที่เราจะอบกินในตอนเช้า
- จำนวนชั่วโมงที่เราจะมานั่งปั่นทำเกมบน RPG Maker
- ความเร็วที่เราต้องใช้วิ่งในยามที่เราต้องโกยหนีหมา
- ชื่อของดาราสาวสวยในใจเรา
- ฯลฯ
และในการโปรแกรมมิ่งนั้น ตัวแปรจะเป็น"ตัวแทน"ในการเก็บค่าข้อมูลเหล่านั้นเอาไว้
ดังที่ยกตัวอย่างไป "ค่าของตัวแปร" ในทางโปรแกรมมิ่งนั้น จะเก็บได้ 2 อย่าง
คือเป็น ค่าตัวเลข และ อักขระ (ซึ่งจริงๆแล้วก็เป็นการเก็บค่าตัวเลขเหมือนกัน
แต่เป็นค่าตัวเลขที่อยู่ในฟอร์มพิเศษ เช่น โค้ด ASCII)
ตัวแปรใน RPG Maker นั้นจะสามารถ"แบ่ง" ออกเป็น 2 อย่างคือ
1. Variable (ตัวแปร) - เป็นตัวแปรในความหมายปกติ
2. Switch (สวิตช์) - จริงๆแล้วนั้น Switch ก็คือตัวแปรธรรมดาๆนี่เอง
แต่เป็นตัวแปรที่มีการกำหนดคุณลักษณะเจาะจงลงมาอีก คือ
จะมีค่าได้เพียง 2 ค่า คือ เปิด และ ปิด (จริงๆแล้วคือค่า 1 กับ 0 หรือ จริง กับ เท็จ)
ว่ากันในเรื่องของตัวแปรนั้น จะมีประเด็นสำคัญอยู่ที่ 2 ส่วนคือ การประกาศตัวแปร และ การกำหนดค่าตัวแปร ครับ
การประกาศตัวแปร
การ ประกาศตัวแปรก็เป็นไปตามชื่อคือการประกาศตัวแปรไงหล่ะครับ ถ้าจะอธิบายให้ละเอียดยิ่งขึ้น การประกาศตัวแปรคือการประกาศให้โปรแกรมรับรู้ว่ามีตัวแปรตัวนี้อยู่แล้วนะ
โดย ปกติแล้ว ในการโปรแกรมมิ่งในภาษาอื่นๆนั้นเราจะต้องมีการพิมพ์ Syntax ประกาศเอาไว้ เช่น ในภาษา C
int number; <---- ประกาศตัวแปรที่ชื่อว่า "number" เป็นตัวแปรประเภท "integer" (จำนวนเต็ม เก็บค่าได้ตั้งแต่ (-2^16/2 ) ถึง 2^16/2 )
หรือใน Ruby
$student_id <---- ประกาศตัวแปรที่ชื่อว่า student_id เป็นตัวแปรแบบกโลบอน หรือ เห็นใน คลาส อื่นๆ ด้วย
สำหรับตัวแปรและสวิตช์ใน RPG Maker นั้น
เราไม่ต้องทำอะไรเลยครับ!! ใช่ครับ! ไม่ต้องทำเลย โปรแกรมจะทำการสร้างตัวแปร
และสวิตช์ให้เราเอาไว้อัตโนมัติแล้วครับ เพียงแต่มันก็ยังมีสิ่งที่เราต้องทำอยู่ คือ
[hide]
การใช้งานตัวแปร
1. กำหนดว่าโปรแกรมจะมีตัวแปรทั้งหมดกี่ตัว
มันคือส่วนนี้ครับ
จำนวน ตัวแปรที่เรากำหนดนั้น โปรแกรมจะนำไปสร้างตัวแปรในรูปของ Array ซึ่งเวลาเราต้องการจะเรียกใช้, Syntax ก็จะมีลักษณะดังนี้
Array
Array คือตัวแปรที่มีลักษณะ "หลายมิติ"
ในลักษณะของตัวแปรแบบปกตินั้น จะเป็นลักษณะของ"กล่อง"กล่องหนึ่งที่มีการเก็บของเอาไว้ข้างใน ของชิ้นนั้นก็คือ "ค่าของตัวแปร"
แต่ ตัวแปรแบบ Array นั้น จะเป็นลักษณะของ กล่องกล่องหนึ่ง ที่ข้างในกล่องมีกล่องข้างในอีก และแต่ละกล่องจะมีการแปะ "ตำแหน่ง" ของกล่องข้างใน
โดยปกติแล้ว การประกาศตัวแปรจำพวกนี้จะเขียนอยู่ในรูป
int student_id[5]
ก็จะมีตัวแปรในชุดของ student_id อยู่ 5 ตัวคือ
student_id[0] -
student_id[1] |
student_id[2] > ทั้งหมด 5 ตำแหน่ง
student_id[3] |
student_id[4] -
* โปรดสังเกตุว่า ตำแหน่งแรกเริ่มต้นที่ 0
* โปรดสังเกตุว่า ตำแหน่งสุดท้ายจะเป็น (จำนวนตำแหน่ง - 1) เพราะลำดับแรกเริ่มต้นที่ 0
* เพื่อป้องกันการสับสนตำแหน่งตัวแปรในการเรียกออกมาในโปรแกรมมิ่งกับผ่านทางคอมมานด์
ใน Event ตัว RPG Maker จึงบวกค่าจำนวนตัวแปรสูงสุดที่เรากำหนดออกไปอีก 1 เช่น
กำหนด มา 50 ตัว โปรแกรมจะประกาศสร้างทั้งหมด 51 ตำแหน่ง
Switch ก็จะมีลักษณะเดียวกันกับ ตัวแปร เป๊ะเลยครับ
แต่ Switch จะถูกประกาศเป็นชื่อ
2. กำหนดชื่อของตัวแปร
ทำอย่างนี้ครับ
ซึ่งจริงๆแล้ว ชื่อพวกนี้จะปรากฏให้เห็นผ่านคอมมานด์ใน Event เท่านั้น
เพราะอย่างที่ผมได้กล่าวเอาไว้แล้วว่า ชื่อของตัวแปรและสวิตช์ถูกประกาศออกมาเป็นอย่างไร
การตั้งชื่อตัวแปรและสวิตช์นั้น (คงเป็น common sense ของทุกคนอยู่แล้ว) คือ
ให้ตั้งชื่อให้อ่านแล้วเข้าใจความหมายว่าตัวแปร, สวิตช์ นั้นๆเอาไว้ใช้ทำอะไร
ตัวอย่างการตั้งชื่อที่ดี
- จำนวนวันที่ผ่านไป (ตัวแปร)
- อยู่ในแผนที่โลก (สวิตช์)
ตัวอย่างการตั้งชื่อที่แย่
- abc
- asljdlk
- ตัวแปรตัวที่ 1
ทำตามมาตรฐานครับ แล้วคุณจะรู้สึกขอบคุณตัวเองที่ได้ตั้งชื่อให้อ่านรู้เรื่อง
ในยามที่คุณกลับมาแก้ไขอะไรอีกครั้ง จะได้รู้ว่าต้องแก้ตรงไหน
การกำหนดค่าตัวแปร
เมื่อเราประกาศตัวแปรแล้ว เราจะได้"กล่อง"(ที่กำหนดคุณลักษณะ เช่น ชื่อ เรียบร้อย)
แต่กล่องนี้ จะมีสภาพว่างเปล่า!!! ใช่ครับ การประกาศตัวแปรเป็นการสร้างกล่องขึ้นมาครับ
แต่กล่องที่ว่านี้ข้างในจะไม่มีอะไรเลย!
ในการโปรแกรมมิ่งนั้น เราจะเรียกสภาพอย่างนี้ว่า ตัวแปรมีค่าเป็น "Null" หรือ ว่างเปล่า ครับ
ดังนั้นลำดับถัดมาคือ เราจะต้องประกาศค่าของตัวแปรครับ
ประเด็นนี้ค่อนข้างสำคัญในทางโปรแกรมมิ่งเลยครับ
ตัวแปรมีค่าเป็น NULL ไม่ใช่ ตัวแปรมีค่าเป็นศูนย์นะครับ
เจ้าตัวนี้แหล่ะ สร้างความปวดหัวให้กับการโปรแกรมมิ่งมามากมายแล้ว !!!
สำหรับในการโปรแกรมมิ่งนั้น เราจะใช้ Operator (ตัวจัดการ) ' = ' (เครื่องหมายเท่ากับ)
ในการกำหนดค่านั่นเอง
โดยรูปแบบก็จะอยู่ในรูปของ
<ตัวแปร> = <ค่าที่จะกำหนดลงในตัวแปรนั้น>
เช่น ใน Ruby
การกำหนดค่าจำพวก String ในภาษาใหม่ๆอย่าง JAVA หรือ Ruby นั้นจะง่ายๆแบบนี้ครับ
แต่ถ้าเป็นภาษาเก่าๆ อย่างภาษา C คุณจะทำอย่างนี้ไม่ได้เลยนะครับ
ขอให้ตรวจดูว่าแต่ละภาษาจะจัดการอย่างไรกับตัวแปร String บ้าง
คุณจะสังเกตุได้ว่า คำว่า '=' ในที่นี้ ไม่ได้แปลว่า เท่ากับ ในทางคณิตศาสตร์ นะครับ!
แต่แปลว่า ตัวแปรทางซ้าย จะมีค่าเท่ากับ ค่าของทางฝั่งขวานะครับ
ตัวอย่างเช่น
money_have = money_have - money_spent
แปลว่า กำหนดค่าของ money_have เท่ากับ ค่าของ money_have ลบด้วย money_spent
คุณจะเห็นได้ว่า เราสามารถกำหนดค่าของตัวแปรลงไปพร้อมๆกับการประกาศตัวแปรได้เลย
ซึ่งโดยมาตรฐานแล้ว(ถ้าทำได้)เราจะประกาศค่าตัวแปรในตอนที่เราประกาศตัวแปรนี้เลยทุกครั้ง
เพื่อให้ชัวร์ว่าตัวแปรจะไม่ได้มีค่าเป็น NULL
เริ่มจะหลุดไปไกลแล้ว ขอลากกลับมาที่เดิมนะครับ
ใน RPG Maker นั้น ตัวแปรและสวิตช์ที่เราสร้างเอาไว้ จะถูกกำหนดค่าเอาไว้ให้
โดยอัตโนมัติเรียบร้อย คือ ตัวแปรทุกตัวแปรจะมีค่าเป็น 0 และ สวิตช์ทุกสวิตช์
จะมีค่าเป็น OFF ดังนั้นเรื่องตัวแปรมีค่า NULL จึงไม่มีปัญหา
แต่โดยปกติแล้ว เราจำต้องมีการเปลี่ยนแปลงค่าของตัวแปรอยู่ตลอดเวลาอยู่แล้ว
ดังนั้นเราก็ยังต้องมีการกำหนดค่าตัวแปรใหม่อีกอยู่ดี
ส่วนของการประกาศค่าตัวแปร และกำหนดค่าตัวแปร จะแยกจากกันครับ
เราสามารถกำหนดค่าของตัวแปรได้โดยการเรียกผ่านคอมมานด์ที่ชื่อว่า
คำสั่ง Control Variables (ควบคุมตัวแปร)
หน้าต่างนี้คุณจะเห็นว่ามันถูกแบ่งออกเป็น 3 ส่วนใหญ่ๆ คือ ตัวแปร(Variable),
ตัวจัดการ(Operator), และ ตัวประกอบการจัดการ(Operand)
ผมจะไม่เจาะลึกมากนะครับ บอกเฉพาะที่ใช้บ่อยๆแน่ๆ ส่วนที่เหลือไปหาอ่านกันจากที่อื่นนะครับ
ส่วนที่ 1 ตัวแปร : ที่ Single, ตรงจุดนี้จะเป็นส่วนกำหนดตัวแปรที่ต้องการเปลี่ยนค่าครับ
ส่วนที่ 2 ตัวจัดการ : เราจะเลือกตัวจัดการครับ ที่ใช้แน่ๆคือ
- Set : จะเป็นการกำหนดให้ตัวแปรตั้งต้นมีค่าเท่ากับค่าของตัวประกอบการจัดการ
ตัวแปรตั้งต้น = ตัวประกอบการจัดการ
- Add : นำค่าของตัวประกอบการจัดการเพิ่มเข้าไปในตัวแปรตั้งต้น
ตัวแปรตั้งต้น = ตัวแปรตั้งต้น + ตัวประกอบการจัดการ
- Sub : ย่อมาจาก Subtract เป็นการนำค่าของตัวประกอบการจัดการไปหักออกจากตัวแปรตั้งต้น
ตัวแปรตั้งต้น = ตัวแปรตั้งต้น - ตัวประกอบการจัดการ
และ
ส่วนที่ 3 ตัวประกอบการจัดการ : เป็นการเลือกตัวที่จะมาเข้า Operator
กับตัวแปรที่ตั้งต้นที่เลือกเอาไว้ในข้อที่ 1 ครับ ที่น่าสนใจคือ
- Constant : กำหนดค่าตัวเลขเอง
- Variable : กำหนดค่าตัวแปรตัวนี้มีคำนวนเอาค่าตัวแปรของตัวอื่นมา
- Random : กำหนดค่าตัวแปรตัวนี้มีค่า สุ่ม (ตั้งแต่ตัวเลขช่องหน้า ถึง ตัวเลขช่องหลัง)
- Item : กำหนดค่าตัวแปรตัวนี้มีค่าเท่ากับ ID ไอเทม
- Actor : กำหนดค่าตัวแปรตัวนี้มีค่าเท่ากับ ค่าเสเตตัส ของฮีโร่คนใด
- Enemy : เหมือนกับอันบนแต่เป็นของศัตรู
- Character : กำหนดค่าตัวแปรตัวนี้มีค่าเท่ากับ หารหันหน้า ตำแหน่ง หรือ terrain ของเหตุการณ์
- Other : กำหนดค่าตัวแปรตัวนี้มีค่าเท่ากับค่าอื่นๆ เช่น ก้าวเดิน จำนวนสมาชิก เงินที่มี หรือเวลาที่เล่น
ส่วนการกำหนดค่าของสวิตช์นั้น ก็จะคล้ายๆกันครับ
เริ่มจากการเรียกผ่านคอมมานด์ Control Switches
หน้าต่างจะเหลือแค่สองส่วน คือ สวิตช์ กับ ค่าที่จะตั้งครับ ง่ายๆเลย
ส่วนที่ 1 Switch : ที่ Single, ตรงจุดนี้จะเป็นส่วนกำหนดสวิตช์ที่ต้องการเปลี่ยนค่าครับ
ส่วนที่ 2 Operation : สำหรับใช้กำหนดค่าของสวิตช์ คือ ON หรือ OFF
ตัวแปรหรือสวิตช์??? อย่างไหนควรใช้กับอย่างไหน???
ดังที่บอกไปว่า สวิตช์คือตัวแปรแบบหนึ่งที่"ลดเกรด"ลงมาให้แสดงค่าแค่ 2 ค่า คือ
ON หรือ OFF แต่ว่ากันตามหลักแล้ว ทั้งสองอย่างนี้มันก็คือตัวแปรปกติธรรมดา
แล้วมันมีหลักการอะไรมั้ยที่ใช้ในการพิจารณาว่าควรใช้อะไร?
จริงๆแล้วคำถามที่ผมเชื่อว่าหลายคนสงสัยมากกว่าก็คือ "สวิตช์มีเอาไว้ทำซากอะไร?"
ผมคิดเองนะครับ ผมไม่รู้หรอกว่ามีใครสงสัยหรือไม่ แต่ก็อย่างที่บอก
สวิตช์คือตัวแปรที่ลดเกรด คำถามคือทำไมต้องลดเกรดตัวแปรให้กลายเป็นสวิตช์
แล้วแยก 2 อย่างนี้ออกจากกัน?
คำตอบก็คือ สวิตช์เหมาะกับการนำเสนอค่าของ "นิพจน์" ครับ
ศัพท์นี้จะอยู่ในเรื่องตรรกศาสตร์ตอน ม. ปลายครับ ความหมายของมันก็คือ
"เหตุการณ์ที่จะมีผลได้แค่จริงหรือเท็จ"
เช่น
ฆาตรกรคือ...คุณนั่นแหล่ะ!! -> มั่ว! ฆาตรกรคือ..."คุณ"ต่างหาก!! เราสามารถบอกได้เลยว่ามันเป็นเท็จ
บิลลาเดนเป็นนายกรัฐมนตรีของอังกฤษ --> มั่วนิ่ม! แกเป็นประธานาธิบดีสหรัฐฯต่างหาก! เราบอกได้ว่ามันเท็จ
ทฤษฎี สัมพันธภาพของไอสไตน์มันตอแหล! --> ยังพิสูจน์ไม่ได้ บอกไม่ได้ว่าเป็นจริงหรือเท็จ, ก็คือไม่ใช่นิพจน์ (แต่เค้าเชื่อว่าจริงกันนะ)
ฉันใส่เสื้อแดงหรือเสื้อสีฟ้าดี? --> อะไรไม่รู้, ไม่ใช่นิพจน์
ฯลฯ
ตัวอย่างของ "นิพจน์" ในรูปแบบเกมนั้นมีมากมายก่ายกองครับ เช่น
- ค่า HP ของตัวเอกเต็ม
- ตัวเอกมีขลุ่ยแห่งเมโลเดี้ยนแล้ว
- แมททิวส์ไม่ได้อยู่ในกลุ่มปาร์ตี้
- ฯลฯ
ซึ่งสวิตช์จะมีค่า 2 ค่าคือ ON กับ OFF นั้นก็สามารถใช้แทนค่า จริง หรือ เท็จ
ของนิพจน์นั้นๆได้ ซึ่งมันสามารถใช้แสดงความเป็นจริงและเท็จของนิพจน์เหล่านั้น
ได้สะดวกและเห็นภาพครับ
แต่ถ้าใครอยากใช้ตัวแปรในการนำเสนอค่าจริง-เท็จของนิพจน์ ก็ทำได้ครับ
คุณอาจจะกำหนดว่า ถ้าจริงเป็น 1 ถ้าเท็จเป็น 0 (อย่างที่ทั่วไปทำกัน) หรือ
ถ้าจริงเป็น 147852 ถ้าเท็จ เป็น 906
มันก็แล้วแต่ความสะดวกครับ
สรุปก็คือ ตัวแปรเหมาะสำหรับการเก็บค่าทั่วไปที่เป็น"จำนวน"
สวิตช์เหมาะสำหรับการเก็บค่า"จริง-เท็จ"ของนิพจน์ ครับ
สรุปสาระสำคัญ
- ตัวแปรเป็นสิ่งที่เอาไว้เก็บค่าๆหนึ่ง
- ตัวแปรจะประกอบไปด้วย 2 ส่วนคือ การประกาศตัวแปร และ การกำหนดค่าตัวแปร
- ใน RPG Maker เราจะไม่ได้ทำการประกาศตัวแปรเองโดยตรง
แต่เราจะกำหนดว่าเราจะมีตัวแปรกี่ตัว และสวิตช์กี่ตัว
- ตัวแปรจะถูกประกาศในชื่อ $game_variables[x] และ สวิตช์จะถูกประกาศในชื่อ
$game_switches[x] โดยที่ x คือเลขตำแหน่งของตัวแปรหรือสวิตช์ที่สนใจ
- การตั้งชื่อสวิตช์/ตัวแปรในหน้าต่าง Switch/Variable ไม่ได้ส่งผลต่อชื่อตัวแปรจริงๆในตัวโค้ด
- เริ่มต้น, ตัวแปรทุกตัวจะถูกกำหนดค่าเป็น 0 และ สวิตช์ทุกตัวจะถูกกำหนดค่าเป็น OFF โดยอัตโนมัติ
- และเราสามารถกำหนดค่าตัวแปรและสวิตช์อีกครั้งได้ ผ่านทางคอมมานด์
Control Variables (ควบคุมตัวแปร) และ Control Switches (ควบคุมสวิทซ์) ตามลำดับ
- ตัวแปรเหมาะสำหรับการเก็บค่าทั่วไปที่เป็น"จำนวน" สวิตช์เหมาะสำหรับการเก็บค่า"จริง-เท็จ"ของนิพจน์ ครับ
เครดิตต้นฉบับ HenoUsabe
+พี่หนึ่งแต่งเติมเล็กน้อย
[/hide]
ในชีวิตประจำวันเราก็เกี่ยวข้องกับค่าต่างๆทั้งหลายที่เราได้จดจำเอาไว้
(อย่างเป็นธรรมชาติ หรือต้องจดจำ) เช่น...
- จำนวนขนมปังที่เราจะอบกินในตอนเช้า
- จำนวนชั่วโมงที่เราจะมานั่งปั่นทำเกมบน RPG Maker
- ความเร็วที่เราต้องใช้วิ่งในยามที่เราต้องโกยหนีหมา
- ชื่อของดาราสาวสวยในใจเรา
- ฯลฯ
และในการโปรแกรมมิ่งนั้น ตัวแปรจะเป็น"ตัวแทน"ในการเก็บค่าข้อมูลเหล่านั้นเอาไว้
ดังที่ยกตัวอย่างไป "ค่าของตัวแปร" ในทางโปรแกรมมิ่งนั้น จะเก็บได้ 2 อย่าง
คือเป็น ค่าตัวเลข และ อักขระ (ซึ่งจริงๆแล้วก็เป็นการเก็บค่าตัวเลขเหมือนกัน
แต่เป็นค่าตัวเลขที่อยู่ในฟอร์มพิเศษ เช่น โค้ด ASCII)
ตัวแปรใน RPG Maker นั้นจะสามารถ"แบ่ง" ออกเป็น 2 อย่างคือ
1. Variable (ตัวแปร) - เป็นตัวแปรในความหมายปกติ
2. Switch (สวิตช์) - จริงๆแล้วนั้น Switch ก็คือตัวแปรธรรมดาๆนี่เอง
แต่เป็นตัวแปรที่มีการกำหนดคุณลักษณะเจาะจงลงมาอีก คือ
จะมีค่าได้เพียง 2 ค่า คือ เปิด และ ปิด (จริงๆแล้วคือค่า 1 กับ 0 หรือ จริง กับ เท็จ)
ว่ากันในเรื่องของตัวแปรนั้น จะมีประเด็นสำคัญอยู่ที่ 2 ส่วนคือ การประกาศตัวแปร และ การกำหนดค่าตัวแปร ครับ
การประกาศตัวแปร
การ ประกาศตัวแปรก็เป็นไปตามชื่อคือการประกาศตัวแปรไงหล่ะครับ ถ้าจะอธิบายให้ละเอียดยิ่งขึ้น การประกาศตัวแปรคือการประกาศให้โปรแกรมรับรู้ว่ามีตัวแปรตัวนี้อยู่แล้วนะ
โดย ปกติแล้ว ในการโปรแกรมมิ่งในภาษาอื่นๆนั้นเราจะต้องมีการพิมพ์ Syntax ประกาศเอาไว้ เช่น ในภาษา C
<ประเภทของตัวแปร><ชื่อของตัวแปร>;
เช่นint number; <---- ประกาศตัวแปรที่ชื่อว่า "number" เป็นตัวแปรประเภท "integer" (จำนวนเต็ม เก็บค่าได้ตั้งแต่ (-2^16/2 ) ถึง 2^16/2 )
หรือใน Ruby
<(Option)ระดับของตัวแปร> <ชื่อขอตัวแปร>
เช่น$student_id <---- ประกาศตัวแปรที่ชื่อว่า student_id เป็นตัวแปรแบบกโลบอน หรือ เห็นใน คลาส อื่นๆ ด้วย
สำหรับตัวแปรและสวิตช์ใน RPG Maker นั้น
เราไม่ต้องทำอะไรเลยครับ!! ใช่ครับ! ไม่ต้องทำเลย โปรแกรมจะทำการสร้างตัวแปร
และสวิตช์ให้เราเอาไว้อัตโนมัติแล้วครับ เพียงแต่มันก็ยังมีสิ่งที่เราต้องทำอยู่ คือ
[hide]
การใช้งานตัวแปร
1. กำหนดว่าโปรแกรมจะมีตัวแปรทั้งหมดกี่ตัว
มันคือส่วนนี้ครับ
จำนวน ตัวแปรที่เรากำหนดนั้น โปรแกรมจะนำไปสร้างตัวแปรในรูปของ Array ซึ่งเวลาเราต้องการจะเรียกใช้, Syntax ก็จะมีลักษณะดังนี้
$game_variables[x]
โดยที่ x คือ เลขลำดับของตัวแปรตัวที่เราสนใจArray
Array คือตัวแปรที่มีลักษณะ "หลายมิติ"
ในลักษณะของตัวแปรแบบปกตินั้น จะเป็นลักษณะของ"กล่อง"กล่องหนึ่งที่มีการเก็บของเอาไว้ข้างใน ของชิ้นนั้นก็คือ "ค่าของตัวแปร"
แต่ ตัวแปรแบบ Array นั้น จะเป็นลักษณะของ กล่องกล่องหนึ่ง ที่ข้างในกล่องมีกล่องข้างในอีก และแต่ละกล่องจะมีการแปะ "ตำแหน่ง" ของกล่องข้างใน
โดยปกติแล้ว การประกาศตัวแปรจำพวกนี้จะเขียนอยู่ในรูป
<ตัวแปร>[จำนวนตำแหน่งที่ต้องการ]
เช่น ในภาษา Cint student_id[5]
ก็จะมีตัวแปรในชุดของ student_id อยู่ 5 ตัวคือ
student_id[0] -
student_id[1] |
student_id[2] > ทั้งหมด 5 ตำแหน่ง
student_id[3] |
student_id[4] -
* โปรดสังเกตุว่า ตำแหน่งแรกเริ่มต้นที่ 0
* โปรดสังเกตุว่า ตำแหน่งสุดท้ายจะเป็น (จำนวนตำแหน่ง - 1) เพราะลำดับแรกเริ่มต้นที่ 0
* เพื่อป้องกันการสับสนตำแหน่งตัวแปรในการเรียกออกมาในโปรแกรมมิ่งกับผ่านทางคอมมานด์
ใน Event ตัว RPG Maker จึงบวกค่าจำนวนตัวแปรสูงสุดที่เรากำหนดออกไปอีก 1 เช่น
กำหนด มา 50 ตัว โปรแกรมจะประกาศสร้างทั้งหมด 51 ตำแหน่ง
$game_variables[51]
และทำการทิ้งตัวแปรลำดับที่ 0 ไปเลย และให้ตัวแปรที่ตัวแรกเริ่มต้นที่ตำแหน่ง 1Switch ก็จะมีลักษณะเดียวกันกับ ตัวแปร เป๊ะเลยครับ
แต่ Switch จะถูกประกาศเป็นชื่อ
$game_switches[x]
แทน2. กำหนดชื่อของตัวแปร
ทำอย่างนี้ครับ
ซึ่งจริงๆแล้ว ชื่อพวกนี้จะปรากฏให้เห็นผ่านคอมมานด์ใน Event เท่านั้น
เพราะอย่างที่ผมได้กล่าวเอาไว้แล้วว่า ชื่อของตัวแปรและสวิตช์ถูกประกาศออกมาเป็นอย่างไร
การตั้งชื่อตัวแปรและสวิตช์นั้น (คงเป็น common sense ของทุกคนอยู่แล้ว) คือ
ให้ตั้งชื่อให้อ่านแล้วเข้าใจความหมายว่าตัวแปร, สวิตช์ นั้นๆเอาไว้ใช้ทำอะไร
ตัวอย่างการตั้งชื่อที่ดี
- จำนวนวันที่ผ่านไป (ตัวแปร)
- อยู่ในแผนที่โลก (สวิตช์)
ตัวอย่างการตั้งชื่อที่แย่
- abc
- asljdlk
- ตัวแปรตัวที่ 1
ทำตามมาตรฐานครับ แล้วคุณจะรู้สึกขอบคุณตัวเองที่ได้ตั้งชื่อให้อ่านรู้เรื่อง
ในยามที่คุณกลับมาแก้ไขอะไรอีกครั้ง จะได้รู้ว่าต้องแก้ตรงไหน
การกำหนดค่าตัวแปร
เมื่อเราประกาศตัวแปรแล้ว เราจะได้"กล่อง"(ที่กำหนดคุณลักษณะ เช่น ชื่อ เรียบร้อย)
แต่กล่องนี้ จะมีสภาพว่างเปล่า!!! ใช่ครับ การประกาศตัวแปรเป็นการสร้างกล่องขึ้นมาครับ
แต่กล่องที่ว่านี้ข้างในจะไม่มีอะไรเลย!
ในการโปรแกรมมิ่งนั้น เราจะเรียกสภาพอย่างนี้ว่า ตัวแปรมีค่าเป็น "Null" หรือ ว่างเปล่า ครับ
ดังนั้นลำดับถัดมาคือ เราจะต้องประกาศค่าของตัวแปรครับ
ไม่แน่เสมอไปที่ตัวแปรที่ถูกสร้างขึ้นมา"เฉยๆ"จะมีค่าเป็น Null เช่น ในภาษา C
(int, long, etc.) และไม่ได้รับการประกาศค่า จะกำหนดค่าเป็น 0 ให้โดยอัตโนมัติครับ
แต่ก็เช่นกัน สิ่งที่ชัวร์ที่สุดคือการสั่งประกาศค่าตัวแปรทุกครั้งครับ
ประเด็นนี้ค่อนข้างสำคัญในทางโปรแกรมมิ่งเลยครับ
ตัวแปรมีค่าเป็น NULL ไม่ใช่ ตัวแปรมีค่าเป็นศูนย์นะครับ
เจ้าตัวนี้แหล่ะ สร้างความปวดหัวให้กับการโปรแกรมมิ่งมามากมายแล้ว !!!
สำหรับในการโปรแกรมมิ่งนั้น เราจะใช้ Operator (ตัวจัดการ) ' = ' (เครื่องหมายเท่ากับ)
ในการกำหนดค่านั่นเอง
โดยรูปแบบก็จะอยู่ในรูปของ
<ตัวแปร> = <ค่าที่จะกำหนดลงในตัวแปรนั้น>
เช่น ใน Ruby
@number_of_hours_spent = 25
#กำหนดค่าของตัวแปร number_of_hours_spent ให้มีค่าเป็นจำนวนตัวเลข = 25mrFusion_quote = "เข้ามาดู..."
#กำหนดค่าของตัวแปร mrFusion_quote ให้มีค่าเป็นชุดอักขระ(สตริง;String) คือ "เข้ามาดู..."การกำหนดค่าจำพวก String ในภาษาใหม่ๆอย่าง JAVA หรือ Ruby นั้นจะง่ายๆแบบนี้ครับ
แต่ถ้าเป็นภาษาเก่าๆ อย่างภาษา C คุณจะทำอย่างนี้ไม่ได้เลยนะครับ
ขอให้ตรวจดูว่าแต่ละภาษาจะจัดการอย่างไรกับตัวแปร String บ้าง
คุณจะสังเกตุได้ว่า คำว่า '=' ในที่นี้ ไม่ได้แปลว่า เท่ากับ ในทางคณิตศาสตร์ นะครับ!
แต่แปลว่า ตัวแปรทางซ้าย จะมีค่าเท่ากับ ค่าของทางฝั่งขวานะครับ
ตัวอย่างเช่น
money_have = money_have - money_spent
แปลว่า กำหนดค่าของ money_have เท่ากับ ค่าของ money_have ลบด้วย money_spent
คุณจะเห็นได้ว่า เราสามารถกำหนดค่าของตัวแปรลงไปพร้อมๆกับการประกาศตัวแปรได้เลย
ซึ่งโดยมาตรฐานแล้ว(ถ้าทำได้)เราจะประกาศค่าตัวแปรในตอนที่เราประกาศตัวแปรนี้เลยทุกครั้ง
เพื่อให้ชัวร์ว่าตัวแปรจะไม่ได้มีค่าเป็น NULL
เริ่มจะหลุดไปไกลแล้ว ขอลากกลับมาที่เดิมนะครับ
ใน RPG Maker นั้น ตัวแปรและสวิตช์ที่เราสร้างเอาไว้ จะถูกกำหนดค่าเอาไว้ให้
โดยอัตโนมัติเรียบร้อย คือ ตัวแปรทุกตัวแปรจะมีค่าเป็น 0 และ สวิตช์ทุกสวิตช์
จะมีค่าเป็น OFF ดังนั้นเรื่องตัวแปรมีค่า NULL จึงไม่มีปัญหา
แต่โดยปกติแล้ว เราจำต้องมีการเปลี่ยนแปลงค่าของตัวแปรอยู่ตลอดเวลาอยู่แล้ว
ดังนั้นเราก็ยังต้องมีการกำหนดค่าตัวแปรใหม่อีกอยู่ดี
ส่วนของการประกาศค่าตัวแปร และกำหนดค่าตัวแปร จะแยกจากกันครับ
เราสามารถกำหนดค่าของตัวแปรได้โดยการเรียกผ่านคอมมานด์ที่ชื่อว่า
คำสั่ง Control Variables (ควบคุมตัวแปร)
หน้าต่างนี้คุณจะเห็นว่ามันถูกแบ่งออกเป็น 3 ส่วนใหญ่ๆ คือ ตัวแปร(Variable),
ตัวจัดการ(Operator), และ ตัวประกอบการจัดการ(Operand)
ผมจะไม่เจาะลึกมากนะครับ บอกเฉพาะที่ใช้บ่อยๆแน่ๆ ส่วนที่เหลือไปหาอ่านกันจากที่อื่นนะครับ
ส่วนที่ 1 ตัวแปร : ที่ Single, ตรงจุดนี้จะเป็นส่วนกำหนดตัวแปรที่ต้องการเปลี่ยนค่าครับ
ส่วนที่ 2 ตัวจัดการ : เราจะเลือกตัวจัดการครับ ที่ใช้แน่ๆคือ
- Set : จะเป็นการกำหนดให้ตัวแปรตั้งต้นมีค่าเท่ากับค่าของตัวประกอบการจัดการ
ตัวแปรตั้งต้น = ตัวประกอบการจัดการ
- Add : นำค่าของตัวประกอบการจัดการเพิ่มเข้าไปในตัวแปรตั้งต้น
ตัวแปรตั้งต้น = ตัวแปรตั้งต้น + ตัวประกอบการจัดการ
- Sub : ย่อมาจาก Subtract เป็นการนำค่าของตัวประกอบการจัดการไปหักออกจากตัวแปรตั้งต้น
ตัวแปรตั้งต้น = ตัวแปรตั้งต้น - ตัวประกอบการจัดการ
และ
ส่วนที่ 3 ตัวประกอบการจัดการ : เป็นการเลือกตัวที่จะมาเข้า Operator
กับตัวแปรที่ตั้งต้นที่เลือกเอาไว้ในข้อที่ 1 ครับ ที่น่าสนใจคือ
- Constant : กำหนดค่าตัวเลขเอง
- Variable : กำหนดค่าตัวแปรตัวนี้มีคำนวนเอาค่าตัวแปรของตัวอื่นมา
- Random : กำหนดค่าตัวแปรตัวนี้มีค่า สุ่ม (ตั้งแต่ตัวเลขช่องหน้า ถึง ตัวเลขช่องหลัง)
- Item : กำหนดค่าตัวแปรตัวนี้มีค่าเท่ากับ ID ไอเทม
- Actor : กำหนดค่าตัวแปรตัวนี้มีค่าเท่ากับ ค่าเสเตตัส ของฮีโร่คนใด
- Enemy : เหมือนกับอันบนแต่เป็นของศัตรู
- Character : กำหนดค่าตัวแปรตัวนี้มีค่าเท่ากับ หารหันหน้า ตำแหน่ง หรือ terrain ของเหตุการณ์
- Other : กำหนดค่าตัวแปรตัวนี้มีค่าเท่ากับค่าอื่นๆ เช่น ก้าวเดิน จำนวนสมาชิก เงินที่มี หรือเวลาที่เล่น
ส่วนการกำหนดค่าของสวิตช์นั้น ก็จะคล้ายๆกันครับ
เริ่มจากการเรียกผ่านคอมมานด์ Control Switches
หน้าต่างจะเหลือแค่สองส่วน คือ สวิตช์ กับ ค่าที่จะตั้งครับ ง่ายๆเลย
ส่วนที่ 1 Switch : ที่ Single, ตรงจุดนี้จะเป็นส่วนกำหนดสวิตช์ที่ต้องการเปลี่ยนค่าครับ
ส่วนที่ 2 Operation : สำหรับใช้กำหนดค่าของสวิตช์ คือ ON หรือ OFF
จริงๆแล้ว ตัวแปรใน RPG Maker (ไม่เว้นแม้แต่สวิตช์)
สามารถกำหนดค่าอะไรลงไปก็ได้ ทั้งตัวเลข และ สตริง
เพียงแต่การกำหนดค่าผ่านคำสั่งใน Event นั้น
จะสามารถกำหนดค่าได้แค่ ON หรือ OFF (True(จริง)
หรือ False(เท็จ))สำหรับสวิตช์ และค่าตัวเลขที่เป็น
จำนวนเต็มสำหรับตัวแปร
ตัวแปรหรือสวิตช์??? อย่างไหนควรใช้กับอย่างไหน???
ดังที่บอกไปว่า สวิตช์คือตัวแปรแบบหนึ่งที่"ลดเกรด"ลงมาให้แสดงค่าแค่ 2 ค่า คือ
ON หรือ OFF แต่ว่ากันตามหลักแล้ว ทั้งสองอย่างนี้มันก็คือตัวแปรปกติธรรมดา
แล้วมันมีหลักการอะไรมั้ยที่ใช้ในการพิจารณาว่าควรใช้อะไร?
จริงๆแล้วคำถามที่ผมเชื่อว่าหลายคนสงสัยมากกว่าก็คือ "สวิตช์มีเอาไว้ทำซากอะไร?"
ผมคิดเองนะครับ ผมไม่รู้หรอกว่ามีใครสงสัยหรือไม่ แต่ก็อย่างที่บอก
สวิตช์คือตัวแปรที่ลดเกรด คำถามคือทำไมต้องลดเกรดตัวแปรให้กลายเป็นสวิตช์
แล้วแยก 2 อย่างนี้ออกจากกัน?
คำตอบก็คือ สวิตช์เหมาะกับการนำเสนอค่าของ "นิพจน์" ครับ
ศัพท์นี้จะอยู่ในเรื่องตรรกศาสตร์ตอน ม. ปลายครับ ความหมายของมันก็คือ
"เหตุการณ์ที่จะมีผลได้แค่จริงหรือเท็จ"
เช่น
ฆาตรกรคือ...คุณนั่นแหล่ะ!! -> มั่ว! ฆาตรกรคือ..."คุณ"ต่างหาก!! เราสามารถบอกได้เลยว่ามันเป็นเท็จ
บิลลาเดนเป็นนายกรัฐมนตรีของอังกฤษ --> มั่วนิ่ม! แกเป็นประธานาธิบดีสหรัฐฯต่างหาก! เราบอกได้ว่ามันเท็จ
ทฤษฎี สัมพันธภาพของไอสไตน์มันตอแหล! --> ยังพิสูจน์ไม่ได้ บอกไม่ได้ว่าเป็นจริงหรือเท็จ, ก็คือไม่ใช่นิพจน์ (แต่เค้าเชื่อว่าจริงกันนะ)
ฉันใส่เสื้อแดงหรือเสื้อสีฟ้าดี? --> อะไรไม่รู้, ไม่ใช่นิพจน์
ฯลฯ
ตัวอย่างของ "นิพจน์" ในรูปแบบเกมนั้นมีมากมายก่ายกองครับ เช่น
- ค่า HP ของตัวเอกเต็ม
- ตัวเอกมีขลุ่ยแห่งเมโลเดี้ยนแล้ว
- แมททิวส์ไม่ได้อยู่ในกลุ่มปาร์ตี้
- ฯลฯ
ซึ่งสวิตช์จะมีค่า 2 ค่าคือ ON กับ OFF นั้นก็สามารถใช้แทนค่า จริง หรือ เท็จ
ของนิพจน์นั้นๆได้ ซึ่งมันสามารถใช้แสดงความเป็นจริงและเท็จของนิพจน์เหล่านั้น
ได้สะดวกและเห็นภาพครับ
แต่ถ้าใครอยากใช้ตัวแปรในการนำเสนอค่าจริง-เท็จของนิพจน์ ก็ทำได้ครับ
คุณอาจจะกำหนดว่า ถ้าจริงเป็น 1 ถ้าเท็จเป็น 0 (อย่างที่ทั่วไปทำกัน) หรือ
ถ้าจริงเป็น 147852 ถ้าเท็จ เป็น 906
มันก็แล้วแต่ความสะดวกครับ
สรุปก็คือ ตัวแปรเหมาะสำหรับการเก็บค่าทั่วไปที่เป็น"จำนวน"
สวิตช์เหมาะสำหรับการเก็บค่า"จริง-เท็จ"ของนิพจน์ ครับ
สรุปสาระสำคัญ
- ตัวแปรเป็นสิ่งที่เอาไว้เก็บค่าๆหนึ่ง
- ตัวแปรจะประกอบไปด้วย 2 ส่วนคือ การประกาศตัวแปร และ การกำหนดค่าตัวแปร
- ใน RPG Maker เราจะไม่ได้ทำการประกาศตัวแปรเองโดยตรง
แต่เราจะกำหนดว่าเราจะมีตัวแปรกี่ตัว และสวิตช์กี่ตัว
- ตัวแปรจะถูกประกาศในชื่อ $game_variables[x] และ สวิตช์จะถูกประกาศในชื่อ
$game_switches[x] โดยที่ x คือเลขตำแหน่งของตัวแปรหรือสวิตช์ที่สนใจ
- การตั้งชื่อสวิตช์/ตัวแปรในหน้าต่าง Switch/Variable ไม่ได้ส่งผลต่อชื่อตัวแปรจริงๆในตัวโค้ด
- เริ่มต้น, ตัวแปรทุกตัวจะถูกกำหนดค่าเป็น 0 และ สวิตช์ทุกตัวจะถูกกำหนดค่าเป็น OFF โดยอัตโนมัติ
- และเราสามารถกำหนดค่าตัวแปรและสวิตช์อีกครั้งได้ ผ่านทางคอมมานด์
Control Variables (ควบคุมตัวแปร) และ Control Switches (ควบคุมสวิทซ์) ตามลำดับ
- ตัวแปรเหมาะสำหรับการเก็บค่าทั่วไปที่เป็น"จำนวน" สวิตช์เหมาะสำหรับการเก็บค่า"จริง-เท็จ"ของนิพจน์ ครับ
เครดิตต้นฉบับ HenoUsabe
+พี่หนึ่งแต่งเติมเล็กน้อย
[/hide]
[tip] ความหมายของ ตัวแปร และ สวิทซ์