龍神録 ポーズ中の効果音について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
初心者

龍神録 ポーズ中の効果音について

#1

投稿記事 by 初心者 » 15年前

こんにちは。龍神録50章をいじってます。
今度は支館様の一時停止のときにどうしても解決出来ない問題があったので
質問させていただきました。
一時停止の判定を押した瞬間に
StopSoundMem(area.bgm.handle); //音楽を止める
で音楽を止め
一時停止を解除した瞬間に
PlaySoundMem( area.bgm.handle , DX_PLAYTYPE_LOOP , FALSE ); //音楽を鳴らす
で音楽を開始するようにしてます。
この一時停止中に選択肢を選んでいるときに
効果音を鳴らしたいのですが、鳴りません。
多分StopSoundMemで音楽を止めてるから
効果音が鳴らなくなってしまっているのだと考えているのですが、
どうしたら、メインBGMはストップ&効果音が鳴るようになるでしょうか?
アドバイスお願いします

Dixq (管理人)

Re:龍神録 ポーズ中の効果音について

#2

投稿記事 by Dixq (管理人) » 15年前

ハンドルの違う音楽データには影響されないと思いますよ。
何か他の原因じゃないですか?
実はファイルが読み込めてないとか

初心者

Re:龍神録 ポーズ中の効果音について

#3

投稿記事 by 初心者 » 15年前

すみません。まったく原因が分からないので、
control.cpp内のどこが原因なのか見てもらえないでしょうか?
ついでに、一時停止中にZボタンを押すと、メイン画面内が真っ暗になるバグも発生してて
参ってます・・・

void MenuDraw(){
    //背景を暗く
    SetDrawBlendMode( DX_BLENDMODE_ALPHA , 80 );
    DrawBox( FX , FY , FX+FMX , FY+FMY , color[1] , TRUE );
    SetDrawBlendMode( DX_BLENDMODE_NOBLEND , 0 );

    //タイトル表示
    if(game_pause==0){        //一時停止を解除する
        DrawBox(FX+35,FY+310,FX+225,FY+330,color[0],TRUE);    //四角形(白)
    }
    if(game_pause==1){        //タイトルへ戻る
        DrawBox(FX+35,FY+340,FX+225,FY+360,color[0],TRUE);    //四角形(白)
    }
    if(game_pause==2){        //リプレイを保存して終了
        DrawBox(FX+35,FY+370,FX+225,FY+390,color[0],TRUE);    //四角形(白)
    }
    if(game_pause==3){        //最初からやり直す
        DrawBox(FX+35,FY+400,FX+225,FY+420,color[0],TRUE);    //四角形(白)
    }

    
    DrawGraph(FX+10,FY+260,img_board[16],TRUE);                    //一時停止用

    //キャプチャした画像の開放
    if( CheckStatePad(configpad.shot) == 1 ){
        DeleteGraph( img_screen );
    }
}

