Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[พื้นฐานสร้างเกม] เรียนสร้างเกมกับมิกิจัง : บทที่ 4 นิพจน์ (Expression)
#1
จากบทที่แล้ว บทที่ 3 อัลกอรึทึม (Algorithm) เราได้เรียนรู้วิธีการเขียนอัลกอริทึมแบบต่าง ๆ กันไปแล้ว การเขียนอัลกอริทึมส่วนใหญ่นั้นจะต้องมีการคำนวณเกิดขึ้นด้วย ดังนั้นในบทนี้เราจะมาเรียนวิธีการดำเนินการต่าง ๆ ทางคณิตศาสตร์เพื่อใช้ในการเขียนอัลกอริทึมกัน





ตัวแปรคืออะไร?


ตัวแปร (Variable) หมายถึงค่าที่ถูกเก็บไว้ในหน่วยความจำของอุปกรณ์ สามารถเปลี่ยนแปลงได้ตามที่เราต้องการ ตัวแปรสามารถใช้ประโยชน์ได้หลายอย่าง เช่น นับจำนวนครั้งที่วนลูป, คำนวณเลข, รับข้อมูลจากคีย์บอร์ด, เก็บคะแนนของผู้เล่น เป็นต้น การที่เราจะใช้ตัวแปรได้นั้นเราจะต้องประกาศตัวแปรก่อน การประกาศตัวแปร (Variable Declaration) เราต้องตั้งชื่อที่จะใช้เรียกและกำหนดประเภทของตัวแปรนั้น กฎการตั้งชื่อตัวแปรมีคร่าว ๆ ดังนี้
  • ต้องไม่ซ้ำกับชื่อตัวแปรหรือชื่อเฉพาะอย่างอื่นที่มีอยู่ก่อนแล้ว
  • ต้องไม่ซ้ำกับคำสงวน (Reserved Word) ของภาษาอุปกรณ์หรือเกมเอนจินนั้น
  • ต้องขึ้นต้นด้วยตัวอักษรเท่านั้น (A-Z, a-z) นอกจากนั้นจะเป็นตัวอักษร ตัวเลข หรือสัญประกาศ (_) ก็ได้ แต่ต้องไม่ใช่เครื่องหมายวรรคตอนใด ๆ ยกเว้นสัญประกาศ (กฎข้อนี้อาจแตกต่างไปในแต่ละภาษาอุปกรณ์หรือเกมเอนจิน)
  • ต้องไม่มีการเว้นวรรคใด ๆ
  • ควรใช้ภาษาอังกฤษในการตั้งชื่อตัวแปร
  • ควรตั้งชื่อตัวแปรที่สื่อความหมาย


คำสงวนหมายถึงคำที่เป็นคำสั่งของภาษาอุปกรณ์หรือเกมเอนจินตัวนั้น เช่น ในภาษา C จะใช้คำสั่ง if ในการตรวจสอบเงื่อนไข ดังนั้นคำว่า if จึงเป็นคำสงวนของภาษา C สาเหตุที่ต้องมีคำสงวนเพื่อป้องกันไม่ให้ผู้ใช้งานตั้งชื่อตัวแปรซ้ำกับคำสั่งที่มีอยู่เดิม ซึ่งจะทำให้โปรแกรมสับสนว่านี่เป็นคำสั่งหรือชื่อตัวแปรกันแน่ คำสงวนในแต่ละภาษาอุปกรณ์และเกมเอนจินก็มีแตกต่างกันออกไป ผู้อ่านต้องค้นหาเพิ่มเติมเองว่าคำสงวนของภาษาอุปกรณ์หรือเกมเอนจินที่ผู้อ่านใช้งานมีคำอะไรบ้าง


