Recrit
同人遊戲相關專欄連載
【捨丸&KID】blt 指令介紹
* bit動畫
在novel game的戰鬥場景中應該有見過類似刀劍揮舞軌跡的動畫。
那其實是每格只有畫面數分之一大小的圖像並排在一起,將每格放大之後依序連續表示而使其變成動畫的處理。每一格其實只有實際圖像的數分之一。
* 進行bit處理時的流程
首先必須將動畫用的圖像利用btndef命令將之讀入至記憶體中。
然後將記憶體中的圖像切割成複數個之後在利用blt命令來連續表示。
btndef “9x.bmp”
blt 0,0,640,480,0,0,320,240
* 讀入動畫用圖像
首先利用btndef命令讀入圖像。
程式碼
btndef 叫出圖像的文字列
範例
btndef “9x.bmp”
這裡用到btn命令中也被使用到,讀取button原本圖像的btndef命令。將動畫用的圖像讀入到記憶體之中。(請參考2-7 button命令)
* 表示出圖像的一部分
利用bit命令將圖像的一部分擴大表示。
程式碼
blt 表示於畫面時左上角的x座標,表示於畫面時左上角的y座標,表示於畫面時的寬,表示於畫面時的高,元圖像上開始讀入的x座標, 元圖像上開始讀入的y座標,元圖像讀入時的寬度,元圖像讀入時的高度
範例
blt 0,0,640,480,0,0,320,240
接著使用blt命令來表示圖像。
和SP不一樣,blt命令自己就包括了設定和表示的功能。
blt 0,0,640,480,0,0,320,240
0,0為動畫表示時於畫面上左上角的x,y座標。
blt 0,0,640,480,0,0,320,240
640,480為動畫表示時於畫面上的寬與高。
blt 0,0,640,480,0,0,320,240
0,0為元圖像上開始讀入的x,y座標。
blt 0,0,640,480,0,0,320,240
320,240為元圖像上被讀入的寬與高。
雖然有些複雜,但是請用下面原則記住:前半的0,0,640,480為實際表示在畫面上時的相關數值,後半的0,0,320,240為讀入的原圖像的相關數值。
上述範例中元圖像的320x240畫素會被擴大成640x480表示。
會使用擴大表示的原因是因為當圖像會動的時候,即使畫質較低落也不會讓玩家太在意。
* 當要進行動畫表示時?
剛剛所用的blt命令只能夠將所讀取圖像中的一部分以一張圖像表示在畫面上,這樣並不能說是動畫,因此必須要將必要格數的圖像利用blt命令不斷地更新畫面。
* 在使用過blt命令後
由於blt命令是直接在畫面上進行繪圖,因此在結束之後圖像常常會出現一些錯亂的狀況。
因此利用ofscpy命令將輸入blt命令更新過後的畫面圖像送至off screen buffer,先將畫面安定之後在進行叫出背景圖的動作。
程式碼範例:
「
btndef clear
btndef "pic\final.jpg"
csp -1
bg black,1
for %1=0 to 150 step 5
blt 0,100,600,220,670+%1,540,600,220
strsp 51,"隨便要打什麼字",800-%1*2,400,10,2,23,23,0,0,1,0,#FFFFFF
print 1
wait 50
next
ofscpy
wait 200
csp -1
bg black,9
wait 400
strsph 52,"天線寶寶~",150,200,13,2,23,23,0,0,1,0,#FFFFFF
strsph 53,"天線寶寶~~",300,350,13,2,23,23,0,0,1,0,#FFFFFF
vsp 52,1
print 19
wait 400
vsp 53,1
print 19
wait 500
click
csp -1
bg black,9
mov %1,0
for %1=0 to 300 step 5
blt 170,0,250,450,450,500+%1,250,450
strsp 51,"海綿寶寶",600,600-%1,10,2,23,23,0,0,1,0,#FFFFFF
print 1
wait 50
next
ofscpy
wait 200
csp -1
bg black,9
strsph 52,"派大星",400,200,13,2,23,23,0,0,1,0,#FFFFFF
strsph 53,"章魚哥",450,350,13,2,23,23,0,0,1,0,#FFFFFF
vsp 52,1
print 19
wait 400
vsp 53,1
print 19
wait 500
click
csp -1
bg black,9
mov %1,0
for %1=0 to 300 step 5
blt 450,150,250,450,1050,1000-%1,250,450
strsp 51,"我是丁丁",80,0+%1,10,2,23,23,0,0,1,0,#FFFFFF
print 1
wait 50
next
ofscpy
wait 200
csp -1
bg black,9
strsph 52,"也可以丟點有氣氛的",80,200,13,2,23,23,0,0,1,0,#FFFFFF
strsph 53,"寫教學也算是一種複習",200,350,13,2,23,23,0,0,1,0,#FFFFFF
vsp 52,1
print 19
wait 400
vsp 53,1
print 19
wait 500
click
csp -1
bg black,9
strsph 52,"其實沒必要貼這麼多",304,200,13,2,23,23,0,0,1,0,#FFFFFF
strsph 53,"但我懶得修了~~",281,350,13,2,23,23,0,0,1,0,#FFFFFF
vsp 52,1
print 19
wait 400
vsp 53,1
print 19
」
在novel game的戰鬥場景中應該有見過類似刀劍揮舞軌跡的動畫。
那其實是每格只有畫面數分之一大小的圖像並排在一起,將每格放大之後依序連續表示而使其變成動畫的處理。每一格其實只有實際圖像的數分之一。
* 進行bit處理時的流程
首先必須將動畫用的圖像利用btndef命令將之讀入至記憶體中。
然後將記憶體中的圖像切割成複數個之後在利用blt命令來連續表示。
btndef “9x.bmp”
blt 0,0,640,480,0,0,320,240
* 讀入動畫用圖像
首先利用btndef命令讀入圖像。
程式碼
btndef 叫出圖像的文字列
範例
btndef “9x.bmp”
這裡用到btn命令中也被使用到,讀取button原本圖像的btndef命令。將動畫用的圖像讀入到記憶體之中。(請參考2-7 button命令)
* 表示出圖像的一部分
利用bit命令將圖像的一部分擴大表示。
程式碼
blt 表示於畫面時左上角的x座標,表示於畫面時左上角的y座標,表示於畫面時的寬,表示於畫面時的高,元圖像上開始讀入的x座標, 元圖像上開始讀入的y座標,元圖像讀入時的寬度,元圖像讀入時的高度
範例
blt 0,0,640,480,0,0,320,240
接著使用blt命令來表示圖像。
和SP不一樣,blt命令自己就包括了設定和表示的功能。
blt 0,0,640,480,0,0,320,240
0,0為動畫表示時於畫面上左上角的x,y座標。
blt 0,0,640,480,0,0,320,240
640,480為動畫表示時於畫面上的寬與高。
blt 0,0,640,480,0,0,320,240
0,0為元圖像上開始讀入的x,y座標。
blt 0,0,640,480,0,0,320,240
320,240為元圖像上被讀入的寬與高。
雖然有些複雜,但是請用下面原則記住:前半的0,0,640,480為實際表示在畫面上時的相關數值,後半的0,0,320,240為讀入的原圖像的相關數值。
上述範例中元圖像的320x240畫素會被擴大成640x480表示。
會使用擴大表示的原因是因為當圖像會動的時候,即使畫質較低落也不會讓玩家太在意。
* 當要進行動畫表示時?
剛剛所用的blt命令只能夠將所讀取圖像中的一部分以一張圖像表示在畫面上,這樣並不能說是動畫,因此必須要將必要格數的圖像利用blt命令不斷地更新畫面。
* 在使用過blt命令後
由於blt命令是直接在畫面上進行繪圖,因此在結束之後圖像常常會出現一些錯亂的狀況。
因此利用ofscpy命令將輸入blt命令更新過後的畫面圖像送至off screen buffer,先將畫面安定之後在進行叫出背景圖的動作。
程式碼範例:
「
btndef clear
btndef "pic\final.jpg"
csp -1
bg black,1
for %1=0 to 150 step 5
blt 0,100,600,220,670+%1,540,600,220
strsp 51,"隨便要打什麼字",800-%1*2,400,10,2,23,23,0,0,1,0,#FFFFFF
print 1
wait 50
next
ofscpy
wait 200
csp -1
bg black,9
wait 400
strsph 52,"天線寶寶~",150,200,13,2,23,23,0,0,1,0,#FFFFFF
strsph 53,"天線寶寶~~",300,350,13,2,23,23,0,0,1,0,#FFFFFF
vsp 52,1
print 19
wait 400
vsp 53,1
print 19
wait 500
click
csp -1
bg black,9
mov %1,0
for %1=0 to 300 step 5
blt 170,0,250,450,450,500+%1,250,450
strsp 51,"海綿寶寶",600,600-%1,10,2,23,23,0,0,1,0,#FFFFFF
print 1
wait 50
next
ofscpy
wait 200
csp -1
bg black,9
strsph 52,"派大星",400,200,13,2,23,23,0,0,1,0,#FFFFFF
strsph 53,"章魚哥",450,350,13,2,23,23,0,0,1,0,#FFFFFF
vsp 52,1
print 19
wait 400
vsp 53,1
print 19
wait 500
click
csp -1
bg black,9
mov %1,0
for %1=0 to 300 step 5
blt 450,150,250,450,1050,1000-%1,250,450
strsp 51,"我是丁丁",80,0+%1,10,2,23,23,0,0,1,0,#FFFFFF
print 1
wait 50
next
ofscpy
wait 200
csp -1
bg black,9
strsph 52,"也可以丟點有氣氛的",80,200,13,2,23,23,0,0,1,0,#FFFFFF
strsph 53,"寫教學也算是一種複習",200,350,13,2,23,23,0,0,1,0,#FFFFFF
vsp 52,1
print 19
wait 400
vsp 53,1
print 19
wait 500
click
csp -1
bg black,9
strsph 52,"其實沒必要貼這麼多",304,200,13,2,23,23,0,0,1,0,#FFFFFF
strsph 53,"但我懶得修了~~",281,350,13,2,23,23,0,0,1,0,#FFFFFF
vsp 52,1
print 19
wait 400
vsp 53,1
print 19
」
PR
この記事にコメントする
この記事へのトラックバック
- この記事にトラックバックする
重大更新
New Entries
(02/16)
(12/03)
(10/30)
(10/03)
(09/19)
Categories
Search
推廣遊戲
─歡迎交換連結─
Banner放置處