ページ 11

ゲームオーバー処理が出来ない

Posted: 2012年5月20日(日) 01:43
by bright
龍神録において残機が0になった場合ゲームオーバーと表示させてタイトルに戻るプログラムを作ったのですが、音楽が再生されたままで再度ゲームスタートすると死んだ続きからになってしまいます。

char.cpp

コード:

    if(ch.cnt==0 && ch.flag==2){//今の瞬間死んだら
		enter_char_item();//キャラのアイテム登録(39章)
		ch.num--;//残機を減らす
		if(ch.num==0){
			gameover();
		}
		ch.x=FMX/2;//座標セット
        ch.y=FMY+30;
        ch.mutekicnt++;//無敵状態へ
    }

コード:

void gameover (){
		DrawGraph( 0, 0, Handle6, TRUE );
	if (CheckHitKey( KEY_INPUT_RETURN ) == 1){
		func_state=4;
	}
}

Re: ゲームオーバー処理が出来ない

Posted: 2012年5月20日(日) 02:28
by jay
この手の処理をするには "初期化" というものが重要になってきます

初期化、つまり最初の状態に戻すことですね。
今回の場合は初期化がおこなわれていない、つまり "残機が0になっている" という情報が残されているから
もう一度始まった瞬間にまたゲームオーバー処理に入ってしまうのでしょう

タイトル画面に戻って、もう一度始めるときに必要な全ての情報を初期化してあげてください

自機のステータス(座標やパワーや残機など全て)、敵の情報、ステージカウント、ボスの情報
などなど、必要な物は全て "最初の状態" に戻してあげてください
そうすれば上手くいく…筈です


BGMに関しては単純にBGMを止める処理を追加してあげてください
DXライブラリのリファレンスの音楽再生関数辺りに該当の関数があると思います