ชื่อตัวแปรที่ดีควรสื่อความหมายในตัวเอง เช่น User_Name, answer, Time เป็นต้น ไม่ควรตั้งชื่อตัวแปรมั่ว ๆ อย่าง xyz หรือ GTC3HA1 เนื่องจากตัวเราเองอาจลืมว่าตัวแปรนั้นไว้ใช้ทำอะไรเมื่อเวลาผ่านไป การตั้งชื่อตัวแปรเป็นภาษาอังกฤษมีเรื่องที่ต้องระวังอยู่อย่างหนึ่งคือเรื่องตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก ภาษาอุปกรณ์และเกมเอนจินส่วนใหญ่มักมองว่าตัวพิมพ์ใหญ่และตัวพิมพ์เล็กนั้นแตกต่างกัน (Case Sensitive) เช่น hello, Hello, HELLO โปรแกรมจะมองสามชื่อนี้เป็นคนละชื่อกัน และหมายถึงตัวแปรคนละตัวกัน แต่ก็พอมีบางภาษาอุปกรณ์และเกมเอนจินที่มองตัวพิมพ์ใหญ่และตัวพิมพ์เล็กเป็นตัวเดียวกัน (Case Insensitive) โดยมองว่า world, World, WORLD เป็นชื่อเดียวกันและหมายถึงตัวแปรตัวเดียวกัน






ประเภทของตัวแปรมีอะไรบ้าง?


อย่างที่บอกไปว่า "ตัวแปรคือค่าที่ถูกเก็บไว้" ค่าที่ถูกเก็บไว้นั้นมีอยู่หลายประเภท ซึ่งแต่ละภาษาอุปกรณ์และเกมเอนจินก็แบ่งประเภทย่อยของตัวแปรแตกต่างกันออกไป มีตัวแปรให้เลือกใช้เป็นสิบกว่าแบบ แต่ประเภทใหญ่ ๆ ของตัวแปรในแต่ละภาษาอุปกรณ์และเกมเอนจินจะคล้ายคลึงกัน ประเภทใหญ่ ๆ ของตัวแปร ได้แก่


1. ตัวแปรเก็บจำนวนเต็ม (Integer Variable) ใช้เก็บจำนวนเต็มเท่านั้น มีการแบ่งย่อยอีกว่าเป็นแบบเก็บได้เฉพาะจำนวนเต็มบวกกับจำนวนเต็มศูนย์ (จำนวนเต็มตั้งแต่ศูนย์ขึ้นไป) หรือเป็นแบบเก็บจำนวนเต็มได้ทั้งหมด (รวมทั้งจำนวนเต็มลบด้วย) นอกจากนี้ยังมีการแบ่งตัวแปรประเภทนี้เป็นหลายขนาดตามขอบเขตที่สามารถเก็บได้อีกด้วย ยิ่งตัวแปรมีขนาดใหญ่มากเท่าไรก็ยิ่งเก็บค่าที่มีจำนวนหลักได้มากเท่านั้น ถ้านำตัวแปรประเภทนี้มาหารกัน ผลลัพธ์ที่ได้จะเป็นจำนวนเต็มเสมอ เช่น 11 หารด้วย 4 จะได้ผลลัพธ์เป็น 3 เนื่องจากตัวแปรประเภทนี้จะไม่คิดทศนิยม และจะปัดเศษลงเสมอ (เพราะไม่คิดทศนิยมเลยไม่รู้ว่าทศนิยมเป็นเท่าไร จึงปัดลงไว้ก่อน)


2. ตัวแปรเก็บจำนวนจริง (Floating Point Variable) ตัวแปรประเภทนี้จะสามารถเก็บข้อมูลได้มากกว่าตัวแปรประเภทแรก เพราะสามารถเก็บจำนวนที่มีทศนิยมได้ แต่ก็ต้องแลกมากับขนาดของตัวแปรที่ใหญ่มากขึ้นด้วย


3. ตัวแปรเก็บตัวอักษร (Character Variable) ใช้เก็บตัวอักษรใด ๆ ก็ได้ 1 ตัวอักษร ถ้าใช้ตัวแปรประเภทนี้เก็บค่าที่เป็นตัวเลข โปรแกรมจะมองว่าตัวเลขตัวนั้นเป็นเพียงตัวอักษรตัวหนึ่ง ไม่สามารถนำมาดำเนินการใด ๆ ทางคณิตศาสตร์ได้


