流れる星空を背景に、静止したキャラを表示するのだ

とりあえず早くキャラを動かしてみたいけど、慌てない慌てない。さっき作った流れる星空を背景に、まずは静止したキャラを表示させてみよう。ちなみに用意したキャラはこれ。


あれ?なんで縦向きなの?・・・実は横向きのキャラがうまく描けなかったのだ。だからそれにあわせてスクロール方向も縦方向に変えちゃったという^^;


	SCREEN 0,600,400,1,100,50,600,400
	CLS 4
	RANDOMIZE

;バッファーに星空の絵を描きこみ
	BUFFER 3,600,400,1
	COLOR 0,0,0 : BOXF 0,0,600,400
		REPEAT 1000
		RND X,600 : RND Y,400
		RND R,7 : RR=(R+1)*32-1
		RND G,7 : GG=(G+1)*32-1
		RND B,7 : BB=(B+1)*32-1
		COLOR RR,GG,BB
		PSET X,Y
		LOOP
	BUFFER 4,600,400,1	;星空を保存するための画面を準備

;バッファーに自機の画像を描きこみ
	BUFFER 2,600,400,1
	POS 0,0 : PICLOAD "myship.bmp"
	MX=300 :MY=200		;自機の初期位置を指定

;描画画面の準備
	GSEL 0 : COLOR 0,0,0 : BOXF O,O,600,400
	PALCOPY 3
	POS 0,0 :GCOPY 3,0,0,600,400		;星空を複写
	POS MX,MY :GCOPY 2,0,0,32,32		;自機画像を複写

;メインルーチン
*MAIN
	REPEAT 400
	REDRAW 0
	GOSUB *HAIKEI
	GOSUB *JIKI
	REDRAW 1
	STICK K : IF K=128 : STOP
	AWAIT 16
	LOOP
GOTO *MAIN

;流れる星を表示するためのサブルーチン
*HAIKEI
	GMODE 1,600,400
	GSEL 4
	POS 0,0 : GCOPY 3,0,0,600,400	;現在の画面を保存

	GSEL 3
	POS 0,0 	: GCOPY 4,0,399,600,400
	POS 0,1		: GCOPY 4,0,0,600,399

	GSEL 0
	POS 0,0		: GCOPY 3,0,0,600,400
RETURN

;自機を表示するためのサブルーチン	
*JIKI
	GMODE 2,32,32
	POS MX,MY :GCOPY 2,0,0,32,32
RETURN

自機を表示する座標をわざわざ変数にしてるのは、今後のことを考えて。いずれは動かすわけだから、変数にしておくべきだもんね。今回のには意味ないけど^^;

しっかしだんだん長くなってきたなぁ〜。でもこれだけ長くなっても、新しく出てきた命令は3つだけ。

PICLOAD"(読みこむ画像ファイル名)"
指定した画像を、カレントポジションに描画。

敵とか味方とか背景なんかを外部ファイルから読みこませるのはこれだね。今後活躍しそうな命令^^

GOSUB(ラベル名)
指定したフラグに移動し、RETURNで戻る。

RETURN
移動元のGOSUBへ戻る。

この二つも「REPEAT〜LOOP」と同じように、必ずペアで用いるそうな。いわゆるサブルーチンジャンプって奴だな。このプログラムを最初に実行したとき、いきなり終わっちゃったんで「???」ってなったんだけど、単にRETURNを忘れてただけだったという^^;

今回はウィンドウを3枚も使っちゃったけど、バッファーを宣言するときにウィンドウサイズを大きくしておけば、2枚でできそうね。まぁ8枚使えるわけだから、今のうちはあんまり気にしなくても良いかもしれないけど、そのうち困るときが来そうだから注意しておこう。

さて、いよいよ次は、カーソルキーで自機を動かすプログラムだ!とりあえず最初の目標だったからね。感無量^^

前のページへ戻る 奮闘記のメニューへ戻る 次のページへ進む