[目次へ][前へ][次へ][表紙へ]
 シューティングゲームを作ろう その3

 3.タイトル画面

	;
	;タイトル画面
	;
*Title_Screen
	menu_no = 0
*Title_Loop
	await 16
	gosub *Input_Key
	if menu_no == 1 & pre_upkey == 0 & upkey == 1 { menu_no = 0 }
	if menu_no == 0 & pre_downkey == 0 & downkey == 1 { menu_no = 1 }
	if pre_zkey == 0 & zkey == 1 {
		if menu_no == 0 { goto *Game_Start }
		if menu_no == 1 {
			dsend
			diend
			end
		}
	}
	redraw 0
	gosub *Clear_Screen
	color 0, 255, 255
	pos 80, 128
	font "Times New Roman", 72
	mes "THE SHOOTER"
	msx = 288 : msy = 320
	message = "START"
	gosub *Write_Message
	msx = 288 : msy = 352
	message = "EXIT"
	gosub *Write_Message
	gdx = 272 : gdy = 320 + menu_no * 32
	wid = 3
	div_no = 0
	gosub *Graphic_Draw
	redraw 1
	goto *Title_Loop

 メニュー項目の番号を、STARTが0番、EXITが1番とします。現在カーソル(三角形のマーク)があるメニューの番号をmenu_noに入れます。
 カーソルがEXITにある状態で上を押すとmenu_noが0に、STARTにある状態で下を押すとmenu_noが1になります。
 Zキーまたはボタン1が押された時に、カーソルがSTARTにあれば「ゲームスタート時の初期設定」に飛びます。EXITにあればプログラムを終了します。

 "THE SHOOTER"、"START"、"EXIT"を書き、menu_noに対応する位置にカーソルを描きます。
 今まではタイトル画面を1回だけ描いて、あとはZキーが押されるのを待つだけだったのですが、今回はそうはいきません。カーソルの位置が変わるからです。ではカーソルだけ消して描き直せばいいかというとそんなことはせず、毎回全部消して描き直します。その方がプログラムがシンプルになります。

 4.ゲームスタート時の初期設定
	;
	;ゲームスタート時の初期設定
	;
*Game_Start
	score = 0
	stage_no = 1
	interval = 128
	n_myship = 3
	myship_state = 1	;1:通常 2:爆発中 3:復活中

 stage_noは今ステージいくつかを入れます。初期値は1面です。
 interval(間隔)は、何ドットスクロールするだびに敵を出すかを表します。これを減らしていくと、敵がどんどん出て来るようになります。
 n_myshipは残機数です。
 myship_stateは自機の状態です。1なら通常の状態、2なら爆発中、3なら復活中を表します。自機が爆発した後、残機が残っていればまた自機を出しますが、この時しばらく点滅させて、点滅中は無敵(敵や敵の弾に当たらない)とします。この状態を「復活中」と呼ぶことにします。これがなく、爆発後すぐ「通常」にすると、復活時に自機の位置に敵や敵の弾があったら、連続してやられてしまいます。

 5.ステージスタート時の初期設定
	;
	;ステージスタート時の初期設定
	;
*Stage_Start
	gosub *Clear_Screen
	msx = 296 : msy = 232
	message = "STAGE " + stage_no
	gosub *Write_Message
	wait 200
	myship_x = (GWIDTH - 32) / 2
	myship_y = GHEIGHT - 64
	shot_f = 0
	for i, 0, ENEMAX
		enemy_state(i) = 0
	next
	for i, 0, ESHOTMAX
		eshot_f(i) = 0
	next
	scroll_cnt = 0
	mci "play bgm from 0"

 "STAGE 1"や"STAGE 2"といったステージ番号を表示し、2秒待ちます。
 自機の座標をmyship_x、myship_yに入れます。
 shot_fは自機の弾の存在フラグで、最初は存在しないので0を入れます。
 ステージスタート時には敵も敵の弾もまだ存在しないので、enemy_state、eshot_fをすべて0にします。
 scroll_cntはステージが始まってから何ドットスクロールしたかを表します。ステージスタート時には1ドットもスクロールしていないので0を入れます。
 ステージスタート時に音楽を流します。


[目次へ][前へ][次へ][表紙へ] inserted by FC2 system