4. ตัวแปรเก็บข้อความ (String Variable) ใช้เก็บตัวอักษรใด ๆ ก็ได้ ไม่จำกัดจำนวนตัวอักษร บางภาษาอุปกรณ์หรือเกมเอนจินอาจไม่มีตัวแปรประเภทนี้ เนื่องจากตัวแปรประเภทนี้ไม่ได้เป็นตัวแปรแบบเก็บค่าจริง ๆ (Value Variable) แต่เป็นตัวแปรแบบอ้างอิงค่าอื่น (Reference Variable) ตัวแปรประเภทนี้เกิดจากการนำตัวแปรเก็บตัวอักษรมาสร้างเป็นอาร์เรย์ (Array) (เป็นการนำตัวแปรประเภทที่ 3 มาเรียงต่อกันเป็นชุด ไม่ได้เป็นตัวแปรประเภทใหม่จริง ๆ)


5. ตัวแปรเก็บค่าความจริง (Boolean Variable) ใช้เก็บค่าความจริงทางตรรกศาสตร์ ค่าที่เก็บได้มีอยู่ 2 ค่าคือ "จริง (True)" และ "เท็จ (False)" เท่านั้น ตัวแปรประเภทนี้มีอยู่แบบเดียว ไม่สามารถแบ่งประเภทย่อยได้อีก ตัวแปรประเภทนี้มีเพียงขนาดเดียวคือมีขนาด 1 bit ในทุก ๆ ภาษาอุปกรณ์และเกมเอนจิน






นิพจน์คืออะไร?


นิพจน์ (Expression) หมายถึงข้อความทางคณิตศาสตร์ ประกอบไปด้วยค่าคงที่ ตัวแปร และตัวดำเนินการ นิพจน์เรียกเป็นภาษาไทยได้อีกอย่างว่า "ประโยคสัญลักษณ์" ตัวอย่างนิพจน์ เช่น 42 ÷ 7 = 6, 3n + 2 = 1 , x² + 4x + 7 < 0 เป็นต้น


นิพจน์ในทางอุปกรณ์จะมีลักษณะแตกต่างจากนิพจน์ในทางคณิตศาสตร์อยู่นิดหน่อย อย่างที่ได้เกริ่นไปแล้วในบทที่ 3 นิพจน์ในทางอุปกรณ์ที่มีเครื่องหมายเท่ากับ (=) จะเป็นการนำค่าที่อยู่ฝั่งขวาของเครื่องหมายเท่ากับมาไว้ในค่าที่อยู่ฝั่งซ้ายของเครื่องหมายเท่ากับ เช่น AuthorName = "Mikichan" หมายความว่าให้ตัวแปร AuthorName มีค่าเท่ากับข้อความ "Mikichan", A = B หมายความว่าให้ตัวแปร A มีค่าเท่ากับตัวแปร B โดยที่ตัวแปร B มีค่าเท่าเดิม,
N = N + 1 (ปัญหาโลกแตกสำหรับมือใหม่!!!) หมายความว่าให้ตัวแปร N ค่าใหม่มีค่าเท่ากับตัวแปร N ค่าเดิมบวกด้วย 1 แล้วเก็บตัวแปร N ค่าใหม่ในหน่วยความจำ และลบตัวแปร N ค่าเดิมออกจากหน่วยความจำ (เนื่องจากตัวแปร N ค่าเดิมถูกตัวแปร N ค่าใหม่เขียนทับ) ยกตัวอย่างเช่น ตอนแรกให้ N = 3 พอถึงคำสั่ง N = N + 1 โปรแกรมจะมองว่า N = 3 + 1 ดังนั้นเมื่อโปรแกรมทำคำสั่งนี้เสร็จแล้ว ตัวแปร N ก็จะมีค่าเท่ากับ 4


