Raccoon Game RPG รวมพลนักพัฒนา
[Tip] ความหมายของ ตัวแปร และ สวิทซ์ (ส่วนหนึ่งที่ต้องรู้หากจะทำระบบเดินฟัน) Rpgvx_1024x768b

[Tip] ความหมายของ ตัวแปร และ สวิทซ์ (ส่วนหนึ่งที่ต้องรู้หากจะทำระบบเดินฟัน)

Go down

[Tip] ความหมายของ ตัวแปร และ สวิทซ์ (ส่วนหนึ่งที่ต้องรู้หากจะทำระบบเดินฟัน) Empty [Tip] ความหมายของ ตัวแปร และ สวิทซ์ (ส่วนหนึ่งที่ต้องรู้หากจะทำระบบเดินฟัน)

ตั้งหัวข้อ by boyhit on Mon Oct 10, 2011 5:13 am

ง่ายมากครับ, ตัวแปรคือเจ้าสิ่งที่ใช้กักเก็บค่าทั้งหลายเอาไว้ไงครับ

ในชีวิตประจำวันเราก็เกี่ยวข้องกับค่าต่างๆทั้งหลายที่เราได้จดจำเอาไว้
(อย่างเป็นธรรมชาติ หรือต้องจดจำ) เช่น...
- จำนวนขนมปังที่เราจะอบกินในตอนเช้า
- จำนวนชั่วโมงที่เราจะมานั่งปั่นทำเกมบน 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 นั้น
เราไม่ต้องทำอะไรเลยครับ!! ใช่ครับ! ไม่ต้องทำเลย โปรแกรมจะทำการสร้างตัวแปร
และสวิตช์ให้เราเอาไว้อัตโนมัติแล้วครับ เพียงแต่มันก็ยังมีสิ่งที่เราต้องทำอยู่ คือ
การใช้งานตัวแปร

1. กำหนดว่าโปรแกรมจะมีตัวแปรทั้งหมดกี่ตัว
มันคือส่วนนี้ครับ



จำนวนตัวแปรที่เรากำหนดนั้น โปรแกรมจะนำไปสร้างตัวแปรในรูปของ Array ซึ่งเวลาเราต้องการจะเรียกใช้, Syntax ก็จะมีลักษณะดังนี้$game_variables[x]โดยที่ x คือ เลขลำดับของตัวแปรตัวที่เราสนใจ


Array
Array คือตัวแปรที่มีลักษณะ "หลายมิติ"

ในลักษณะของตัวแปรแบบปกตินั้น จะเป็นลักษณะของ"กล่อง"กล่องหนึ่งที่มีการเก็บของเอาไว้ข้างใน ของชิ้นนั้นก็คือ "ค่าของตัวแปร"



แต่ตัวแปรแบบ Array นั้น จะเป็นลักษณะของ
กล่องกล่องหนึ่งที่ข้างในกล่องมีกล่องข้างในอีก และแต่ละกล่องจะมีการแปะ
"ตำแหน่ง"ของกล่องข้างใน



โดยปกติแล้ว การประกาศตัวแปรจำพวกนี้จะเขียนอยู่ในรูป<ตัวแปร>[จำนวนตำแหน่งที่ต้องการ]เช่น ในภาษา C

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
ตำแหน่ง$game_variables[51]และทำการทิ้งตัวแปรลำดับที่ 0 ไปเลย
และให้ตัวแปรที่ตัวแรกเริ่มต้นที่ตำแหน่ง 1

Switch ก็จะมีลักษณะเดียวกันกับ ตัวแปร เป๊ะเลยครับ

แต่ Switch จะถูกประกาศเป็นชื่อ$game_switches[x]แทน


2. กำหนดชื่อของตัวแปร

ทำอย่างนี้ครับ



ซึ่งจริงๆแล้ว ชื่อพวกนี้จะปรากฏให้เห็นผ่านคอมมานด์ใน Event เท่านั้น
เพราะอย่างที่ผมได้กล่าวเอาไว้แล้วว่า ชื่อของตัวแปรและสวิตช์ถูกประกาศออกมาเป็นอย่างไร

