nooknazha โพสต์ 2018-6-22 16:56:20

[Renpy] 30. วิธีทำเมนูเลือกตัวละคร และรับตัวแปรชื่อผู้เล่น

แก้ไขครั้งสุดท้ายโดย nooknazha เมื่อ 2018-6-22 16:58


30. วิธีทำเมนูเลือกตัวละคร และรับตัวแปรชื่อผู้เล่น

การให้ผู้เล่นสามารถเลือกตัวละครที่ตนเองต้องการได้และการให้ผู้เล่นสามารถใส่ชื่อของตนเองลงไปในเกมส์ได้จะช่วยให้ผู้เล่นตั้งใจอ่านเนื้อเรื่องต่างๆภายในเกมส์มากขึ้น และยังมีส่วนช่วยให้ผู้เล่นอินกับบทบาทที่ตนเองได้รับภายในเกมส์มากขึ้นด้วย

โดยเนื้อหาเกมส์ในรูปแบบที่ผู้เล่นสามารถเลือกตัวที่ตนเองชอบได้จะเหมาะสำหรับเกมส์ที่ไม่มีแบ่งแยกเฉพาะเพศใด เพศหนึ่ง เข้ามาเกี่ยวข้อง เช่นเกมส์แนวผจญภัย แฟนตาซี สืบสวนคดี ไขปริศนาต่างๆ ฯลฯซึ่งอันนี้ก็แล้วแต่จิตนาการของผู้สร้างเกมส์เอง


อธิบายสเต็ปการทำงาน
1. พอคลิกปุ่ม startเกมส์ ก็จะเข้าสู่หน้าจอ ให้ผู้เล่นเลือกเพศตัวละครที่ต้องการ

2. หากผู้เล่นเลือกคลิกเลือก ตัวละครตัวใด ตัวใดหนึ่งแล้วก็จะเข้าไปที่หน้าอธิบายรายละเอียด(รายละเอียดของตัวละครจะแยกตามเพศที่ผู้เล่นเลือกในกรณีข้าพเจ้าคลิกเลือกเพศหญิง) ที่หน้าจอรายละเอียดนี้ผู้เล่นสามารถยกเลิกการเลือก และกลับไปที่หน้าเลือกตัวละครได้อีกครั้ง

3. หากผู้เล่น ตกลงที่จะเลือกตัวละครดังกล่าว (คลิกปุ่ม"ตกลง") โปรแกรมก็จะส่งผู้เล่นไปที่หน้าใส่ "ชื่อ"ในกรณีที่ผู้เล่นกดปุ่ม "Enter" ผ่านไปทันที(ไม่ยอมกรอกชื่อก่อน)โปรแกรมจะตั้งชื่อผู้เล่นว่า "Transfer"ให้แทน (คำสั่ง length=10 คือจำนวนตัวอักษรที่ผู้เล่นสามารถตั้งชื่อตัวเองได้หากเกินกว่านั้นโปรแกรมจะตัดให้เหลือแค่ 10 ตัวแรก )


4. ถ้าผู้เล่น ตั้งชื่อ และกดปุ่ม Enter แล้วโปรแกรมจะพาเข้าสู่เนื้อเรื่องหลักของเกมส์โดยเราอาจจะกำหนดให้ตัวละครตัวอื่นๆภายในเกมส์ เปลี่ยนรูปแบบการพูดได้และมีปฏิสัมพันธ์ต่างๆกับผู้เล่นได้แตกต่างกัน ตามเพศที่ผู้เล่นเลือก

ขี้เกียจวาดภาพ -*- ยืมมาก่อนละกัน หุหุ)

การเขียนโค๊ดที่ไฟล์ script.rpy ก็จะประมาณนี้ค่ะ แล้วแต่จะเอาไป modify



define me = DynamicCharacter('player_name', color="#ff0000") #<กำหนดชื่อผู้เล่นให้เป็นชนิด DynamicCharacter
define k = Character('Kafra', color="#ffffff")

image kafra = 'cha/kafra1.png'
image bg1 = 'cha/bg_map.jpg'

###############################################
# The game starts here.
label start:
   
    $ user_is_man = True #<--- สร้างตัวแปรเงื่อนไขรองรับทิ้งไว้ เพื่อในกรณีที่ ตัวละครแต่ละเพศต้องไปเจอกับเหตุการณ์ที่แตกต่างกัน
   
    #<---------สร้างเมนูให้ผู้เล่นเลือกตัวละครที่ชอบ----------->
    $ result = renpy.imagemap("cha/bg_select_cha.jpg", "cha/bg_select_cha_hover.jpg", [
                           (0, 0, 400, 600, "man"),
                           (470, 0, 800, 600, "women")
                        ])
