irpg Community
Ren'Py สอนโชว์คะแนนแบบตัวเลขและหลอด - Printable Version

+- irpg Community (https://irpg.in.th)
+-- Forum: irpg Sugar School of Ren'Py (https://irpg.in.th/forum-38.html)
+--- Forum: Ren'Py Engine School (https://irpg.in.th/forum-39.html)
+--- Thread: Ren'Py สอนโชว์คะแนนแบบตัวเลขและหลอด (/thread-3441.html)



Ren'Py สอนโชว์คะแนนแบบตัวเลขและหลอด - j2547 - 02-14-2020

Derp 
เห็นยังไม่มีใครสอน วันนี้ผมเลยจะมาสอน การโชว์หลอดคะแนน และเลขคะแนน บนหน้าจอ
จริงๆมันก็มีสอนอยู่แล้วครับ ในเกมตัวอย่างของเขา แต่มันไม่ได้ละเอียดมากนัก
ผมไม่มีความรู้เกียวกับการเขียนสคิปเลยแม้แต่นิดเดียว แค่จำๆที่เขาสอนๆมานะครับ
การใช้คำพูดของผมก็เลยอาจบ้านๆไปนิด 555+

การทำเกมพวก simulator การจำลองใช้ชีวิต
ก็ต้องมีหลอดพลังงานโชว์ให้ดู  มีการลดเมื่อทำกิจกรรม และมีการเติมให้เต็มเวลานอน

[Image: dforolM.jpg]

1.อย่างแรก หลอด HP (ผมเอามาจากในเกมตัวอย่างที่เขาสอนระบบ rpg )
เอาโค้ดนี้ไปวางไว้ ด้านบนหน้า script

Code:
default player_hp = 50 # จำนวน hp เริ่มต้น
default player_hp_max = 99 # จำนวน hp สูงสุด

screen single_stat(hp, hp_max, xalign):
   frame:
       background Solid("#000000")
       xalign 0.005 ypos 5              # ตำแน่งที่ว่าง
       vbox:
           spacing 5
           hbox:
               text _("{color=#FF0000}PW{/color}"):  # อักษรตัวหน้า และ ตำแน่งที่ว่าง
                   min_width 40
                   yalign 0.5
               bar:
                   xalign 0.1 ypos 5                    # ตำแหน่งหลอดhp
                   value AnimatedValue(hp, hp_max, 1.0)
                   xmaximum 180
                   ysize 26
               text " [hp]/[hp_max]":         # เลขที่จะแสดงจำนวนhp และ HP สูงสุด
                   yalign 0.5

screen stats():
   use single_stat(player_hp, player_hp_max, 0.0)

การใช้งาน จะให้เปิดโชว์ตอนไหนก็เอาโค้ดนี้ไปวาง

Code:
show screen stats  # เปิด
hide screen stats  # ปิด


2.ไอค่อนตัวเลขตามภาพตัวอย่างก็เหมือนๆกัน ครับ แค่ลบหลอดแสดงหลอดพลังออก
ตัวอย่างตามรูปของผม ไอค่อนอาหาร และ ไอค่อนวันที่
เอาโค้ดนี้ไปวางไว้ ด้านบนหน้า script
Code:
default player_food = 20  #จำนวนอาหารเริ่มต้น
default player_food_max = 400  #จำนวนอาหารสูงสุด
default player_Day = 1  #จำนวนวันที่เริ่มต้น

screen single_food(food, food_max, Day, xalign):
    frame:
        background Solid("#99000000")
        xalign 0.005 ypos 55             # ตำแน่งที่ว่าง
        vbox:
            add "logo base"              # ชื่อรูปไอค่อน
            text " {color=#00FF00}[Day]{/color}":  # ตัวเลขที่จะแสดง
                yalign 0.5
  
    frame:
        background Solid("#99000000")
        xalign 0.18 ypos 55
        vbox:
            add "logo base2"
            text " {color=#00FF00}[food]/[food_max]{/color}":
                yalign 0.5


screen food():
    use single_food(player_food, player_food_max, player_Day, 0.0)

การใช้งานก็เอาโค้ดนี้ไปวางตำแหน่งการใช้งาน มันก็จะแสดงไอค่อนให้เห็น
Code:
show screen food # เปิด
hide screen food # ปิด

สำหรับการเพิ่มและลดคะแนนพวกนี้ โดยที่มันจะต้องไม่เกินค่าที่เรากำหนดไว้
ก็ทำง่ายครับใช้สองโค้ดด้านล่างก็พอแล้ว
Code:
# หมายถึงเพิ่มhp 80 แต่รวมแล้วไม่เกิน 99
$ player_hp += 80
if  player_hp >= 99:
   $ player_hp = 99

# หมายถึงลดhp 80 แต่รวมแล้วไม่ตำกว่า 0
$ player_hp -= 80
if  player_hp <= 0:
    $ player_hp = 0


สำหรับการเช็คเงื่อนไข ตัวเลขพวกนี้นะครับ
เช่น เราต้องการจะไปจีบสาว ใช้พลังงาน 90 หน่วย ก็จะได้ประมาณนี้
Code:
              if player_hp <= 89: # ถ้าพลังไม่ถึง 89 จะโดนแจ้งเตือนว่าพลังไม่พอ
                  e9 "พลังของคุณไม่เพียงพอ !"
                  jump village

              else:   # ถ้ามีพลัง 90 ขึ้นไปก็จะเริ่มจีบได้ และมีการลบ hp ออก 90 ด้วย
                  $ player_hp -= 90
                   if  player_hp <= 0:
                       $ player_hp = 0
                  j "สวัสดี! "

ตัวอย่างเกมการใช้โค้ด ที่ผมลองทำ 
Code:
http://www.mediafire.com/file/nqjxj6qh0gbfxvp/HunterloveZ-1.0-pc.zip/file

think