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

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

[Renpy] 32. วิธี เพิ่ม- ลด คะแนนคำถาม (Score Question) แบบแสดงที่หน้าอื่น

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

272

กระทู้

272

โพสต์

979

เครดิต

ผู้ดูแลระบบ

Rank: 9Rank: 9Rank: 9

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

score_Imagemap_01.png
[Renpy] 32. วิธี เพิ่ม- ลด คะแนนคำถาม (Score Question) แบบแสดงที่หน้าอื่น
จากบทความที่สอนการเพิ่ม-ลดคะแนนก่อนหน้านี้ จะเห็นว่า... เมื่อแถบค่าสเตตัสต่างๆที่ถูกสั่งให้ไปแสดงที่หน้าหลักของเกมส์ มีผลทำให้หน้าจอเกมส์แคบลง (แล้วแต่คนชอบแต่โดยส่วนตัวข้าพเจ้าชอบให้หน้าจอหลักมันโล่งๆมากกว่า) ด้วยเหตุนี้เองในบทความนี้จึงแนะนำอีกวิธีที่จะแยกการแสดงผลคะแนนให้ไปโชว์อยู่ที่หน้าจออื่นเพื่อความสบายตามากขึ้น (หรือเปล่า? -*-)

ขั้นตอนที่ 1
- ให้เตรียมภาพ 5ภาพ  ได้แก่

1. ภาพปุ่มพิเศษแบบปกติ
score_Imagemap_04.png

2. ภาพปุ่มพิเศษแบบ hover
score_Imagemap_05.png

3. ภาพพื้นฉากแบบปกติ
score_Imagemap_02.png

4. ภาพพื้นภาพเมื่อเลื่อนเม้าส์มาวางทับ (hover)
score_Imagemap_03.png

5. ภาพที่จะมาแสดงแทนค่าคะแนนตัวแลข
heart1.png

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

ขั้นตอนที่ 2
เราจะต้องสร้างปุ่มพิเศษเพื่อให้สามารถคลิกไปที่หน้าสะสมคะแนนได้ซะก่อนโดยให้หาพิกัดตำแหน่งของปุ่มพิเศษในโปรแกรม Photoshop และนำโค๊ดนี้ไปแทรกเพิ่มไว้ที่หน้า QuickMenu

- ดูวิธีการทำ Quick menu แบบ Imagemapได้ที่บทความนี้ค่ะ [renpy] วิธีทำ ImagemapQuick Menu
CODE:
  1. <font size="4">
  2.         hotspot (721, 5, 54, 49) action ShowMenu('score')

  3. </font>
คัดลอกไปที่คลิปบอร์ด
ตัวอย่างการแทรกโค๊ด............. score_Imagemap_06.png
หลังจากแทรกโค๊ดแล้ว ปุ่มพิเศษก็จะมาแสดงอยู่ที่หน้าจอเกมส์หลักดังนี้ค่ะถ้าคลิกที่ปุ่มนี้ มันก็จะวิ่งไปที่หน้า
score:
score_Imagemap_07.png

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


ขั้นตอนที่ 3
- ให้สร้างหน้าscore: รองรับไว้โดยให้นำโค๊ดด้านล่างนี้ไปใส่ที่ไฟล์ options.rpyบรรทัดล่างสุด

