Thaigraph

 

   

ค้นหา
Thaigraph หน้าฟอรั่ม Ren'Py [renpy] วิธีแทรก มินิเกมส์ Jigsaw P ...
ดู: 1256|ตอบ: 11
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, 27-6-2017 10:41 , Processed in 0.106808 second(s), 22 queries .

Powered by Discuz! X1.5

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