Thaigraph

 

   

ค้นหา
Thaigraph หน้าฟอรั่ม Ren'Py [renpy] วิธีแทรก มินิเกมส์ Jigsaw P ...
ดู: 1473|ตอบ: 12
go

[renpy] วิธีแทรก มินิเกมส์ Jigsaw Puzzle

Rank: 7Rank: 7Rank: 7

โพสต์เมื่อ 9-8-2015 23:33 |แสดงโพสต์ทั้งหมด



[renpy] วิธีแทรก มินิเกมส์ Jigsaw Puzzle
เป็นโค๊ด "มินิเกมส์จิ๊กซอ" ที่ค้นเจอในบอร์ด lemmasoft โดยคุณ SusanTheCat พัฒนาไว้ แล้วข้าพเจ้าก็นำมาปรับแต่งเพิ่มเติมโดยใส่โค๊ดของตัวเองเข้าไปอีก เพื่อให้ตัวมินิเกมส์สมบูรณ์มากขึ้นนะคะ

โดยในโค๊ดที่ว่านี้จำเป็นต้องมีโฟลเดอร์ซึ่งใช้เป็นภาพต้นแบบชื่อว่า "puzzle_pieces" เพิ่มลงไปด้วยในโฟลเดอร์ "game" โค๊ดคำสั่งมินิเกมส์ถึงจะใช้ได้ ส่วนภาพที่จะประกอบก็จะมีประมาณนี้ค่ะ (ทั้งหมดมีให้โหลดในไฟล์ต้นฉบับ ท้ายบทความค่ะ)


รูปแบบการทำงานของโค๊ดตัวเพิ่มเติมนี้ เมื่อเข้าเกมส์นี้จะเจอกับหน้าถามผู้เล่นว่าต้องการเล่นเกมส์นี้หรือไม่?



ถ้าผู้เล่นเลือกคลิกที่คำตอบ "เล่นสิ" เกมส์ก็จะแสดงหน้ามินิเกมส์ "จิ๊กซอ" ขึ้นมา (ชิ้นส่วนภาพจะกระจายไปทั่วหน้าจอ ผู้เล่นจะต้องเรียงภาพให้เหมือนกับภาพต้นแบบด้านซ้านล่าง) และในกรณีที่ผู้เล่นไม่สามารถเล่นต่อได้ หรือต้องการออกจากหน้านี้ โดยไม่ต้องการเล่นให้จบ ก็สามารถคลิกที่ปุ่ม "EXIT" (ด้านซ้านล่างของหน้าจอเกมส์) เพื่อออกจากหน้ามินิเกมส์ได้ตลอดเวลา



ในกรณีที่ผู้เล่นต่อจิ๊กซอภาพครบทุกชิ้น เกมส์จะวิ่งไปที่หน้า label win: พร้อมแสดงภาพหน้าตัวสมบูรณ์ และโชว์คำว่า "คุณชนะแล้ว"




และในกรณีตรงข้าม คือถ้าผู้เล่นคลิกปุ่ม "EXIT" เพิ่มออกจากหน้นมินิเกมส์โดยไม่เล่นต่อให้จบ เกมส์ก็จะวิ่งไปที่หน้า label lose: ทันที พร้อมกับแสดงคำว่า "คุณแพ้แล้ว"