//一時停止
void game_stop(){
    MenuDraw();
    switch(game_pause){
        case 0:        //一時停止を解除する
            if(CheckStateKey(KEY_INPUT_UP)==1){
                se_flag[42]=1;                //カーソル音
                game_pause =3;                //表示を3にする(最初からやり直すへ移動)
            }
            if(CheckStateKey(KEY_INPUT_DOWN)==1){
                game_pause =1;                //表示を1にする(タイトルへ戻るへ移動)
                se_flag[42]=1;                //カーソル音
            }
            if(CheckStatePad(configpad.shot)==1){
                if(ch.story_flag == 0){        //ゲームメインなら
                    PlaySoundMem( area.bgm.handle , DX_PLAYTYPE_LOOP , FALSE );        //音楽を鳴らす
                    func_state = 100;        //メインに戻る
                }
                if(ch.story_flag == 1){        //ノベル中なら
                    PlaySoundMem( area.bgm.handle , DX_PLAYTYPE_LOOP , FALSE );        //音楽を鳴らす
                    func_state = 103;        //ノベルに戻る
                }
                se_flag[44]=1;                //決定音
            }
            break;
        case 1:        //タイトルへ戻る
            if(CheckStateKey(KEY_INPUT_UP)==1){
                game_pause =0;                //表示を0にする(一時停止を解除するへ移動)
                se_flag[42]=1;                //カーソル音
            }
            if(CheckStateKey(KEY_INPUT_DOWN)==1){
                game_pause =2;                //表示を2にする(リプレイを保存して終了へ移動)
                se_flag[42]=1;                //カーソル音
            }
            if(CheckStatePad(configpad.shot)==1){
                func_state = 3;                //タイトル前の初期化へ
                se_flag[44]=1;                //決定音
            }
            break;
        case 2:        //リプレイを保存して終了
            if(CheckStateKey(KEY_INPUT_UP)==1){
                game_pause =1;                //表示を1にする(タイトルへ戻るへ移動)
                se_flag[42]=1;                //カーソル音
            }
            if(CheckStateKey(KEY_INPUT_DOWN)==1){
                game_pause =3;                //表示を3にする(最初からやり直すへ移動)
                se_flag[42]=1;                //カーソル音
            }
            //if(CheckStatePad(configpad.shot)==1){
            //    se_flag[43]=1;                //選択できない音
            //}
            break;
        case 3:        //最初からやり直す
            if(CheckStateKey(KEY_INPUT_UP)==1){
                game_pause =2;                //表示を2にする(リプレイを保存して終了へ移動)
                se_flag[42]=1;                //カーソル音
            }
            if(CheckStateKey(KEY_INPUT_DOWN)==1){
                game_pause =0;                //表示を0にする(一時停止を解除するへ移動)
                se_flag[42]=1;                //カーソル音
            }
            if(CheckStatePad(configpad.shot)==1){
                func_state = 99;            //ゲーム初期化
                delete_bgm();                //BGM初期化
                se_flag[44]=1;                //決定音
            }
            break;
        default:
            printfDx("不明なgame_pause\n");
            break;
    }
}

初心者

Re:龍神録 ポーズ中の効果音について

#4

投稿記事 by 初心者 » 15年前

続き

//コンテニューは省略

//制御中の処理に応じた対応へ
void control_main(){
    switch(func_state){
        case 100:                                //メインゲーム
            //Escが押されたかつ、ボードがフェードインしてないかつ、クリア処理を行ってなければ
            if(CheckStateKey(KEY_INPUT_ESCAPE)==1&&board.flag==1&&clear.flag==0){
                //ここで画面をキャプチャ(スクリーンショットを撮る)
                img_screen = MakeGraph( 640 , 480 ) ;
                GetDrawScreenGraph( 0 , 0 , 640 , 480 , img_screen ) ;
                ch.story_flag =  0;
                ch.pause_cnt  =  0;
                game_pause    =  0;
                StopSoundMem(area.bgm.handle);    //音楽を止める
                func_state    =101;                //一時停止処理へ
            }
            if( ch.num < 0){                    //残機0なら
                //ここで画面をキャプチャ(スクリーンショットを撮る)
                img_screen = MakeGraph( 640 , 480 ) ;
                GetDrawScreenGraph( 0 , 0 ,    640 , 480 , img_screen ) ;
                ch.story_flag =  0;
                ch.pause_cnt  =  0;
                StopSoundMem(area.bgm.handle);    //音楽を止める
                func_state    =102;                //コンティニューへ
            }
            break;
        case 101:                                //一時停止
            game_stop();
            if(CheckStateKey(KEY_INPUT_ESCAPE)==1){
                if(ch.story_flag == 0){            //ゲームメインなら
                    PlaySoundMem( area.bgm.handle , DX_PLAYTYPE_LOOP , FALSE );        //音楽を鳴らす
                    func_state = 100;            //メインに戻る
                    DeleteGraph( img_screen );    //キャプチャ画像の開放
                }
                if(ch.story_flag == 1){            //ノベル中なら
                    PlaySoundMem( area.bgm.handle , DX_PLAYTYPE_LOOP , FALSE );        //音楽を鳴らす
                    func_state = 103;            //ノベルに戻る
                    DeleteGraph( img_screen );    //キャプチャ画像の開放
                }
            }
            break;
        case 102:                                //コンティニュー
            game_continu();
            break;
        case 103:                                //サウンドノベル
            if(CheckStateKey(KEY_INPUT_ESCAPE)==1){
                img_screen = MakeGraph( 640 , 480 ) ;
                GetDrawScreenGraph( 0 , 0 , 640 , 480 , img_screen ) ;
                ch.story_flag = 1;
                StopSoundMem(area.bgm.handle);    //音楽を止める
                func_state = 101;                //一時停止処理へ
            }
            if( ch.num < 0){                    //残機0なら
                img_screen = MakeGraph( 640 , 480 ) ;
                GetDrawScreenGraph( 0 , 0 ,    640 , 480 , img_screen ) ;
                ch.story_flag = 1;
                StopSoundMem(area.bgm.handle);    //音楽を止める
                func_state = 102;                //コンティニューへ
            }
        default:
            break;
    }
}