CODE:
  1. <font size="4">

  2. #__________________________________________________________
  3. ################::::  Screen_Score ::::###############
  4. screen score:
  5.     imagemap:
  6.         xalign 1.0 yalign 1.0
  7.         
  8.         ground 'menu/bg_screen_score.png'
  9.         hover 'menu/bg_screen_score_hover.png'
  10.         hotspot (568, 128, 190, 56) action Return() hover_sound "sound/click.wav"
  11.         
  12. ##--------------------คะแนน ของกวี--------------- ##
  13.     python:
  14.         ui.text("ชื่อ:" , bold=True, size=25, xalign=0.25, yalign=0.09)
  15.         ui.text("กวี", size=25, xalign=0.35, yalign=0.09)
  16.         ui.text("score:", bold=True, size=25, xalign=0.26, yalign=0.15)
  17.         ui.text("%d/%d" % (score_heart, max_score_heart),
  18.             size=25, xalign=0.4, yalign=0.15)
  19.         ui.text("ความสัมพันธ์:" , bold=True, size=25, xalign=0.295, yalign=0.21)
  20.         
  21.         if  score_heart == 0:
  22.                 ui.text("เฉยๆ", xalign=0.5,yalign=0.21, size=25)
  23.         if  score_heart == 1:
  24.                 ui.text("สนใจ", xalign=0.5,yalign=0.21, size=25)
  25.                 ui.image("menu/heart1.png",xalign=0.53, yalign=0.09)
  26.                
  27.         if  score_heart == 2:
  28.                 ui.text("ชอบ", xalign=0.5,yalign=0.21, size=25)
  29.                 ui.image("menu/heart1.png",xalign=0.53, yalign=0.09)
  30.                 ui.image("menu/heart1.png",xalign=0.56, yalign=0.09)
  31.                
  32.         if  score_heart == 3:
  33.                 ui.text("สนิท", xalign=0.5,yalign=0.21, size=25)
  34.                 ui.image("menu/heart1.png",xalign=0.53, yalign=0.09)
  35.                 ui.image("menu/heart1.png",xalign=0.56, yalign=0.09)
  36.                 ui.image("menu/heart1.png",xalign=0.59, yalign=0.09)
  37.                
  38. ##--------------------คะแนน ของปกิณกะ--------------- ##
  39.     python:
  40.         ui.text("ชื่อ:" , bold=True, size=25, xalign=0.25, yalign=0.43)
  41.         ui.text("ปกิณกะ", size=25, xalign=0.36, yalign=0.43)
  42.         ui.text("score:", bold=True, size=25, xalign=0.26, yalign=0.49)
  43.         ui.text("%d/%d" % (score_heart2, max_score_heart2),
  44.             size=25, xalign=0.4, yalign=0.49)
  45.         ui.text("ความสัมพันธ์:" , bold=True, size=25, xalign=0.295, yalign=0.55)
  46.         
  47.         if  score_heart2 == 0:
  48.                 ui.text("เฉยๆ", xalign=0.5,yalign=0.55, size=25)
  49.         if  score_heart2 == 1:
  50.                 ui.text("สนใจ", xalign=0.5,yalign=0.55, size=25)
  51.                 ui.image("menu/heart1.png",xalign=0.53, yalign=0.415)
  52.                
  53.         if  score_heart2 == 2:
  54.                 ui.text("ชอบ", xalign=0.5,yalign=0.55, size=25)
  55.                 ui.image("menu/heart1.png",xalign=0.53, yalign=0.415)
  56.                 ui.image("menu/heart1.png",xalign=0.56, yalign=0.445)
  57.                
  58.         if  score_heart2 == 3:
  59.                 ui.text("สนิท", xalign=0.5,yalign=0.55, size=25)
  60.                 ui.image("menu/heart1.png",xalign=0.53, yalign=0.415)
  61.                 ui.image("menu/heart1.png",xalign=0.56, yalign=0.415)
  62.                 ui.image("menu/heart1.png",xalign=0.59, yalign=0.415)
  63.                
  64. ##--------------------คะแนน ของวัฎฎะ--------------- ##
  65.     python:
  66.         ui.text("ชื่อ:" , bold=True, size=25, xalign=0.25, yalign=0.76)
  67.         ui.text("วัฎฎะ", size=25, xalign=0.36, yalign=0.76)
  68.         ui.text("score:", bold=True, size=25, xalign=0.26, yalign=0.82)
  69.         ui.text("%d/%d" % (score_heart3, max_score_heart3),
  70.             size=25, xalign=0.4, yalign=0.82)
  71.         ui.text("ความสัมพันธ์:" , bold=True, size=25, xalign=0.295, yalign=0.88)
  72.         
  73.         if  score_heart3 == 0:
  74.                 ui.text("เฉยๆ", xalign=0.5,yalign=0.88, size=25)
  75.         if  score_heart3 == 1:
  76.                 ui.text("สนใจ", xalign=0.5,yalign=0.88, size=25)
  77.                 ui.image("menu/heart1.png",xalign=0.53, yalign=0.745)
  78.         if  score_heart3 == 2:
  79.                 ui.text("ชอบ", xalign=0.5,yalign=0.88, size=25)
  80.                 ui.image("menu/heart1.png",xalign=0.53, yalign=0.745)
  81.                 ui.image("menu/heart1.png",xalign=0.56, yalign=0.745)
  82.                
  83.         if  score_heart3 == 3:
  84.                 ui.text("สนิท", xalign=0.5,yalign=0.88, size=25)
  85.                 ui.image("menu/heart1.png",xalign=0.53, yalign=0.745)
  86.                 ui.image("menu/heart1.png",xalign=0.56, yalign=0.745)
  87.                 ui.image("menu/heart1.png",xalign=0.59, yalign=0.745)
  88. #________________________________________________________
  89. ###########################################
  90. </font>