มาดูโค๊ดขั้นตอนทั้งหมดกันเลยค่ะ หน้าตาก็จะประมาณนี้
(โค๊ดจะใส่ไว้ที่หน้า script.rpy เพื่อให้เข้าใจมากขึ้น ที่ท้ายบทความจะมีไฟล์ต้นฉบับให้โหลดไปเปิดดูได้ค่ะ)
  1. image blank_image = "blank_image_800x600.jpg"
  2. define v = Character('วิชชา', color="#f8f092")

  3. init python:
  4.     def piece_dragged(drags, drop):
  5.         
  6.         if not drop:
  7.             return
  8.         
  9.         p_x = drags[0].drag_name[0]
  10.         p_y = drags[0].drag_name[1]
  11.         t_x = drop.drag_name[0]
  12.         t_y = drop.drag_name[1]
  13.         
  14.         if p_x == t_x and p_y == t_y:
  15.             renpy.music.play("Pickup_Coin.ogg", channel="sound")
  16.             my_x = int(p_x)*100+25
  17.             my_y = int(p_y)*100+25
  18.             drags[0].snap(my_x,my_y)
  19.             drags[0].draggable = False
  20.             placedlist[int(p_x),int(p_y)] = True
  21.             for i in range(6):
  22.                 for j in range(4):
  23.                     if placedlist[i,j] == False:
  24.                         return
  25.             return True
  26.         return
  27.         
  28. screen jigsaw:
  29.     python:
  30.          ui.imagebutton("button.png", "button_hover.png", xalign=.01,yalign=.99 , clicked=ui.jumps("lose"))

  31.     draggroup:
  32.         
  33.         for i in range(6):
  34.             for j in range(4):
  35.                 $ name = "%s%s"%(i,j)
  36.                 $ my_x = i*100+50
  37.                 $ my_y = j*100+50
  38.                 drag:
  39.                     drag_name name
  40.                     child "blank_space_100x100.png"
  41.                     draggable False
  42.                     xpos my_x ypos my_y
  43.             
  44.             
  45.         for i in range(6):
  46.             for j in range(4):
  47.                 $ name = "%s%s piece"%(i,j)
  48.                 drag:
  49.                     drag_name name
  50.                     child imagelist[i,j]
  51.                     droppable False
  52.                     dragged piece_dragged
  53.                     xpos piecelist[i,j][0] ypos piecelist[i,j][1]
  54.             
  55.            
  56. label puzzle:
  57.     call screen jigsaw
  58.     jump win

  59. label start:
  60.     scene blank_image
  61.     menu:
  62.         v "เรามาเล่นกันหน่อยไหม?"
  63.         
  64.         "เล่นสิ":
  65.                 scene blank_image
  66.                 image whole = "thaigraph_6X4_600x400.jpg"

  67.                 python:
  68.                     mainimage = im.Composite((650, 450),(25, 25), "thaigraph_6X4_600x400.jpg")
  69.                     piecelist = dict()
  70.                     imagelist = dict()
  71.                     placedlist = dict()
  72.                     for i in range(6):
  73.                         for j in range(4):
  74.                             piecelist[i,j] = [renpy.random.randint(0, 600)+100, renpy.random.randint(0, 480)] #ปรับระยะกระจายของจิ๊กซอ
  75.                             tempimage = im.AlphaMask(mainimage,"puzzle_pieces/%s_%s.png"%(j+1,i+1))
  76.                             imagelist[i,j] = im.Crop(tempimage, i*100,j*100, 150, 150)
  77.                             placedlist[i,j] = False
  78.                 jump puzzle
  79.             
  80.         "ไม่ดีกว่า":
  81.             return

  82. label win:
  83.     scene black
  84.     show whole at Position(xalign=0.5,yalign=0.5)
  85.     v "คุณชนะแล้ว"
  86. return

  87. label lose:
  88.     scene black
  89.     v "คุณแพ้แล้ว"
  90. return
คัดลอกไปที่คลิปบอร์ด

***ไฟล์ต้นฉบับค่ะ เปิดด้วย renpy เวอร์ชั่น 6.18.3-sdk หรือสูงกว่า
[hide][/hide]

แล้วพบกันใหม่บทความหน้านะคะ ขอให้สนุกกับการทำเกมส์ค่ะ

บทความโดย NOOKFUFU2
(ขอสงวนสิทธิ์ให้เผยแพร่เฉพาะในเว็บไทยกราฟเท่านั้น!!!)



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

Rank: 1

โพสต์เมื่อ 15-10-2015 15:57 |แสดงโพสต์ทั้งหมด
สุดยอดเลยคะ ขอบคุณที่นำมาสอนนะคะ

Rank: 1

โพสต์เมื่อ 26-10-2015 21:37 |แสดงโพสต์ทั้งหมด
ขอบคุณมากค่ะ YuY <3

Rank: 1

โพสต์เมื่อ 13-7-2016 15:22 |แสดงโพสต์ทั้งหมด
ขออนุญาตนำไปใช้นะครับ

Rank: 1

โพสต์เมื่อ 20-7-2016 12:55 |แสดงโพสต์ทั้งหมด
ขอบคุณครัย^-^

Rank: 1

โพสต์เมื่อ 24-7-2016 23:58 |แสดงโพสต์ทั้งหมด
ขอบคุณครับ

Rank: 1

โพสต์เมื่อ 13-8-2016 00:48 |แสดงโพสต์ทั้งหมด
ขอบคุณค่า

Rank: 1

โพสต์เมื่อ 19-8-2016 12:24 |แสดงโพสต์ทั้งหมด
จิ้กซอเหรอชอบครับ

Rank: 1

โพสต์เมื่อ 27-9-2016 16:41 |แสดงโพสต์ทั้งหมด
สุดยอด

Rank: 1

โพสต์เมื่อ 26-10-2016 18:41 |แสดงโพสต์ทั้งหมด
ขออนุญาตเอาไปใช้นะคะ ขอบคุณค่ะ
คุณต้องเข้าสู่ระบบก่อนจึงจะสามารถตอบกลับ เข้าสู่ระบบ | สมัครสมาชิก


Thaigraph

GMT+7, 20-10-2017 15:43 , Processed in 0.036365 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