Thaigraph

 

   

ค้นหา
Thaigraph หน้าฟอรั่ม Ren'Py [renpy] วิธีทำเมนูเลือกตัวละคร ...
ดู: 6815|ตอบ: 64
go

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

Rank: 7Rank: 7Rank: 7

โพสต์เมื่อ 18-4-2013 22:24 |แสดงโพสต์ทั้งหมด
[renpy] วิธีทำเมนูเลือกตัวละคร และรับตัวแปรชื่อผู้เล่น

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

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

ในบทความนี้ข้าพเจ้าจะเอาบทความ 2 บทความมารวมกันค่ะ คือ

1.
[renpy] การ Input Name User (รับค่าตัวแปร ชื่อผู้เล่น)  และ...
2.
[renpy] วิธีการทำ Imagemap ภายใน Label

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


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



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



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




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


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


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

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

  5. ###############################################
  6. # The game starts here.
  7. label start:
  8.    
  9.     $ user_is_man = True #<--- สร้างตัวแปรเงื่อนไขรองรับทิ้งไว้ เพื่อในกรณีที่ ตัวละครแต่ละเพศต้องไปเจอกับเหตุการณ์ที่แตกต่างกัน
  10.    
  11.     #<---------สร้างเมนูให้ผู้เล่นเลือกตัวละครที่ชอบ----------->
  12.     $ result = renpy.imagemap("cha/bg_select_cha.jpg", "cha/bg_select_cha_hover.jpg", [
  13.                            (0, 0, 400, 600, "man"),
  14.                            (470, 0, 800, 600, "women")
  15.                           ])
  16. ###############################################
  17.     #<---------ถ้าคลิกเลือกตัวละครเพศชาย----------->
  18.     if result == "man":     #<---------สร้างเงื่อนไขในกรณีที่ผู้เล่นเกิดเปลี่ยนใจ อยากเลือกตัวละครอื่น
  19.         $ result = renpy.imagemap("cha/bg_select_man_title.jpg", "cha/bg_select_man_title_hover.png", [
  20.                            (355, 490, 490, 580, "back"),
  21.                            (600, 490, 720, 580, "next")
  22.                           ])
  23.         if result == "back":  #<---------ถ้าผู้เล่นไม่ต้องการเลือกตัวละครนี้
  24.             jump start  #<---------ให้ส่งผู้เล่นกลับไปที่หน้าเลือกตัวละครอีกครั้ง
  25.             
  26.         elif result == "next":  #<---------ผู้เล่นต้องการเลือกตัวละครเพศชาย ให้ดำเนินการต่อ
  27.             jump select_man  #<---------วิ่งไปที่ label รับค่าตัวแปร ชื่อของผู้เล่น เพศชาย

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

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

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

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

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

  59. ####################เข้าสู่เนื้อเรื่องหลัก###########################
  60. label story:
  61.     scene bg1
  62.     show kafra at left
  63.    
  64.     if user_is_man : #<---ในกรณีที่เลือกตัวละครเพศชาย  (user_is_man = True)
  65.         k "คุณชื่อ %(player_name)s ใช่ไหม ยินดีที่ได้รู้จักนะค่ะ"
  66.         k "คุณเป็นชายหนุ่มที่หน้าตาดีกว่าที่ฉันคิดไว้เสียอีก"
  67.         
  68.     else:  #<---ในกรณีที่เลือกตัวละครเพศหญิง  (user_is_man = False)
  69.         k "คุณชื่อ %(player_name)s ใช่ไหม ยินดีที่ได้รู้จักนะค่ะ"
  70.         k "คุณเป็นหญิงสาวที่หน้าตาดีกว่าที่ฉันคิดไว้เสียอีก"
  71. return
  72.    
คัดลอกไปที่คลิปบอร์ด

***สงสัยตรงไหนถามได้นะค่ะ พอดีมันเป็นโค๊ดจากบทความเก่าๆ ที่เคยสอนแบบละเอียดไว้แล้ว แค่เอามาประยุกต์ผสมกันแค่นั้นเอง


***ไฟล์ต้นฉบับพับลิชของบทความนี้ ลองโหลดไปศึกษาดูนะค่ะ (เปิดกับวินโดว์ ของเครื่องแมคไม่ได้ทำ)
[hide][/hide]
บทความโดย NOOKFUFU2
(ขอสงวนสิทธิ์ให้เผยแพร่เฉพาะในเว็บไทยกราฟเท่านั้น!!!)


ไฟล์แนบ: คุณจำเป็นต้องเข้าสู่ระบบก่อนจึงจะสามารถดูและดาวน์โหลดไฟล์แนบได้ หากยังไม่มีแอคเคานต์หรือยังไม่ได้เป็นสมาชิก กรุณาสมัครสมาชิก
บางบทความคุณจำเป็นต้องสมัครสมาชิกแบบ VIP และ SUPERVIP ถึงจะเข้าอ่านบทความได้

Rank: 1

โพสต์เมื่อ 24-4-2013 20:21 |แสดงโพสต์ทั้งหมด
-w- น่ารักจัง ขอบคุณคับ

Rank: 1

โพสต์เมื่อ 25-4-2013 14:11 |แสดงโพสต์ทั้งหมด
ขอบคุณสำหรับความรู้ดีๆน่ะครับ^^

Rank: 1

โพสต์เมื่อ 28-4-2013 18:51 |แสดงโพสต์ทั้งหมด
โอ้ว!!วิเศษมาก ขอบคุณค่ะ

Rank: 1

โพสต์เมื่อ 16-5-2013 00:20 |แสดงโพสต์ทั้งหมด
ขอบคุณครับ ขอลอง เอาไปทำตัว ล็อกอิน

Rank: 1

โพสต์เมื่อ 19-8-2013 19:41 |แสดงโพสต์ทั้งหมด
ขอเอาไปศึกษานะฮะ ขอบคุณครับ

Rank: 1

โพสต์เมื่อ 21-8-2013 19:42 |แสดงโพสต์ทั้งหมด
ขอบคุณครับ

Rank: 1

โพสต์เมื่อ 2-9-2013 22:16 |แสดงโพสต์ทั้งหมด
ขอบคุณมากค่ะ

Rank: 1

โพสต์เมื่อ 20-9-2013 17:49 |แสดงโพสต์ทั้งหมด
ขอบคุณมากคับ

Rank: 1

โพสต์เมื่อ 1-10-2013 20:33 |แสดงโพสต์ทั้งหมด
ยอดเลยฮะผม
คุณต้องเข้าสู่ระบบก่อนจึงจะสามารถตอบกลับ เข้าสู่ระบบ | สมัครสมาชิก


Thaigraph

GMT+7, 17-12-2017 05:45 , Processed in 0.131993 second(s), 22 queries .

Powered by Discuz! X1.5

© 2001-2010 Comsenz Inc. Thai Language by DiscuzThai! Team.

Top 10 Best Sellers in Clothing for 2017 Top 10 Best Sellers in Clothing Best Sellers in Clothing
Top 10 Best Sellers in Books reviewer 2017 Top 10 Best Sellers in Books Best Sellers in Books