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

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

[Renpy] 35. วิธีทำตัวเลือกคำถามแบบกำหนดระยะเวลา (Timed choice)

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

272

กระทู้

272

โพสต์

979

เครดิต

ผู้ดูแลระบบ

Rank: 9Rank: 9Rank: 9

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

Timed_menus_02.png

[Renpy] 35. วิธีทำตัวเลือกคำถามแบบกำหนดระยะเวลา (Timedchoice)
เพื่อให้เกมส์มีอรรถรสมากยิ่งขึ้นสำหรับเกมส์แนวเนื้อเรื่องบางสถานะการณ์ก็มีความจำเป็นที่จะต้องให้ผู้เล่นมีความรู้สึกกดดัน เมื่อถูกตัวละครตัวใดตัวหนึ่งตั้งคำถาม ซึ่งถ้าหากผู้เล่นตอบช้า หรืออาจจะไม่คลิกตอบเลยก็จะเป็นการกำหนดให้ตัวละครในเกมส์มีปฏิสัมพันธ์ต่อผู้เล่นแตกต่างกันออกไป
เราจะแบ่งรูปแบบการกำหนดระยะเวลาได้ออกเป็น 2 กรณีเช่น
1. แบบไม่บอกให้ผู้เล่นรู้ตัว


  1. init:

  2.     $ e = Character('NOOKFUFU2', color="#c8ffc8")

  3. label start:
  4.     $ ui.timer(5.0, ui.jumps("menu1_slow")) #<-- 5.0 หมายถึงให้เวลาคิด 5 วินาที
  5.     menu:
  6.         "Choice 1":
  7.             hide countdown
  8.             e "เลือก 'Choice 1'"
  9.             jump menu1_end
  10.         "Choice 2":
  11.             hide countdown
  12.             e "เลือก 'Choice 2'"
  13.             jump menu1_end
  14.    
  15. label menu1_slow:
  16.     hide countdown
  17.     e "ทำไมถึงไม่ตอบ?"
  18.    
  19. label menu1_end:
  20.     e "อย่างน้อยคุณก็เลือกที่จะตอบ"

  21. return
คัดลอกไปที่คลิปบอร์ด
ผลลัพธ์ที่ได้.....
Timed_menus_01.png
ถ้าผู้เล่นไม่คลิกเลือกคำตอบ ภายในเวลาที่กำหนด โปรแกรมก็จะวิ่งมาที่ label menu1_slow ตามที่เราตั้งไว้
Timed_menus_03.png

2. แบบแสดงตัวเลขเพื่อให้ผู้เล่นรู้ และรีบเลือกคำตอบ

  1. init:
  2.   
  3.     # สร้างตัวแประของตัวละคร
  4.     $ e = Character('NOOKFUFU2', color="#c8ffc8")
  5.    
  6. init:
  7.     python:

  8.         def countdown(st, at, length=0.0):

  9.             remaining = length - st

  10.             if remaining > 2.0:
  11.                 return Text("%.1f" % remaining, color="#ffffff", size=72 , bold = True ), .1 #<----ถ้าตัวเลขมากว่า 2.0 ให้แสดงสี text เป็น "สีขาว"
  12.             elif remaining > 0.0:
  13.                 return Text("%.1f" % remaining, color="#ff0000", size=72, bold = True), .1#<----ถ้าตัวเลขต่ำกว่า 2.0 และไม่เท่ากับ 0.0 ให้แสดงสี text เป็น "สีแดง"
  14.             else:
  15.                 return anim.Blink(Text("0.0", color="#ff0000", size=72, bold = True)), None #<--- ถ้าตัวเลขเท่ากับ 0.0 ให้แสดงสี Text เป็น "สีแดง" และแสดงเป็นตัวแบบกระพริบ

  16.     # แสดงตัวเลข เริ่มนับถอยหลังที่ 10 วินาที.
  17.     image countdown = DynamicDisplayable(countdown, length=10.0)  #<---ตัวเลขเริ่มต้นจาก 10.0 วินาที และนับถอยหลังลงมาเรื่อยๆ
  18.    
  19. label start:
  20.     $ ui.timer(10.0, ui.jumps("not_choice")) #<---ให้เวลา 10.0 วินาที
  21.     show countdown at Position (xalign = 0.3, yalign = 0.1)
  22.     menu:
  23.         "เลือกคำตอบข้อ 1  ทันที":
  24.             hide countdown
  25.             e "You chose 'Choice 1' fast"
  26.             jump menu1_end
  27.         "เลือกคำตอบข้อ 2 ทันที":
  28.             hide countdown
  29.             e "You chose 'Choice 2' fast"
  30.             jump menu1_end
  31. return


  32. label not_choice:
  33.     hide countdown
  34.     e "ทำไมนายถึงไม่ยอมตอบคำถามฉัน?"
  35.     e "ฉันจะให้โอกาสนายตอบคำถามฉันอีกครั้ง"

  36.     $ ui.timer(10.0, ui.jumps("not_choice_slow")) #<---ให้เวลา 10.0 วินาที
  37.     show countdown at Position (xalign = 0.3, yalign = 0.1)
  38.     menu:

  39.         "เลือกคำตอบข้อ 1  ":
  40.             hide countdown
  41.             e "คุณเลือกข้อ 1 แบบลังเล"
  42.             jump menu2_end
  43.         "เลือกคำตอบข้อ 2  ":
  44.             hide countdown
  45.             e "คุณเลือกข้อ 2 แบบลังเล"
  46.             jump menu2_end

  47. label not_choice_slow:
  48.     hide countdown
  49.     e "ฉันไม่เคยเจอใครที่เฉื่อยชาเท่าคุณอีกแล้ว"
  50.     return
  51. label menu1_end:
  52.     e "อย่างน้อยนายก็ยอมตอบคำถามฉัน"
  53.     return
  54. label menu2_end:
  55.     e "อย่างน้อยนายก็ยอมตอบคำถามฉัน"
  56.     return
คัดลอกไปที่คลิปบอร์ด
ผลลัพธ์ที่ได้.....
Timed_menus_02.png
ส่วนแบบอื่นก็แล้วแต่จะไปประยุกต์เอาเองนะค่ะ ^^"

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

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


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

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

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

GMT+7, 2024-4-19 10:03 , Processed in 0.302009 second(s), 32 queries .

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

© 2001-2017 Comsenz Inc.

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