その13 マップ表示(1)

	;初期化
	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とグラフィックをダウンロード。


その14に行く

目次に戻る