คำสั่งจัดการกรอบรูปภาพ
2010-05-09 Games 2,081การสร้างกรอบรูป
SPRITE spriteno, x, y, imgno
เป็นการสร้างกรอบรูปเพื่อเก็บ image และนำไปแสดงผลที่ตำแหน่งใดๆ
spriteno เลขกำกับของกรอบรูป
imgno เลขกำกับของภาพ
load image "house.bmp",1
sprite 1,0,0,1
wait key
end
การเคลื่อนย้ายกรอบรูป
SPRITE spriteno, x, y, imgno
นำมาใช้ในการย้ายตำแหน่งอ้างอิงและการแสดงผลของ sprite ก็ได้
PASTE SPRITE spriteno, x, y
ใช้ในการเปลี่ยนตำแหน่งแสดงผลของ sprite โดยที่ไม่เปลี่ยนตำแหน่งอ้างอิง (ตำแหน่งอ้างอิงมีความสำคัญในการเช็คการชนของ sprite)
MOVE SPRITE spriteno, distance
ใช้เปลี่ยนตำแหน่งของ sprite โดย distance คือระยะทางในหน่วย pixel ซึ่งค่า + จะเป็นการขยับขึ้น ส่วนค่า - จะเป็นการขยับลง
ROTATE SPRITE spriteno, angle
ใช้หมุน sprite ค่า angle คือค่ามุมในหน่วย องศา ซึ่งค่า + จะเป็นมุมตามเข็มนาฬิกา ส่วนค่า - จะเป็นมุมทวนเข็มนาฬิกา
การย้ายจุดอ้างอิงกรอบรูป
โดยทั่วไปจุดอ้างอิงของ sprite จะอยู่ที่มุมซ้ายบนของ sprite เราสามารถเปลี่ยนจุด origin ของ sprite ด้วยคำสั่ง
OFFSET SPRITE spriteno, xoffset, yoffset
xoffset คือค่าระยะในแนวแกนx ที่เราต้องการเปลี่ยนให้เป็นจุด origin ของ sprite
yoffset คือค่าระยะในแนวแกนy ที่เราต้องการเปลี่ยนให้เป็นจุด origin ของ sprite
Sprite Reflection
MIRROR SPRITE spriteno ใช้ทำการกลับรูปจากซ้ายไปขวา
FLIP SPRITE spriteno ใช้ทำการกลับรูปบนลงล่าง
ในกรณีที่ sprite มีการหมุนผลของคำสั่ง MIRROR และ FLIP ยังคงได้ผลตามเดิม
Sprite Background Transparency
กรณี sprite ของเรามีพื้นหลังสีดำ จะทำให้ พื้นหลังของ sprite กลายเป็นภาพโปร่งแสง
Resizing Sprites (เปลี่ยนขนาดของ Sprite)
SCALE SPRITE spriteno, percentage
percentage ขนาดของภาพใหม่ในหน่วย %
STRETCH SPRITE spriteno, wperc, hperc
wperc, hperc ความกว้าง - สูงของภาพใหม่ในหน่วย %
SIZE SPRITE spriteno, wsize, hsize
wsize, hsize ความกว้าง - สูงของภาพใหม่ในหน่วย %
Changing Transparency and Colour Brightness (การเปลี่ยนค่าโปร่งแสง และความสว่างของสี)
SET SPRITE ALPHA spriteno, alphavalue
alphavalue ค่าความโปร่งแสง 0 - 255 (ค่า 0 โปร่งแสงมากที่สุด)
SET SPRITE DIFFUSE spriteno, red, green,blue
red, green, blue ค่าความสว่างของสี 0 - 255 (ค่า 0 จะไม่แสดงสีนั้นๆ)
Showing and Hiding Sprites (การแสดงและซ่อน sprite)
HIDE SPRITE spriteno
SHOW SPRITE spriteno
HIDE ALL SPRITES
SHOW ALL SPRITES
Duplicating a Sprite ( การเพิ่ม sprite )
CLONE SPRITE origspriteno, newspriteno
origspriteno เลขกำกับของ sprite ต้นฉบับ
newspriteno เลขกำกับของ sprite ใหม่
เมื่อทำการ clone sprite จะยังคงแสดงผลทับกันอยู่ เราต้องกำหนดตำแหน่งให้ sprite ใหม่อีกทีหนึ่ง
ตัวอย่างการควบคุม sprite จากผู้เล่น
1. Free Movement
load image "neo101.bmp",1
rem *** ใช้ตัวแปร x,y กำหนดตำแหน่งของ sprite ***
x=200
y=200
sprite 1,x,y,1
offset sprite 1,sprite width(1)/2,sprite height(1)/2
do
key=scancode()
select key
rem up (f)
case 33
rem เป็นการลดค่าตัวแปร
dec y,5
endcase
rem down (c)
case 46
rem เป็นการเพิ่มค่าตัวแปร
inc y,5
endcase
rem left (z)
case 44
dec x,5
endcase
rem right (x)
case 45
inc x,5
endcase
endselect
sprite 1,x,y,1
loop
2. Velocity ( อัตราเร็ว )
type PositionType
x as integer
y as integer
endtype
type VelocityType
xoffset as float
yoffset as float
endtype
set display mode 1024,768,32
screenwidth=1024
screenheight=768
load image "pig.png",1
post as PositionType
velocity as VelocityType
post.x=1024/2
post.y=768/2
velocity.xoffset=6
velocity.yoffset=-8
sprite 1,post.x,post.y,1
offset sprite 1,sprite width(1)/2,sprite height(1)/2
do
inc post.x,velocity.xoffset
inc post.y,velocity.yoffset
rem *** เช็คให้เปลี่ยนทิศทางเมื่อมี sprite ชนขอบจอแนวแกนx
if post.x < sprite width(1)/2 or post.x > screenwidth-sprite width(1)/2
velocity.xoffset = -velocity.xoffset
endif
rem *** เช็คให้เปลี่ยนทิศทางเมื่อมี sprite ชนขอบจอแนวแกนy
if post.y < sprite height(1)/2 or post.y > screenheight-sprite height(1)/2
velocity.yoffset = -velocity.yoffset
endif
sprite 1,post.x,post.y,1
wait 10
loop
sprite command | Hands On Darkbasic Pro V1