初心者

Re:龍神録 ポーズ中の効果音について

#5

投稿記事 by 初心者 » 15年前

あの・・よろしくお願いします

ひよこ

Re:龍神録 ポーズ中の効果音について

#6

投稿記事 by ひよこ » 15年前

まさか1時停止のところにbgm_main();が抜けてるって理由ですかね?

ひよこ

Re:龍神録 ポーズ中の効果音について

#7

投稿記事 by ひよこ » 15年前

上のはまちがいです。se_flag[42]に音楽が読み込まれていますか?
music_playは通っていますか?

Dixq (管理人)

Re:龍神録 ポーズ中の効果音について

#8

投稿記事 by Dixq (管理人) » 15年前

フラグは立てていると思いますが、たてたフラグのサウンドを鳴らす処理はしていますか?

初心者

Re:龍神録 ポーズ中の効果音について

#9

投稿記事 by 初心者 » 15年前

>>ひよこさん
>se_flag[42]に音楽が読み込まれていますか? 
>music_playは通っていますか?
読み込まれてます。また、通ってます。
念のため、違う個所で
例えばse_flag[42]=1;//カーソル音
を鳴らしてみたところ、ちゃんと鳴りました。
>>Dixq (管理人)さん
>フラグは立てていると思いますが、たてたフラグのサウンドを鳴らす処理はしていますか?
music.cpp内の
void music_play(){
    int i;
    for(i=0;i<SE_MAX;i++){
        if(se_flag==1){
            if(CheckSoundMem(sound_se)!=0){
                if(i==8)continue;
                StopSoundMem(sound_se);
            }
            PlaySoundMem(sound_se,DX_PLAYTYPE_BACK);
        }
    }
}
で処理をしてるので、鳴ります。

プログラムのほうは問題ないのでしょうか?

Dixq (管理人)

Re:龍神録 ポーズ中の効果音について

#10

投稿記事 by Dixq (管理人) » 15年前

呼び出し元でこの関数が呼び出されていないという事はないですか?

一切合財コンパイル出来る形でアップローダなどにアップロードしてもらった方がよさそうな気がしますが・・。

初心者

Re:龍神録 ポーズ中の効果音について

#11

投稿記事 by 初心者 » 15年前

>呼び出し元でこの関数が呼び出されていないという事はないですか?

というのはどういったことなのでしょうか?

通りすがり

Re:龍神録 ポーズ中の効果音について

#12

投稿記事 by 通りすがり » 15年前

>メイン画面内が真っ暗になるバグも発生してて
>参ってます・・・

多分これが原因?
//キャプチャした画像の開放
if( CheckStatePad(configpad.shot) == 1 ){
DeleteGraph( img_screen );
}

閉鎖

“C言語何でも質問掲示板” へ戻る