จากตัวอย่างด้านบนจะสังเกตได้ว่า ค่าที่อยู่ฝั่งซ้ายของเครื่องหมายเท่ากับจะต้องเป็นตัวแปรเสมอ และจะมีตัวแปรเพียงตัวเดียวเท่านั้น เนื่องจากเครื่องหมายเท่ากับคือการนำค่าฝั่งขวามาไว้ในค่าฝั่งซ้าย ดังนั้นค่าที่อยู่ฝั่งซ้ายจะต้องเป็นค่าที่สามารถเปลี่ยนแปลงเพื่อรับข้อมูลได้ ซึ่งค่าที่เปลี่ยนแปลงได้ก็คือตัวแปรนั่นเอง และสาเหตุที่ฝั่งซ้ายมีตัวแปรได้เพียงตัวเดียวก็เพื่อให้เก็บค่าลงตัวแปรได้อย่างถูกต้อง สมมติว่ามีนิพจน์หนึ่งคือ A + B = 104 ปัญหาคือโปรแกรมจะเลือกเก็บค่า 104 ไว้ที่ตัวแปร A หรือตัวแปร B ดีล่ะ ในเมื่อมีตัวแปรอยู่ฝั่งซ้ายตั้งสองตัว โปรแกรมโดยทั่วไปจะไม่เก็บค่าไว้ครึ่ง ๆ กลาง ๆ โดยยังติดตัวแปรไว้หลายตัวอย่างให้ A + B เก็บค่าเท่ากับ 104 ถ้าจะเก็บค่าก็ต้องเลือกว่าจะเก็บค่าที่ตัวแปรใดตัวแปรหนึ่งไปเลย ดังนั้นฝั่งซ้ายของเครื่องหมายเท่ากับจึงมีตัวแปรได้เพียงตัวเดียวเท่านั้น






ตัวดำเนินการคืออะไร?


ตัวดำเนินการ (Operator) หมายถึงเครื่องหมายที่ใช้ดำเนินการอย่างใดอย่างหนึ่งกับค่าคงที่หรือตัวแปรกลุ่มใดกลุ่มหนึ่ง เพื่อให้ได้ผลลัพธ์ออกมาในรูปแบบใดรูปแบบหนึ่ง ทุกนิพจน์จะต้องมีตัวดำเนินการอยู่ด้วยเสมอ ตัวอย่างตัวดำเนินการ เช่น ตัวดำเนินการบวก (+) คือการนำจำนวนสองจำนวนที่อยู่ฝั่งซ้ายและขวามารวมกัน เช่น 1 + 2 หมายถึงการนำ 1 มารวมกับ 2 ผลลัพธ์ที่ได้มีค่าเท่ากับ 3, ตัวดำเนินการคูณ (×) คือการใช้ตัวดำเนินการบวกมาดำเนินการกับจำนวนที่อยู่ฝั่งซ้ายเป็นจำนวนครั้งเท่ากับจำนวนที่อยู่ฝั่งขวาลบด้วยหนึ่ง เช่น 4 × 6 หมายถึงการนำ 4 + 4 ดำเนินการต่อเนื่องกันจำนวน 5 ครั้ง (บวกกัน 5 ครั้งหมายความว่ามีเลข 4 อยู่ทั้งหมด 6 ตัว) ผลลัพธ์ที่ได้เท่ากับ 24 เป็นต้น


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





ตัวดำเนินการทางคณิตศาสตร์มีอะไรบ้าง?


ตัวดำเนินการทางคณิตศาสตร์ (Arithmetic Operator) คือตัวดำเนินการที่ใช้คำนวณตัวเลข ผลลัพธ์ที่ได้จะออกมาเป็นตัวเลข ตัวดำเนินการประเภทนี้ ได้แก่



ตัวดำเนินการ
คำอธิบาย
ตัวอย่างวิธีใช้
+บวกA = 3 + 6.25
ผลลัพธ์ : A มีค่าเท่ากับ 9.25
-ลบA = 21 - 17
ผลลัพธ์ : A มีค่าเท่ากับ 4
*คูณA = 8 * 2.5
ผลลัพธ์ : A มีค่าเท่ากับ 20
/หาร (ปกติ)A = 7 / 5
ผลลัพธ์ : A มีค่าเท่ากับ 1.4
Modหารเอาเศษ
(Modulo)
A = 7 Mod 5
ผลลัพธ์ : A มีค่าเท่ากับ 2
^ยกกำลังA = 2 ^ 10
ผลลัพธ์ : A มีค่าเท่ากับ 1024





