合計 昨日 今日

DXライブラリで音が正しくでない

フォーラムルール
フォーラムルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Name: たいがだよお
[URL]
Date: 2017年12月07日(木) 21:21
No: 1
(OFFLINE)

 DXライブラリで音が正しくでない

ゲームを作りたいのですが音が正しくでません。
それと、メッセージが表示されているときにスペースキーを押すとそのメッセージが消え、新しいメッセージがでるようにしたいのですがこれで合ってますか・・?一応動くは動くんですけど。
いい方法があれば教えてください。



コード[C++]: 全て選択
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include "DxLib.h"
 
int Key[256]; // キーが押されているフレーム数を格納する
 
// キーの入力状態を更新する
int gpUpdateKey(){
        char tmpKey[256]; // 現在のキーの入力状態を格納する
        GetHitKeyStateAll( tmpKey ); // 全てのキーの入力状態を得る
        for( int i=0; i<256; i++ ){
                if( tmpKey[i] != 0 ){ // i番のキーコードに対応するキーが押されていたら
                        Key[i]++;     // 加算
                } else {              // 押されていなければ
                        Key[i] = 0;   // 0にする
                }
        }
        return 0;
}
 
#define PI 3.141592654
 
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
        ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定
        int white = GetColor( 255, 255, 255 ); //白色文章の取得
        int main;     // 画像格納用ハンドル
        int black;     // 画像格納用ハンドル
        int door, Count=0;
        door = LoadSoundMem("サウンド/扉.ogg"); // サウンド/扉.oggをロードし、識別番号をHandleに格納
        int bgm;
        bgm = LoadSoundMem("サウンド/ダンジョン.ogg"); // サウンド/ダンジョン.oggをロードし、識別番号を格納
        int foot;
        foot = LoadSoundMem("サウンド/足音.ogg"); // サウンド/足音.oggをロードし、識別番号を格納
        int OK;
        OK = LoadSoundMem("サウンド/OK.ogg"); // サウンド/OK.oggをロードし、識別番号を格納
        int wordX = 12 ; //文章のX軸
        int wordY = 370; //文章のY軸
        int nextword = 1; //次の文章に進む
        int HP = 100;
        int floor = 1;
        int gord = 0;
 
  PlaySoundMem( door, DX_PLAYTYPE_NORMAL ); // 効果音を再生する
 
        main = LoadGraph( "画像/メイン.png" ); // 画像のロード
        black = LoadGraph( "画像/移動.png" ); // 画像のロード
 
        // while(裏画面を表画面に反映, メッセージ処理, 画面クリア)
        while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 && gpUpdateKey()==0 ){
                              DrawRotaGraph( 318, 240, 0.58,  0.0, main, TRUE ); //画像の描画
 
  PlaySoundMem( bgm, DX_PLAYTYPE_LOOP ); // 効果音を再生する
               
                if( Key[KEY_INPUT_SPACE] == 1)
                        {
                    // スペースキーが押された瞬間なら
                    nextword ++;
                        }
 
                DrawFormatString( 525, wordY, white, "HP:%d",HP); // 文字を描画する
                DrawFormatString( 525, wordY + 25, white, "%dF",floor); // 文字を描画する
                DrawFormatString( 525, wordY + 50, white, "%dgold",gord); // 文字を描画する
                if(nextword == 1)
                    {
                DrawFormatString( wordX, wordY, white, "運命の洞窟へようこそ..."); // 文字を描画する
                    }
 
                    else if(nextword == 2)
                        {
                        DrawFormatString( wordX , wordY, white, "あなたは一攫千金を夢見るトレジャーハンターです。"); // 文字を描画する
                        DrawFormatString( wordX , wordY+25, white, "大金を手にし、生きてここから脱出しましょう。"); // 文字を描画する
                    }
                    else if(nextword == 3)
                        {
                        DrawFormatString( wordX , wordY+50, white, "探索(スペースキー)"); // 文字を描画する
                        }
                    else if(nextword == 4)
                        {
                        PlaySoundMem( foot, DX_PLAYTYPE_NORMAL ); // 効果音を再生する
                        }
                    else if(nextword == 5)
                        {
                        DrawFormatString( wordX, wordY, white, "何もない"); // 文字を描画する
                        }
 
 
           
    }
 
    DxLib_End(); // DXライブラリ終了処理
    return 0;
}

Name: みけCAT
[URL]
伝説なるハッカー(685,415 ポイント)
Date: 2017年12月07日(木) 22:12
No: 2
(ONLINE)

 Re: DXライブラリで音が正しくでない

たいがだよお さんが書きました:ゲームを作りたいのですが音が正しくでません。

毎フレームループ再生を開始しているのが気になりますが、具体的に「どうしたいのに」「どうなってしまう」のですか?

たいがだよお さんが書きました:それと、メッセージが表示されているときにスペースキーを押すとそのメッセージが消え、新しいメッセージがでるようにしたいのですがこれで合ってますか・・?

ループ中で、再生終了まで処理を止めるDX_PLAYTYPE_NORMALを使うのは、合っているかどうか疑問を感じますね。

たいがだよお さんが書きました:いい方法があれば教えてください。

このあとどう拡張したいかなどにもよると思いますが、表示するメッセージを配列に入れ、添字にnextwordを使う、などの方法が考えられます。

Offtopic :
面白いインデントですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)


Return to C言語何でも質問掲示板

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[11人]