« [改造記]メインルーチン | トップページ | [改造記]解剖記のスクリプトを改造しよう »

[改造記]画面描写(es_copy)

さていよいよhspdx.dllを使う場合の画面描写です。実はスプライトの機能を使わなければ、変更点はgcopyの代わりにgmodeとes_copyを使うだけです。では「奮闘記」の配列を使って星の動きを制御するのだのスクリプト(若干異なります^^;)を改造してみましょう。やっと「改造記」の名に相応しい状況になってきました(笑)

改造前スクリプトと改造後スクリプトのダウンロード(lzh)
※hspdxfix.dllとhspdxfix.asはご自分でご用意ください

サンプルにはstars.bmpが添付されてます。こんな感じ。

小さくてわかりませんね(笑)左から順に、明るい色から暗い色まで1dotの点がうってあります。ワンブロック5x5の大きさでコピーするようにしています。まぁどんな大きさでもいいんですけど^^;

;DirectX 初期化&チェック
#include "hspdxfix.as"
es_ini : es_screen 640,480,8,0
if stat=1 : goto *dxerr1
if stat=2 : goto *dxerr2
goto *setting

*dxerr1
dialog "DirectXの初期化に失敗しました。",1 : end
*dxerr2
dialog "スクリーンの初期化に失敗しました。",1 : end
*dxerr3
es_bye : wait 100
dialog "VRAMの容量が不足しています。",1 : end


;初期設定
*setting
randomize
smax=100 ;星の最大数
dim sx,smax ;星のx軸座標
dim sy,smax ;星のy軸座標
dim sc,smax ;星の色
dim ss,smax ;星の移動速度
repeat smax
rnd sx.cnt,635
rnd sy.cnt,475
rnd sc.cnt,14
rnd ss.cnt,4 : ss.cnt++
loop

;バッファへ画像の読みこみ
buffer 2,640,480,1
picload "stars.bmp",1

es_buffer 0,0
if stat=1 : goto *dxerr3


;メインルーチンへ行く前の儀式(笑)
gsel 0

es_cls
es_sync
wait 100

;----------------------------------------------------------
;メインルーチン
*main
getkey returntop,123
if returntop=1 : end ;強制終了(F12)

es_cls 0,0,0
gosub *stars
await 0
es_sync 20

goto *main
;----------------------------------------------------------
;流れる星を表示するためのサブルーチン
*stars
repeat smax
pos sx.cnt,sy.cnt

gmode 1,5,5 : es_copy 0,sc.cnt*5,0
sy.cnt+=ss.cnt
if sy.cnt>480 : sy.cnt=-5 : rnd sx.cnt,640
loop
return

hspdxfix.dll対応にする際に変更を加えた箇所はこの色になってます。この色になってる部分が今回の改造のキモです。この*starsのルーチンをもし標準命令で書くとすると、こんな感じです。

;流れる星を表示するためのサブルーチン
*stars
repeat smax
pos sx.cnt,sy.cnt

gcopy 0,sc.cnt*5,0,5,5
sy.cnt+=ss.cnt
if sy.cnt>480 : sy.cnt=-5 : rnd sx.cnt,640
loop
return

このサンプルの場合gcopyをgmodeとes_copyに変更してますが、じつは標準命令の場合もgmodeでコピーサイズを指定しておけるので、実 質はgcopyをes_copyに差し替えるだけです。この程度のスクリプトなら、もろもろの準備をしなければならない分、DirectXを使うほうが面 倒だったりします^^;

stars.asとstarsdx.asをじっくり見比べてみてください。実行時の見た目は、chgdispで全画面表示をしてるので殆ど差が無いと思い ます。大きく変更されているのは今までの項で解説してきたDirectX対応にする為の準備部分だけのはずです。そしてこの部分はDirectX対応にす る限り、全く同じような形でスクリプトを組むこととなります。

« [改造記]メインルーチン | トップページ | [改造記]解剖記のスクリプトを改造しよう »

3.改造記」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/67538/57445621

この記事へのトラックバック一覧です: [改造記]画面描写(es_copy):

« [改造記]メインルーチン | トップページ | [改造記]解剖記のスクリプトを改造しよう »