Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Ren'Py พื้นฐาน | บทที่ 3 กล่องข้อความ
#1
ติดตามเราได้ที่ Facebook ชื่อเพจ Planila Game Developer


กล่องข้อความคือส่วนสำคัญในเกมแนว Visual Novel เนื่องจากเป็นส่วนที่แสดงคำพูดของตัวละคร โปรแกรมเกมเอนจิน Ren'Py มีลูกเล่นเกี่ยวกับกล่องข้อความมากมาย นักสร้างเกมสามารถสร้างกล่องข้อความสวย ๆ ได้อย่างง่ายดาย สำหรับผู้อ่านที่ต้องการใช้ภาษาไทยในโปรแกรม Ren'Py ให้ท่านเปลี่ยนฟอนต์ก่อนทดสอบเกม อ่านเพิ่มเติมได้ในหัวข้อ "เปลี่ยนฟอนต์ ขนาด และสีตัวอักษร (ทั้งเกม)"

กล่องข้อความในเกมที่สร้างด้วยโปรแกรม Ren'Py แบ่งเป็น 3 ส่วนดังรูปที่ 3.1 ได้แก่
  • ส่วนที่ 1 ชื่อตัวละคร
  • ส่วนที่ 2 ข้อความหรือคำพูดตัวละคร
  • ส่วนที่ 3 พื้นหลังกล่องข้อความ
[Image: 04.png]


คำสั่งที่แสดงข้อความในกล่องข้อความมี 2 รูปแบบ รูปแบบแรกมีสองส่วนคือส่วนชื่อตัวละครและส่วนคำพูดตัวละคร แต่ละส่วนอยู่ภายในเครื่องหมาย " " รูปแบบนี้เหมาะสำหรับคำพูดทั่วไป


Code:
"ชื่อตัวละคร" "คำพูดตัวละคร"

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


Code:
"คำพูดตัวละคร"

ตัวอย่างคำสั่งที่ใช้แสดงข้อความในรูปที่ 3.1 คือ


Code:
"Aiya" "What are you doing? Why you don't knock the door!"



ประกาศตัวแปรเก็บชื่อตัวละคร

ก่อนเรียนเรื่องการใช้กล่องข้อความต่อ ผู้เขียนมีเทคนิคการใส่คำสั่งให้สั้นลง เกมแนว Visual Novel ต้องแสดงข้อความหรือคำพูดจำนวนมาก จึงต้องแสดงชื่อตัวละครเดิมซ้ำกันหลายครั้ง โปรแกรม Ren'Py มีเทคนิคที่จัดการกับชื่อตัวละคร แทนที่จะใส่ชื่อตัวละครเดิมซ้ำกันทุกครั้ง เราสามารถประกาศตัวแปรและใส่ชื่อตัวละครลงในตัวแปรแทนได้ในรูปแบบดังนี้


Code:
define ชื่อตัวแปร = Character('ชื่อตัวละคร')

ตัวอย่างเช่น ประกาศตัวแปร a แล้วใส่ชื่อตัวละคร Aiya ลงในตัวแปร a คำสั่งแสดงข้อความไม่ต้องใส่เครื่องหมาย " " ในส่วนชื่อตัวละครที่เป็นตัวแปร (ถ้าส่วนชื่อตัวละครไม่ใช่ตัวแปรจะต้องใส่เครื่องหมาย " " ทุกครั้ง) เราสามารถแสดงข้อความดังรูปที่ 3.1 ด้วยเทคนิคตัวแปรดังนี้


Code:
define a = Character('Aiya')
a "What are you doing? Why you don't knock the door!"

จากตัวอย่างข้างบนจะเห็นว่าใช้ตัวอักษรเพียงตัวเดียวคือ a เพื่อแสดงชื่อตัวละคร Aiya ซึ่งมีสี่ตัวอักษร ความสะดวกนี้จะเห็นได้ชัดเจนขึ้นเมื่อตัวละครมีชื่อยาว เช่น เก็บชื่อตัวละคร Princess Sofia de Lupier ลงตัวแปรชื่อ s แล้วเรียกใช้ชื่อตัวละครผ่านตัวแปร s ทำให้ไม่ต้องพิมพ์ชื่อยาว ๆ ทุกครั้งที่ใส่คำสั่งแสดงข้อความ การประกาศตัวแปรให้ประกาศเพียงครั้งเดียวก่อนใช้ จากนั้นสามารถใช้ตัวแปรนั้นได้ตลอดทั้งเกมโดยไม่ต้องประกาศตัวแปรใหม่ ถ้ามีตัวแปรที่เก็บชื่อตัวละครหลายตัวแปร ตัวแปรแต่ละตัวต้องมีชื่อที่ไม่ซ้ำกัน



