บทความสอนกราฟิก

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 2465|ตอบกลับ: 0

[Renpy] 34. วิธีทำตัวเลือก Choices แบบจดจำ (Remembering User Choices )

[คัดลอกลิงก์]

272

กระทู้

272

โพสต์

979

เครดิต

ผู้ดูแลระบบ

Rank: 9Rank: 9Rank: 9

เครดิต
979
แก้ไขครั้งสุดท้ายโดย nooknazha เมื่อ 2018-6-22 17:51

Remembering_User_Choices_01.png
[Renpy] 34. วิธีทำตัวเลือก Choices แบบจดจำ (RememberingUser Choices )

จากที่มีสมาชิกสอบถามไว้นะค่ะ

"....เรื่องการทำ route ของคำตอบที่ส่งผลภายระยะยาวน่ะครับกรณีทำเป็นเกม อาทิเช่น ตอน event 1  มีตัวเลือก ab c แล้ว เช่นกรณีถ้าตอบ c จะส่งผลต่อ routeในภายหลังที่ไกลมากๆ
event 2-49 ไม่มีผลอะไร
พอตอน event 50 ถ้าเกิดเคยตอบC ที่ event 1 ก็จะทำให้มีตัวเลือก a b c"d" เพิ่มขึ้นมา (มีตัวเลือกแสดง 4 ตัวเลือก)
(ถ้าตอบข้อa หรือb ในevent1 มาถึงฉากนี้event 50จะมีchoice ให้แค่ a b c ครับ)......"
-----------------------------------------------------------------------


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

  1. init:
  2.     # สร้างตัวแประของตัวละคร
  3.     $ e = Character('NOOKFUFU2', color="#c8ffc8")
  4.     $ b = Character('วัฏฏะ', color="#c8ffc8")
  5. label start:
  6.     e " even 1 "
  7.     menu:
  8.         e "นี่...! summer นี้พวกเราจะไปเที่ยวที่ไหนกันดี?"
  9.         "ไปเล่นน้ำที่เกาะสมุย":
  10.             $ summer = "samui"
  11.             b "ดีเลย! ฉันชอบทะเล"
  12.             pass
  13.         
  14.         "ไปเที่ยวเชียงใหม่":
  15.             $ summer = "chiang mai"
  16.             b "ดีเลย! ฉันเองก็กำลังหาเพื่อนไปเที่ยวด้วยกันอยู่"
  17.             pass
  18.         
  19.         "สวนสัตว์เขาใหญ่":
  20.             $ summer = "khao_yai"
  21.             b "ขอไปด้วยสิ! ครั้งสุดท้ายที่ฉันไปเที่ยวสวนสัตว์ ก็สมัยเรียนประถมโน้นแน่ะ"
  22.             pass
  23.         
  24.     e " even 2-49 ผ่านไป "
  25.    
  26.    
  27. menu:
  28.      e "นี่...! วันหยุดที่จะถึงนี้ เธอมีโปรแกรมจะไปเที่ยวไหนไหม?"
  29.      "ไปเที่ยวสวนสนุกเปิดใหม่ใกล้บ้าน":
  30.           jump park_date
  31.      "ไปเดินห้างตากแอร์แก้ร้อน":
  32.           jump cafe_date
  33.      "ไปเที่ยวเกาะสมุยอีกครั้ง" if summer == "samui":#<---ถ้าที่ even 1 เลือกคำตอบข้อ 1 ( "samui" ) ช้อยข้อนี้ถึงจะปรากฏ
  34.           jump samui_date

  35. return
คัดลอกไปที่คลิปบอร์ด
ลองบันทึกไฟล์และรันโปรแกรม....
เมื่อเริ่มเกมส์ที่ even 1 จะมี 3คำถามให้เลือก ลองเลือกข้อ 1 ซึ่งเราสร้างตัวแปรก่อน
Remembering_User_Choices_01.png
เมื่อดำเนินเกมส์ไปเรื่อยๆจนมาถึง even ที่ 50 จะมีคำถามมาให้ผู้เลือกคำตอบอีกครั้งเราจะเห็นว่า มีทางเลือกให้ผู้เล่นเลือกตอบได้ 3 ข้อ(เพราะเงื่อนไขถูกต้อง)
Remembering_User_Choices_02.png
คราวนี้ลองปิดโปรแกรมไปก่อนและ รันโปรแกรมใหม่อีกครั้ง ที่ even ให้ลองเลือกคำตอบข้อ2 หรือ 3
Remembering_User_Choices_03.png

และเมื่อดำเนินเนื้อเรื่องเกมส์มาเรื่อยๆ จนถึง even ที่ 50ผู้เล่นก็จะเจอคำถามที่ต้องเลือกคำตอบอีกครั้ง แต่ครั้งนี้ผู้เล่นจะเจอทางเลือกให้เลือกแค่ 2 ข้อเท่านั้น(เพราะเงื่อนไขทางเลือกข้อที่ 3 ไม่ถูกต้อง มีผลมาจาก evenที่1 ที่ผู้เล่นเลือกคำตอบไว้ผิดพลาด)
Remembering_User_Choices_04.png
---------------------------------------------
ต่อเนื่องจากโค๊ดด้านบนนะค่ะเราสามารถกำหนดให้ตัวละครแสดงปฏิกิริยาการโต้ตอบแตกต่างกันเมื่อผู้เล่นเลือกแต่ละคำตอบแล้ว เช่น....


  1.     e " summer นี้เธอจะไปเที่ยวกับฉันไหม?"
  2.     if summer == "samui":
  3.         b "ไปแน่นอน ทะเลคือสิ่งที่ฉันชอบ"
  4.     if summer == "chiang mai":
  5.         b "ถ้าเธออยากไป ฉันจะไปเป็นเพื่อนด้วยก็ได้"
  6.     if summer == "khao_yai":
  7.         m "ขอโทษนะ พอดีฉันมีธุระ คงไปด้วยไม่ได"
คัดลอกไปที่คลิปบอร์ด
อีกตัวอย่างหนึ่งในกรณีที่นำเงื่อนไขคำสั่ง True  และ False มาใช้ผสมกันก็ได้ เช่น

กำหนดตัวแปรไว้ตั้งแต่เริ่มเกมส์ที่label start

  1. $ park_date_done = False
  2. $ cafe_date_done = False
  3. $ tortoise_date_done = False
คัดลอกไปที่คลิปบอร์ด
และนำตัวแปรมาใช้ร่วมกับการถาม-ตอบ

ลองนำไประยุกต์ดูนะค่ะ

***************************************

บทความโดย นุ้ก
ขอจบบทความแค่เพียงเท่านี้ แล้วพบกันใหม่บทความหน้าค่ะ ^^
(ขอสงวนสิทธิ์อนุญาตให้เผยแพร่เฉพาะในเว็บ www.graphicfufu.comเท่านั้น)

ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|GraphicFUFU

GMT+7, 2024-4-26 12:42 , Processed in 0.095294 second(s), 21 queries .

Powered by Discuz! X3.4 R20180101, Rev.59

© 2001-2017 Comsenz Inc.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้