ตัวดำเนินการเปรียบเทียบมีอะไรบ้าง?


ตัวดำเนินการเปรียบเทียบ (Comparison Operator) คือตัวดำเนินการที่ใช้เปรียบเทียบค่าทั้งสองฝั่ง ผลลัพธ์ที่ได้จะออกมาเป็นค่าความจริง ตัวดำเนินการประเภทนี้ ได้แก่



ตัวดำเนินการ
คำอธิบาย
ตัวอย่างวิธีใช้
==เท่ากับ (เปรียบเทียบ)ถ้า 3 == 4 แล้ว
ผลลัพธ์ : เท็จ
!=ไม่เท่ากับถ้า 12 != -14 แล้ว
ผลลัพธ์ : จริง
<น้อยกว่าถ้า 7 < 21 แล้ว
ผลลัพธ์ : จริง
<=น้อยกว่าหรือเท่ากับถ้า 0 <= 0 แล้ว
ผลลัพธ์ : จริง
>มากกว่าถ้า -128 > 6 แล้ว
ผลลัพธ์ : เท็จ
>=มากกว่าหรือเท่ากับถ้า 64 >= 97 แล้ว
ผลลัพธ์ : เท็จ





******อ่านบทความต่อในความคิดเห็นต่อไป******
[Image: 6977f46ce7a5965e6d2d71911a3fbaa9.png]
[-] The following 2 users say Thank You to Mikichan for this post:
  • dreamknight, slost
Reply
#2
ตัวดำเนินการทางตรรกศาสตร์มีอะไรบ้าง?


ตัวดำเนินการทางตรรกศาสตร์ (Logical Operator) คือตัวดำเนินการที่ใช้ดำเนินการกับค่าความจริง ค่าที่ใส่เข้าไปจะเป็นนิพจน์ที่มีตัวดำเนินการเปรียบเทียบ ค่าความจริง หรือตัวแปรเก็บค่าความจริงก็ได้ ผลลัพธ์ที่ได้จะออกมาเป็นค่าความจริง ตัวดำเนินการประเภทนี้ ได้แก่



***หมายเหตุ : แทนจริงเป็น T และแทนเท็จเป็น F เพื่อความง่ายในการอ่าน***


ตัวดำเนินการ
คำอธิบาย
แจกแจงกรณี
ตัวอย่างวิธีใช้
และ (And)ผลลัพธ์จะเป็นจริงก็ต่อเมื่อค่าทุกค่าเป็นจริง
นอกจากนั้นผลลัพธ์จะเป็นเท็จ
T และ T : ได้ T
T และ F : ได้ F
F และ T : ได้ F
F และ F : ได้ F
จริง และ (6 == 10)
ผลลัพธ์ : เท็จ
หรือ (Or)ผลลัพธ์จะเป็นจริงก็ต่อเมื่อมีค่าอย่างน้อยหนึ่งค่าเป็นจริง
นอกจากนั้นผลลัพธ์จะเป็นเท็จ
T หรือ T : ได้ T
T หรือ F : ได้ T
F หรือ T : ได้ T

F หรือ F : ได้ F
(2 <= -3) หรือ (1.59 < 1.61)
ผลลัพธ์ : จริง
นิเสธ (Not)ทำให้ค่าความจริงเป็นตรงกันข้ามนิเสธ T : ได้ F
นิเสธ F : ได้ T
ให้ A = จริง;
A = นิเสธ A
ผลลัพธ์ : เท็จ





ลำดับของตัวดำเนินการเรียงอย่างไร?