###############################################
    #<---------ถ้าคลิกเลือกตัวละครเพศชาย----------->
    if result == "man":   #<---------สร้างเงื่อนไขในกรณีที่ผู้เล่นเกิดเปลี่ยนใจ อยากเลือกตัวละครอื่น
      $ result = renpy.imagemap("cha/bg_select_man_title.jpg", "cha/bg_select_man_title_hover.png", [
                           (355, 490, 490, 580, "back"),
                           (600, 490, 720, 580, "next")
                        ])
      if result == "back":#<---------ถ้าผู้เล่นไม่ต้องการเลือกตัวละครนี้
            jump start#<---------ให้ส่งผู้เล่นกลับไปที่หน้าเลือกตัวละครอีกครั้ง
            
      elif result == "next":#<---------ผู้เล่นต้องการเลือกตัวละครเพศชาย ให้ดำเนินการต่อ
            jump select_man#<---------วิ่งไปที่ label รับค่าตัวแปร ชื่อของผู้เล่น เพศชาย

###############################################
    #<---------ถ้าคลิกเลือกตัวละครเพศหญิง----------->
    elif result == "women":#<---------สร้างเงื่อนไขในกรณีที่ผู้เล่นเกิดเปลี่ยนใจ อยากเลือกตัวละครอื่น
      $ result = renpy.imagemap("cha/bg_select_women_title.jpg", "cha/bg_select_man_title_hover.png", [
                           (355, 490, 490, 580, "back"),
                           (600, 490, 720, 580, "next")
                        ])
      if result == "back":#<---------ถ้าผู้เล่นไม่ต้องการเลือกตัวละครนี้
            jump start #<---------ให้ส่งผู้เล่นกลับไปที่หน้าเลือกตัวละครอีกครั้ง
            
      elif result == "next": #<---------ผู้เล่นต้องการเลือกตัวละครเพศหญิง ให้ดำเนินการต่อ
            $ user_is_man = False#<---------กำหนดให้เงื่อนไขที่ตัวละครเป็นชาย เป็นเท็จไปซะ
            jump select_women#<---------วิ่งไปที่ label รับค่าตัวแปร ชื่อของผู้เล่น เพศหญิง
return

#############รับค่าชื่อของผู้เล่น ที่เลือกเพศชาย#####################

label select_man: #<---------ถ้าผู้เล่นเลือกตัวละครเพศชาย จะวิ่งมาที่ label เพื่อกำหนดชื่อในการเล่นเกมส์
    $ ui.image("cha/bg_select_man_name.jpg",xalign=0.0, yalign=0.0) #<---ภาพพื้นฉากหน้ากรอกชื่อผู้เล่น เพศชาย
    $ ui.input('', xalign=0.85, yalign=0.56, color= "#1f2b87", length=10) #<--คำสั่งรับค่าตัวแประชื่อผู้เล่นเพศชาย
    $ player_name = ui.interact()
    if player_name == '':
      $ player_name = 'Transfer' #<------ในกรณีที่ผู้เล่นไม่กรอกตัวอักษรใดๆลงไป โปรแกรมจะกำหนดให้ผู้เล่นชื่อ "Transfer" แทน
    jump story

#############รับค่าชื่อของผู้เล่น ที่เลือกเพศหญิง####################

label select_women: #<---------ถ้าผู้เล่นเลือกตัวละครเพศหญิง จะวิ่งมาที่ label เพื่อกำหนดชื่อในการเล่นเกมส์
   
    $ ui.image("cha/bg_select_women_name.jpg",xalign=0.0, yalign=0.0) #<--ภาพพื้นฉากหน้ากรอกชื่อผู้เล่น เพศหญิง
    $ ui.input('', xalign=0.85, yalign=0.56, color= "#1f2b87",length=10) #<--คำสั่งรับค่าตัวแประชื่อผู้เล่นเพศหญิง
    $ player_name = ui.interact()
    if player_name == '':
      $ player_name = 'Transfer' #<------ในกรณีที่ผู้เล่นไม่กรอกตัวอักษรใดๆลงไป โปรแกรมจะกำหนดให้ผู้เล่นชื่อ "Transfer" แทน
    jump story

####################เข้าสู่เนื้อเรื่องหลัก###########################
label story:
    scene bg1
    show kafra at left
   
    if user_is_man : #<---ในกรณีที่เลือกตัวละครเพศชาย(user_is_man = True)
      k "คุณชื่อ %(player_name)s ใช่ไหม ยินดีที่ได้รู้จักนะค่ะ"
      k "คุณเป็นชายหนุ่มที่หน้าตาดีกว่าที่ฉันคิดไว้เสียอีก"
      
    else:#<---ในกรณีที่เลือกตัวละครเพศหญิง(user_is_man = False)
      k "คุณชื่อ %(player_name)s ใช่ไหม ยินดีที่ได้รู้จักนะค่ะ"
      k "คุณเป็นหญิงสาวที่หน้าตาดีกว่าที่ฉันคิดไว้เสียอีก"
return
***************************************

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


หน้า: [1]
ดูในรูปแบบกติ: [Renpy] 30. วิธีทำเมนูเลือกตัวละคร และรับตัวแปรชื่อผู้เล่น