ตัวอักษรพิเศษ

ตัวอักษรพิเศษ (Escape Character) เป็นตัวอักษรที่ไม่สามารถแสดงในกล่องข้อความด้วยวิธีปกติได้ เช่น เครื่องหมาย " " หรือการขึ้นบรรทัดใหม่ เนื่องจากติดข้อจำกัดคำสั่งของโปรแกรม Ren'Py แต่โปรแกรม Ren'Py มีทางออกด้วยการใช้ตัวอักษรพิเศษแทนการใส่ตัวอักษรนั้นเข้าไปตรง ๆ ตัวอักษรพิเศษได้แก่


ตัวอักษรที่ต้องการตัวอักษรพิเศษตัวอย่าง
\\\
"Game was saved in C:\\Highstories Star\\game\\saves\\auto-1-LT1.save"
"\"
a "My name is \"Aiya\"."
'\'
"Rika" "You love me or \'Aiya\'?"
เว้นวรรคติดกัน\  (backslash + space)
"Aiya" "JUMP \ JUMP \ JUMP"
ขึ้นบรรทัดใหม่\n
a "What are you doing?\nWhy you don't knock the door!"
[[[
"[[Aiya's underwear is very sexy.]"
{{{
"{{This room is too hot. Is not there an air-conditioner?}"

การใช้ตัวอักษรพิเศษให้ใส่ในข้อความที่ต้องการ เช่น ใส่ตัวอักษรพิเศษ \" เพื่อแสดงเครื่องหมาย " ในกล่องข้อความ ส่วนเครื่องหมาย \ เป็นเพียงการบอกว่านี่เป็นตัวอักษรพิเศษ เครื่องหมาย \ จะไม่ถูกแสดงในกล่องข้อความ ถ้าผู้อ่านต้องการใช้ตัวอักษรในตารางข้างบน ท่านต้องใช้ตัวอักษรพิเศษเท่านั้น ไม่สามารถใส่ตัวอักษรที่ต้องการโดยตรงได้

[Image: 02.png]
รูปที่ 3.2 การใช้ตัวอักษรพิเศษ \n เพื่อขึ้นบรรทัดใหม่

โดยทั่วไปโปรแกรม Ren'Py จะมองเว้นวรรคที่อยู่ติดกันเป็นเว้นวรรคเดียว ถ้าต้องการเว้นวรรคหลายครั้ง ต้องนำหน้าเว้นวรรคด้วยเครื่องหมาย \ ต่อเว้นวรรคหนึ่งครั้ง เพื่อให้โปรแกรม Ren'Py มองแยกเป็นหลายเว้นวรรค การแสดงเครื่องหมาย [ และ { ให้ใส่เครื่องหมายนั้นสองตัวติดกันเป็น [[ และ {{ แต่เครื่องหมาย ] และ } สามารถใส่ได้โดยตรง ไม่ต้องใส่ซ้ำสองตัว



เปลี่ยนฟอนต์ ขนาด และสีตัวอักษร (ทั้งเกม)


......

นี่เพิ่งแค่ 35% ของบทความนี้เท่านั้น บทความฉบับเต็มมีเยอะกว่านี้อีก!


เนื่องจากติดปัญหาเรื่องนโยบายการเผยแพร่บทความ ทำให้เราไม่สามารถเผยแพร่บทความฉบับเต็มลงในเว็บนี้ได้ อ่านฉบับเต็มได้ที่บทความต้นฉบับ (ไม่มีค่าใช้จ่าย)

บทความต้นฉบับ https://planila.blogspot.com/2019/07/ren...ter03.html

[Image: %25E0%25B8%259A%25E0%25B8%2597%25E0%25B8...9%2588.png]
ติดตามเราได้ที่ Facebook ชื่อเพจ Planila Game Developer
อ่านบทความสอนสร้างเกมได้ที่ https://planila.blogspot.com

[Image: banner-ads.png]
[-] The following 3 users say Thank You to Mikichan for this post:
  • dreamknight, NothingdogTH, XthemeCore
Reply
#2
;3

ท่านมิกิลามก
May the flames guide your way. Every ending will make you stronger.

Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)