เมื่อมีตัวดำเนินการหลายตัวอยู่ในนิพจน์เดียวกัน เราต้องทำตามลำดับของตัวดำเนินการ (Operator Precedence) โดยเริ่มทำจากตัวดำเนินการที่มีลำดับสูงไปหาตัวดำเนินการที่มีลำดับต่ำ ถ้ามีตัวดำเนินการที่อยู่ในลำดับเดียวกันหลายตัว ให้ทำจากซ้ายไปขวา ลำดับของตัวดำเนินการเหล่านี้เป็นลำดับสากลที่เหมือนกันในทุกภาษาอุปกรณ์และเกมเอนจิน เพื่อให้ได้ผลลัพธ์ที่เหมือนกัน แต่ในทางปฏิบัติการเขียนนิพจน์ที่มีตัวดำเนินการหลายตัว ผู้อ่านควรเขียนวงเล็บกำกับตัวดำเนินการที่ทำก่อน เพื่อความสะดวกในการอ่านนิพจน์ ลำดับของตัวดำเนินการเรียงจากสูงไปต่ำ ดังนี้



ลำดับที่
ตัวดำเนินการ
คำอธิบาย
1 (สูงที่สุด)() []วงเล็บ (เราจะไม่ใช้เครื่องหมาย {} เป็นตัวดำเนินการ)
2นิเสธ - (Unary)ตัวดำเนินการตรงข้าม ได้แก่ "นิเสธ" และเครื่องหมาย "-" หน้าตัวเลข เช่น -3, -10 (จำนวนลบ)
3^ Rootยกกำลัง ถอดราก
4* / Modคูณ หาร หารเอาเศษ
5+ -บวก ลบ
6< <= > >=ตัวดำเนินการเปรียบเทียบ น้อยกว่า มากกว่า
7== !=ตัวดำเนินการเปรียบเทียบ เท่ากับ ไม่เท่ากับ
8และและ
9หรือหรือ
10 (ต่ำที่สุด)=เท่ากับ นำค่าที่อยู่ฝั่งขวาไปไว้ในฝั่งซ้าย


ตัวอย่างที่ 1 : A = 13 + 6 * 10 / 2

วิธีคิด : A = [13 + ((6 * 10) / 2)]
A = [13 + (60 / 2)]
A = [13 + 30]

ผลลัพธ์ : A = 43


ตัวอย่างที่ 2 : B = 14 * (6 + 3 - 1) / 2

วิธีคิด : B = [14 * ((6 + 3) - 1)] / 2
B = [14 * (9 - 1)] / 2
B = [14 * 8] / 2
B = 112 / 2

ผลลัพธ์ : B = 56


ตัวอย่างที่ 3 : C = 45.12 < 56.07 และ N == N หรือ 8 * 4 ^ -2 >= 7 + 9 และ X - 6 > X

วิธีคิด : C = [[(45.12 < 56.07) และ (N == N)] หรือ [(8 * (4 ^ (-2)) >= (7 - 9)) และ ((X - 6) > X)]]
C = [[(45.12 < 56.07) และ (N == N)] หรือ [((8 * 0.0625) >= (-2)) และ ((X - 6) > X)]]
C = [[(45.12 < 56.07) และ (N == N)] หรือ [(0.5 >= (-2)) และ ((X - 6) > X)]]
C = [[จริง และ จริง] หรือ [เท็จ และ เท็จ]]
C = [จริง หรือ เท็จ]

ผลลัพธ์ : C = จริง






ในบทนี้เราได้เรียนรู้เกี่ยวกับตัวแปร นิพจน์ และตัวดำเนินการพื้นฐานที่จำเป็นต้องทราบในการเขียนอัลกอริทึมกันแล้ว สำหรับผู้อ่านที่ไม่ชอบวิชาคณิตศาสตร์อาจรู้สึกเบื่อกับเนื้อหาในบทนี้ ผู้เขียนขอบอกเลยว่าเนื้อหาในบทนี้เป็นเนื้อหาสำคัญมากที่จะใช้ในการพัฒนาเกม ผู้อ่านต้องอดทนทำความเข้าใจกับเนื้อหาในบทนี้ให้ได้ อย่างในบทที่แล้วเราได้มีการใช้ตัวแปรและนิพจน์อย่างง่าย ๆ กันไปบ้างแล้ว เช่น ใช้นิพจน์ในเงื่อนไขการวนลูป, ใช้ตัวแปรนับจำนวนครั้งที่วนลูป, ใช้ตัวแปรรับข้อมูลจากคีย์บอร์ด, ใช้ตัวแปรคำนวณเลข เนื้อหาในบทนี้จึงเป็นเนื้อหาอย่างละเอียดเกี่ยวกับตัวแปร นิพจน์ และตัวดำเนินการที่สำคัญที่จะใช้เขียนอัลกอริทึม


