[Renpy] 74. วิธีแทรก มินิเกมส์ Jigsaw Puzzle
74. วิธีแทรก มินิเกมส์ Jigsaw Puzzle
เป็นโค๊ด "มินิเกมส์จิ๊กซอ" ที่ค้นเจอในบอร์ด lemmasoft โดยคุณ SusanTheCat พัฒนาไว้ แล้วข้าพเจ้าก็นำมาปรับแต่งเพิ่มเติมโดยใส่โค๊ดของตัวเองเข้าไปอีก เพื่อให้ตัวมินิเกมส์สมบูรณ์มากขึ้นนะคะ
โดยในโค๊ดที่ว่านี้จำเป็นต้องมีโฟลเดอร์ซึ่งใช้เป็นภาพต้นแบบชื่อว่า "puzzle_pieces" เพิ่มลงไปด้วยในโฟลเดอร์ "game" โค๊ดคำสั่งมินิเกมส์ถึงจะใช้ได้ ส่วนภาพที่จะประกอบก็จะมีประมาณนี้ค่ะ (ทั้งหมดมีให้โหลดในไฟล์ต้นฉบับ ท้ายบทความค่ะ)
รูปแบบการทำงานของโค๊ดตัวเพิ่มเติมนี้ เมื่อเข้าเกมส์นี้จะเจอกับหน้าถามผู้เล่นว่าต้องการเล่นเกมส์นี้หรือไม่?
ถ้าผู้เล่นเลือกคลิกที่คำตอบ "เล่นสิ" เกมส์ก็จะแสดงหน้ามินิเกมส์ "จิ๊กซอ" ขึ้นมา (ชิ้นส่วนภาพจะกระจายไปทั่วหน้าจอ ผู้เล่นจะต้องเรียงภาพให้เหมือนกับภาพต้นแบบด้านซ้านล่าง) และในกรณีที่ผู้เล่นไม่สามารถเล่นต่อได้ หรือต้องการออกจากหน้านี้ โดยไม่ต้องการเล่นให้จบ ก็สามารถคลิกที่ปุ่ม "EXIT" (ด้านซ้านล่างของหน้าจอเกมส์) เพื่อออกจากหน้ามินิเกมส์ได้ตลอดเวลา
ในกรณีที่ผู้เล่นต่อจิ๊กซอภาพครบทุกชิ้น เกมส์จะวิ่งไปที่หน้า label win: พร้อมแสดงภาพหน้าตัวสมบูรณ์ และโชว์คำว่า "คุณชนะแล้ว"
และในกรณีตรงข้าม คือถ้าผู้เล่นคลิกปุ่ม "EXIT" เพิ่มออกจากหน้นมินิเกมส์โดยไม่เล่นต่อให้จบ เกมส์ก็จะวิ่งไปที่หน้า label lose: ทันที พร้อมกับแสดงคำว่า "คุณแพ้แล้ว"
มาดูโค๊ดขั้นตอนทั้งหมดกันเลยค่ะ หน้าตาก็จะประมาณนี้
(โค๊ดจะใส่ไว้ที่หน้า script.rpy เพื่อให้เข้าใจมากขึ้น ที่ท้ายบทความจะมีไฟล์ต้นฉบับให้โหลดไปเปิดดูได้ค่ะ)
image blank_image = "blank_image_800x600.jpg"
define v = Character('วิชชา', color="#f8f092")
init python:
def piece_dragged(drags, drop):
if not drop:
return
p_x = drags.drag_name
p_y = drags.drag_name
t_x = drop.drag_name
t_y = drop.drag_name
if p_x == t_x and p_y == t_y:
renpy.music.play("Pickup_Coin.ogg", channel="sound")
my_x = int(p_x)*100+25
my_y = int(p_y)*100+25
drags.snap(my_x,my_y)
drags.draggable = False
placedlist = True
for i in range(6):
for j in range(4):
if placedlist == False:
return
return True
return
screen jigsaw:
python:
ui.imagebutton("button.png", "button_hover.png", xalign=.01,yalign=.99 , clicked=ui.jumps("lose"))
draggroup:
for i in range(6):
for j in range(4):
$ name = "%s%s"%(i,j)
$ my_x = i*100+50
$ my_y = j*100+50
drag:
drag_name name
child "blank_space_100x100.png"
draggable False
xpos my_x ypos my_y
for i in range(6):
for j in range(4):
$ name = "%s%s piece"%(i,j)
drag:
drag_name name
child imagelist
droppable False
dragged piece_dragged
xpos piecelist ypos piecelist
label puzzle:
call screen jigsaw
jump win
label start:
scene blank_image
menu:
v "เรามาเล่นกันหน่อยไหม?"
"เล่นสิ":
scene blank_image
image whole = "thaigraph_6X4_600x400.jpg"
python:
mainimage = im.Composite((650, 450),(25, 25), "thaigraph_6X4_600x400.jpg")
piecelist = dict()
imagelist = dict()
placedlist = dict()
for i in range(6):
for j in range(4):
piecelist = #ปรับระยะกระจายของจิ๊กซอ
tempimage = im.AlphaMask(mainimage,"puzzle_pieces/%s_%s.png"%(j+1,i+1))
imagelist = im.Crop(tempimage, i*100,j*100, 150, 150)
placedlist = False
jump puzzle
"ไม่ดีกว่า":
return
label win:
scene black
show whole at Position(xalign=0.5,yalign=0.5)
v "คุณชนะแล้ว"
return
label lose:
scene black
v "คุณแพ้แล้ว"
return
***ไฟล์ต้นฉบับค่ะ เปิดด้วย renpy เวอร์ชั่น 6.18.3-sdk หรือสูงกว่า
ขอให้สนุกกับการสร้างเกมส์นะค่ะ^^"******************************
บทความโดย นุ้ก
ขอจบบทความแค่เพียงเท่านี้ แล้วพบกันใหม่บทความหน้าค่ะ ^^
(ขอสงวนสิทธิ์อนุญาตให้เผยแพร่เฉพาะในเว็บ www.graphicfufu.comเท่านั้น)
หน้า:
[1]