คัดลอกไปที่คลิปบอร์ด
(***ค่าตำแหน่ง xalign กับ, yalignเราต้องกะระยะเอาเองโดยการทดลองเปลี่ยนตัวเลขจุดทศนิยมข้างหลังและรันโปรแกรมเพื่อดูผลลัพธ์ที่หน้าจอเกมส์ X คือปรับค่าแสดงผลตามแนวนนอน/ Y ปรับค่าแสดงผลตามแนวตั้งมันเสียเวลาจะหาตำแหน่งยากแค่อันแรกๆ พอหาตำแหน่งหลักได้ที่เหลือก็แค่เปลี่ยนตัวเลขขยับตาม หรือ+ค่าเพิ่มไปแค่นิดหน่อย)
-------------------------------------------

ขั้นตอนที่ 4
- ตัวอย่างการเขียนโค๊ดที่ไฟล์script.rpy อันนี้ข้าพเจ้าเขียนแค่พอเป็นแนวทางนะค่ะไปประยุกต์สร้างเงื่อนไขเอาเอง

CODE:
  1. <font size="4">
  2. # You can place the script of your game in this file.
  3. # Declare images below this line, using the image statement.
  4. # eg. image eileen happy = "eileen_happy.png"

  5. define  b = Character('กวี', color="#FCFC68",
  6.                what_xpos = 5,
  7.                
  8.                ctc="ctc_animation",ctc_position="fixed",
  9.                
  10.                show_side_image=ConditionSwitch(
  11.                     "ccg == 'normal' ", "cha/kawii_mini2.png",
  12.                     "ccg == 'happy' ", "cha/kawii_mini_smile2.png",
  13.                     None, Null(),
  14.                     xalign=0.01, yalign=1.01))
  15. image ctc_animation = Animation("menu/ctc_1_1.png", 0.20,
  16.                                                  "menu/ctc_1_2.png", 0.20,
  17.                                                  "menu/ctc_1_3.png", 0.20,
  18.                                                  xpos=0.85, ypos=0.95,
  19.                                                  xanchor=1.0, yanchor=1.0 )
  20. image kawii01 = "cha/kawii_01.png"
  21. image kawii02 = "cha/kawii_02.png"
  22. image group_charactor = "cha/group_charactor.png"
  23. #------------------------------------------------------------------------------
  24. # เริ่มเกมส์
  25. label start:
  26.     $ score_num = 0
  27.     $ max_score_heart = 3
  28.     $ max_score_heart2 = 3
  29.     $ max_score_heart3 = 3
  30.     $ score_heart = 0
  31.     $ score_heart2 = 0
  32.     $ score_heart3 = 0
  33.     scene black
  34.     show kawii01 at left with dissolve
  35.     $ ccg = 'happy'
  36. #------------------------------------------------------------------------------
  37. #คำถามที่ 1 ------เก็บคะแนนของ....กวี-----------------
  38. menu:
  39.     b "พยัญชนะในภาษาอังกฤษตัว "ph" เมื่อออกเสียง ผสมกัน
  40.         ในภาษาไทยจะเท่ากับพยัญชนะตัวอะไร ?"
  41.    
  42.     "ออกเสียงเป็นตัว ช.ช้าง":
  43.         pass
  44.     "ออกเสียงเป็นตัว ฟ.ฟัน":
  45.         $ score_num +=1
  46.         $ score_heart += 1
  47.         pass
  48.     "ออกเสียงเป็นตัว พ.พาน และ ฮ.นกฮูก":
  49.         pass
  50.    
  51. #คำถามที่ 2
  52. menu:
  53.     b "พยัญชนะในภาษาอังกฤษตัว "aew" เมื่อออกเสียง ผสมกัน
  54.         ในภาษาไทยจะเท่ากับสระตัวอะไร ?"
  55.    
  56.     "สระ เ-" :
  57.         $ score_heart -= 1
  58.         if  score_heart <= 0:
  59.             $ score_heart = 0
  60.         pass
  61.     "สระ แ-ว ":
  62.         $ score_num +=1
  63.         $ score_heart += 1
  64.         pass
  65.     "สระ แ- ":
  66.         $ score_heart -= 1
  67.         if  score_heart <= 0:
  68.             $ score_heart = 0
  69.         pass
  70.    
  71. #คำถามที่ 3 (คำถามสุดท้าย)
  72. menu:
  73.     b "พยัญชนะในภาษาอังกฤษตัว "oei" เมื่อออกเสียง ผสมกัน
  74.     ในภาษาไทยจะเท่ากับสระตัวอะไร ?"
  75.    
  76.     "สระ ไ- ":
  77.         $ score_heart -= 1
  78.         if  score_heart <= 0:
  79.             $ score_heart = 0
  80.         pass
  81.     "สระ เ-า":
  82.         $ score_heart -= 1
  83.         if  score_heart <= 0:
  84.             $ score_heart = 0
  85.         pass
  86.         
  87.     "สระ เ-ย":
  88.         $ score_num +=1
  89.         $ score_heart += 1
  90.         pass
  91. #------------------------------------------------------------------------------
  92. #คำถามที่ 1----เก็บคะแนนของ.....วัฎฎะ-------------
  93. menu:
  94.     b "พยัญชนะในภาษาอังกฤษตัว "ph" เมื่อออกเสียง ผสมกัน
  95.         ในภาษาไทยจะเท่ากับพยัญชนะตัวอะไร ?"
  96.    
  97.     "ออกเสียงเป็นตัว ช.ช้าง":
  98.         pass
  99.     "ออกเสียงเป็นตัว ฟ.ฟัน":
  100.         $ score_num +=1
  101.         $ score_heart2 += 1
  102.         pass
  103.     "ออกเสียงเป็นตัว พ.พาน และ ฮ.นกฮูก":
  104.         pass
  105.    
  106. #คำถามที่ 2
  107. menu:
  108.     b "พยัญชนะในภาษาอังกฤษตัว "aew" เมื่อออกเสียง ผสมกัน
  109.         ในภาษาไทยจะเท่ากับสระตัวอะไร ?"
  110.    
  111.     "สระ เ-" :
  112.         $ score_heart2 -= 1
  113.         if  score_heart2 <= 0:
  114.             $ score_heart2 = 0
  115.         pass
  116.     "สระ แ-ว ":
  117.         $ score_num +=1
  118.         $ score_heart2 += 1
  119.         pass
  120.     "สระ แ- ":
  121.         $ score_heart2 -= 1
  122.         if  score_heart2 <= 0:
  123.             $ score_heart2 = 0
  124.         pass
  125.    
  126. #คำถามที่ 3 (คำถามสุดท้าย)
  127. menu:
  128.     b "พยัญชนะในภาษาอังกฤษตัว "oei" เมื่อออกเสียง ผสมกัน
  129.     ในภาษาไทยจะเท่ากับสระตัวอะไร ?"
  130.    
  131.     "สระ ไ- ":
  132.         $ score_heart2 -= 1
  133.         if  score_heart2 <= 0:
  134.             $ score_heart2 = 0
  135.         pass
  136.     "สระ เ-า":
  137.         $ score_heart2 -= 1
  138.         if  score_heart2 <= 0:
  139.             $ score_heart2 = 0
  140.         pass
  141.         
  142.     "สระ เ-ย":
  143.         $ score_num +=1
  144.         $ score_heart2 += 1
  145.         pass
  146. #------------------------------------------------------------------------------
  147. #คำถามที่ 1--------เก็บคะแนนของ....ปกิณกะ-----------
  148. menu:
  149.     b "พยัญชนะในภาษาอังกฤษตัว "ph" เมื่อออกเสียง ผสมกัน
  150.         ในภาษาไทยจะเท่ากับพยัญชนะตัวอะไร ?"
  151.    
  152.     "ออกเสียงเป็นตัว ช.ช้าง":
  153.         pass
  154.     "ออกเสียงเป็นตัว ฟ.ฟัน":
  155.         $ score_num +=1
  156.         $ score_heart3 += 1
  157.         pass
  158.     "ออกเสียงเป็นตัว พ.พาน และ ฮ.นกฮูก":
  159.         pass
  160.    
  161. #คำถามที่ 2
  162. menu:
  163.     b "พยัญชนะในภาษาอังกฤษตัว "aew" เมื่อออกเสียง ผสมกัน
  164.         ในภาษาไทยจะเท่ากับสระตัวอะไร ?"
  165.    
  166.     "สระ เ-" :
  167.         $ score_heart3 -= 1
  168.         if  score_heart3 <= 0:
  169.             $ score_heart3 = 0
  170.         pass
  171.     "สระ แ-ว ":
  172.         $ score_num +=1
  173.         $ score_heart3 += 1
  174.         pass
  175.     "สระ แ- ":
  176.         $ score_heart3 -= 1
  177.         if  score_heart3 <= 0:
  178.             $ score_heart3 = 0
  179.         pass
  180.    
  181. #คำถามที่ 3 (คำถามสุดท้าย)
  182. menu:
  183.     b "พยัญชนะในภาษาอังกฤษตัว "oei" เมื่อออกเสียง ผสมกัน
  184.     ในภาษาไทยจะเท่ากับสระตัวอะไร ?"
  185.    
  186.     "สระ ไ- ":
  187.         $ score_heart3 -= 1
  188.         if  score_heart3 <= 0:
  189.             $ score_heart3 = 0
  190.         jump score
  191.     "สระ เ-า":
  192.         $ score_heart3 -= 1
  193.         if  score_heart3 <= 0:
  194.             $ score_heart3 = 0
  195.         jump score
  196.         
  197.     "สระ เ-ย":
  198.         $ score_num +=1
  199.         $ score_heart3 += 1
  200.         jump score
  201.         
  202. #------------สรุปผล...ว่าได้จะให้จบแบบไหน----(ตัวอย่างแบบย่อ...แล้วแต่จะนำโค๊ดไปประยุกช์ค่ะ)---------#
  203. label score:
  204.     hide kawii01
  205.     show group_charactor with dissolve
  206.     b "คุณได้ [score_num!d] คะแนน!!!"
  207.     if score_num <= 0:
  208.         #End lose
  209.         b "คุณควรพยายามให้มากกว่านี้!"
  210.         jump end_lose
  211.         
  212.     if score_num <= 3:
  213.         #End normal
  214.         b "อย่างน้อยคุณก็มีความสามารถพอใช้!"
  215.         jump end_normal
  216.    
  217.     if score_num <= 6:
  218.         #End happy
  219.         b "คุณเป็นคนเก่งทีเดียว! "
  220.         jump end_happy
  221.     if score_num <= 9:
  222.         #End perfect!!!
  223.         $ ccg = 'happy'
  224.         b "คุณนี่สุดยอดจริงๆ! "
  225.         jump end_perfect
  226. return

  227. </font>
คัดลอกไปที่คลิปบอร์ด
ทดสอบรันโปรแกรมโดยการตอบคำถามไปเรื่อยๆ แล้วคอยดูว่าคะแนนของตัวละครที่หน้า score: เพิ่มตามด้วยไหม
score_Imagemap_08.png
score_Imagemap_01.png

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

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


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

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

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

GMT+7, 2024-4-27 08:38 , Processed in 0.096087 second(s), 21 queries .

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

© 2001-2017 Comsenz Inc.

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