เครื่องหมายที่ใช้แทนตัวดำเนินการในแต่ละภาษาอุปกรณ์และเกมเอนจินอาจแตกต่างกันออกไป และในภาษาอุปกรณ์หรือเกมเอนจินจริง ๆ อาจมีตัวแปรและตัวดำเนินการแบบอื่นอีก เช่น ตัวแปรแบบค่าคงที่ ตัวแปรแบบอาร์เรย์ ตัวดำเนินการแบบบิต เป็นต้น เนื้อหาในบทความบทนี้จะสอนเพียงแค่ตัวแปร นิพจน์ และตัวดำเนินการพื้นฐานที่จำเป็นในการพัฒนาเกมเท่านั้น สำหรับเนื้อหาที่ลึกกว่านี้ผู้อ่านต้องไปศึกษาเพิ่มเติมจากบทความที่สอนภาษาอุปกรณ์หรือเกมเอนจินตัวนั้นเอง


สำหรับผู้อ่านที่ไม่ชอบวิชาคณิตศาสตร์ผู้เขียนขอบอกว่า "คณิตศาสตร์ที่ใช้ในการพัฒนาเกมมีแค่พวกบวกลบคูณหารและตรรกศาสตร์เบื้องต้นเท่านั้น" เป็นเนื้อหาง่าย ๆ ที่แม้แต่เด็กมัธยมต้นก็เข้าใจได้ไม่ยาก เนื้อหาในบทนี้เป็นเนื้อหาเชิงทฤษฎี เนื้อหาจึงอาจจะยากหน่อย นิพจน์ต่าง ๆ อาจจะดูยาวและซับซ้อน แต่เมื่อถึงเวลาปฏิบัติจริงส่วนใหญ่จะเป็นนิพจน์ง่าย ๆ เช่น A = B + C, X = X + 1 เป็นต้น นิพจน์ยาก ๆ ยาว ๆ จะไม่ค่อยได้เจอบ่อยนักเท่าไร ดังนั้นผู้อ่านไม่ต้องกังวลหรือท้อใจจนเลิกพัฒนาเกมไปก่อน แต่สำหรับผู้อ่านที่อยากจะพัฒนาเกมสามมิติแล้วล่ะก็ ขอให้ผู้อ่านทำใจเผื่อไว้ได้เลย คณิตศาสตร์กับฟิสิกส์มาเต็มแน่นอน ทั้งเมตริกซ์ เวกเตอร์ ตรีโกณมิติ แรงและการเคลื่อนที่ โมเมนตัม ฯลฯ เกมเอนจินอาจจะพอช่วยได้อยู่บ้าง แต่ก็ควรจะศึกษาเรื่องพวกนี้ไว้อยู่ดี ส่วนผู้อ่านที่อยากจะสร้างเกมสองมิตินั้นไม่ต้องกังวลไป อย่างที่บอกไปแล้วว่ามีแค่พวกบวกลบคูณหารและตรรกศาสตร์เบื้องต้นอย่าง "และ", "หรือ", "นิเสธ" เท่านั้น ไม่ได้ลงลึกอะไรมาก


ก่อนจะลาไปในบทนี้ผู้เขียนขอให้ผู้อ่านมีกำลังใจในการพัฒนาเกมต่อไป เมื่อใดที่ท้อให้นึกถึงตอนที่เราเพิ่งจะเริ่มเรียนการพัฒนาเกม นึกถึงตอนที่เราอยากพัฒนาเกมใหม่ ๆ เข้าไว้ ความฝันในตอนนั้นเปล่งประกายสวยงาม อย่าให้ความยากลำบากและความเหน็ดเหนื่อยมาทำลายความฝันของเราได้ ผู้อ่านสามารถติดตามบทความ "เรียนสร้างเกมกับมิกิจัง" บทใหม่ได้ทุกวันศุกร์ ในบทต่อไปนั้นผู้เขียนขอบอกเลยว่าไม่ได้ลงลึกเรื่องคณิตศาสตร์แล้ว ส่วนจะเป็นเรื่องอะไรนั้นคลิกอ่านต่อได้เลย บทที่ 5 มาสร้างเกมแรกกันเถอะ




