;初期化
alloc map,200
map= "00000000"
map=map+"00010000"
map=map+"00111111"
map=map+"00011111"
map=map+"00111111"
map=map+"00011111"
map=map+"01001111"
map=map+"01111111"
;グラフィックの読み込み
buffer 1,100,100,1
picload "kusa.bmp"
buffer 2,100,100,1
picload "mizu.bmp"
;画面の切り替え
gsel 0
screen 0,600,480,1
cls 4
gosub *allmap
stop
*allmap
repeat 8
cty=cnt
repeat 8
peek code,map,i
i++
if code='0':pb=1
if code='1':pb=2
pos cnt*32,cty*32
gcopy pb,0,0,32,32
loop
loop
await 1
return
|
単純なマップ表示スクリプトです。
32x32ドットのキャラクターを使って、8x8のマップを表示するだけです。
![]()
kusa.bmp 草地です。
mizu.bmp 水面です。
マップは文字列mapの中に格納され、表示ルーチン*allmapで表示します。
文字列mapの参照にはpeek命令を使っています。
もし、文字列が0だったら、ID=1のbufferからgcopyするようになっています。
この時、0を囲むのに、"ではなく'を使っている点に注目してください。
codeの内容が、文字としての0かどうかを調べています。
"を使うと、1つの文字ではなく文字列として判定してしまいます。
また、"も'つけずに比較した場合は、数値として判定されます。
今回はマップの入力を簡単にするために文字を使っています。
map.asとグラフィックをダウンロード。