การตั้งชื่อตัวแปรและสวิตช์นั้น (คงเป็น common sense ของทุกคนอยู่แล้ว) คือ
ให้ตั้งชื่อให้อ่านแล้วเข้าใจความหมายว่าตัวแปร, สวิตช์ นั้นๆเอาไว้ใช้ทำอะไร


ตัวอย่างการตั้งชื่อที่ดี
- จำนวนวันที่ผ่านไป (ตัวแปร)
- อยู่ในแผนที่โลก (สวิตช์)

ตัวอย่างการตั้งชื่อที่แย่
- abc
- asljdlk
- ตัวแปรตัวที่ 1

ทำตามมาตรฐานครับ แล้วคุณจะรู้สึกขอบคุณตัวเองที่ได้ตั้งชื่อให้อ่านรู้เรื่อง
ในยามที่คุณกลับมาแก้ไขอะไรอีกครั้ง จะได้รู้ว่าต้องแก้ตรงไหน


การกำหนดค่าตัวแปร

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

ในการโปรแกรมมิ่งนั้น เราจะเรียกสภาพอย่างนี้ว่า ตัวแปรมีค่าเป็น "Null" หรือ ว่างเปล่า ครับ

ดังนั้นลำดับถัดมาคือ เราจะต้องประกาศค่าของตัวแปรครับ

<blockquote><blockquote>ไม่แน่เสมอไปที่ตัวแปรที่ถูกสร้างขึ้นมา"เฉยๆ"จะมีค่าเป็น Null เช่น ในภาษา C
(int, long, etc.) และไม่ได้รับการประกาศค่า จะกำหนดค่าเป็น 0 ให้โดยอัตโนมัติครับ
แต่ก็เช่นกัน สิ่งที่ชัวร์ที่สุดคือการสั่งประกาศค่าตัวแปรทุกครั้งครับ</blockquote>
</blockquote>

ประเด็นนี้ค่อนข้างสำคัญในทางโปรแกรมมิ่งเลยครับ
ตัวแปรมีค่าเป็น 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

<blockquote><blockquote>จริงๆแล้ว ตัวแปรใน RPG Maker (ไม่เว้นแม้แต่สวิตช์)
สามารถกำหนดค่าอะไรลงไปก็ได้ ทั้งตัวเลข และ สตริง
เพียงแต่การกำหนดค่าผ่านคำสั่งใน Event นั้น
จะสามารถกำหนดค่าได้แค่ ON หรือ OFF (True(จริง)
หรือ False(เท็จ))สำหรับสวิตช์ และค่าตัวเลขที่เป็น
จำนวนเต็มสำหรับตัวแปร</blockquote>
</blockquote>


ตัวแปรหรือสวิตช์??? อย่างไหนควรใช้กับอย่างไหน???
ดังที่บอกไปว่า สวิตช์คือตัวแปรแบบหนึ่งที่"ลดเกรด"ลงมาให้แสดงค่าแค่ 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
เครดิตเกลาคำพูด, เสริมความ Shinryu


[Tip] ความหมายของ ตัวแปร และ สวิทซ์ (ส่วนหนึ่งที่ต้องรู้หากจะทำระบบเดินฟัน) Lwkdk
[Tip] ความหมายของ ตัวแปร และ สวิทซ์ (ส่วนหนึ่งที่ต้องรู้หากจะทำระบบเดินฟัน) Brmxp
[Tip] ความหมายของ ตัวแปร และ สวิทซ์ (ส่วนหนึ่งที่ต้องรู้หากจะทำระบบเดินฟัน) Frmvx
boyhit
boyhit
Admin
Admin

ชื่อเล่น : เเอล
ความฝัน : ศิลปิน
จำนวนข้อความ : 1130
เครดิต : 3356
วันที่สมัคร : 09/10/2011
คะเเนนน้ำใจ : 11
เพศ : Male อายุ : 20
เหรียญรางวัล : [Tip] ความหมายของ ตัวแปร และ สวิทซ์ (ส่วนหนึ่งที่ต้องรู้หากจะทำระบบเดินฟัน) Medalhead2

http://raccoongame-rpg.thai-forum.net

ขึ้นไปข้างบน Go down

ขึ้นไปข้างบน


 
Permissions in this forum:
คุณไม่สามารถพิมพ์ตอบ