"It is difficult to say what is impossible, for the dream of yesterday is the hope of today and the reality of tomorrow." - Robert H. Schuller

"มันเป็นสิ่งที่ยากที่จะบอกว่าอะไรเป็นไปไม่ได้ ความฝันของเมื่อวานอาจเป็นความหวังในวันนี้ และอาจเป็นความจริงได้ในวันพรุ่งนี้"




-------------------------------------------------------------------------------------------------------------------------------------------------


ช่างสังเกตท้ายบท


ถ้าผู้อ่านคนไหนเป็นคนช่างสังเกต อาจสงสัยว่า "ในบทก่อนหน้าผู้เขียนใช้คำว่า 'อุปกรณ์อ่านคำสั่ง' แต่ทำไมในบทนี้ถึงใช้คำว่า 'โปรแกรมอ่านคำสั่ง'?" สาเหตุที่ผู้เขียนใช้คำไม่เหมือนกันเพราะมุมมองในแต่ละบทไม่เหมือนกัน ถ้าบอกว่า "อุปกรณ์อ่านคำสั่ง" จะเป็นการมองในมุมมองของฮาร์ดแวร์ (Hardware) แต่ถ้าบอกว่า "โปรแกรมอ่านคำสั่ง" จะเป็นการมองในมุมมองของซอฟต์แวร์ (Software) ในบทที่ 1 มีเนื้อหาเกี่ยวกับเรื่องหลักการทำงานของเกม เรามองว่า "เกมทำงานบนฮาร์ดแวร์" ดังนั้นจึงใช้คำว่า "อุปกรณ์" ส่วนในบทนี้มีเนื้อหาเกี่ยวกับนิพจน์ เรามองว่า "ตัวแปร นิพจน์ และตัวดำเนินการต่าง ๆ อยู่บนซอฟต์แวร์" ซึ่งซอฟต์แวร์นั้นก็คือเกมของเรานั่นเอง ดังนั้นจึงใช้คำว่า "โปรแกรม" (ในมุมมองของซอฟต์แวร์เราจะไม่มองว่าเป็นแอพพลิเคชัน เนื่องจากเรากำลังมองชุดของคำสั่งอยู่ ซึ่งชุดของคำสั่งก็คือโปรแกรมนั่นเอง)






แบบฝึกหัดประจำบทที่ 4


แบบฝึกหัดที่ 4.1 จงบอกว่าตัวแปรที่เก็บค่าต่อไปนี้ควรเป็นตัวแปรประเภทใดจึงจะเหมาะสมที่สุด

1. MyName = "Mikichan"
2. HisAge = 5
3. HerHeight = 162.5
4. YourGender = "Female"
5. Do_You_Have_Children = จริง
6. FavouriteCharacter = "A"
7. HowManyFriendsDoYouHave = 3
8. RandomOneNumber = -720.54
9. WillYouMarryMe = เท็จ
10. FirstCharacter_Thailand = "T"


แบบฝึกหัดที่ 4.2 จงบอกผลลัพธ์ของนิพจน์ต่อไปนี้

1. Answer = 7 * 6 + 12 / 3 - 1 - 2.41
2. Calculate = (4 + 3) ^ 2 / 5 + (-0.75)
3. Easy_One = นิเสธ (1 + 2 + 3 == 1 * 2 * 3) หรือ 10 ^ 3 < 2 ^ 10
4. Beware = 48.22 / 2 < (36.11 + 14) / 2 หรือ 1 + 2 <= 6 * 2 / 4 และ B != B
5. Variable = X < X + 3 และ 6 + Y * 0 == 3 + 2 + 1 หรือ Z * 1 <= Z + (-14 / 6)
[Image: 6977f46ce7a5965e6d2d71911a3fbaa9.png]
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)