ページ 1 / 1
C++音げー制作にあたって
Posted: 2014年10月10日(金) 16:52
by izayoi_18
C++で音げーを作っていてわからないことがあったので質問します。
キーボードを押したときに効果音を出すためにwhileループの中で監視させる文を書きます。
でも、ループ文なので連打音になってします。回避する方法はありますか?
音を出すために使っている宣言はPlaySoundMem(*******,DX_PLAYTYPE_BACK)です。
while (ScreenFlip() == 0 && ProcessMessage() == 0){
if(CheckHitKey(KEY_INPUT_S) == 1)
{
PlaySoundMem(sound_1,DX_PLAYTYPE_BACK); //連打音になってしまう。
}
}
この文に何とか書き加えて一回ボタンを押したら一回だけ音がなるプログラムが作りたいです。
よろしくお願いします<m(__)m>
Re: C++音げー制作にあたって
Posted: 2014年10月10日(金) 16:58
by Rittai_3D
キーが押された瞬間にフラグを立てて、フラグがたっていれば音を鳴らすような処理にすればよいと思います。
Re: C++音げー制作にあたって
Posted: 2014年10月10日(金) 17:59
by cattail
キーが離されたら音を鳴らすようにすれば、とりあえず早く確認できると思います。
また、ちょっと工夫がいりますが、キーが押されたら音を鳴らして、
離されていないなら、次の音を鳴らさないようにすればいいのではないでしょうか。
Re: C++音げー制作にあたって
Posted: 2014年10月10日(金) 23:21
by みけCAT
3D_3D さんが書きました:キーが押された瞬間にフラグを立てて、フラグがたっていれば音を鳴らすような処理にすればよいと思います。
それならキーが押された瞬間にフラグを立てる代わりに音を鳴らせばいいと思います。
むしろ、擬似コードで書くと
コード:
// 初期化
フラグ = OFF;
// ループ内
if (キーが押されている) {
if (フラグがOFF) 音を鳴らす;
フラグ = ON;
} else {
フラグ = OFF;
}
とするといいと思います。(これは一例です)
Re: C++音げー制作にあたって
Posted: 2014年10月13日(月) 10:34
by amehirune
cattail さんが書きました:キーが離されたら音を鳴らすようにすれば、とりあえず早く確認できると思います。
音ゲーで「離れたら鳴らす」ってのはちょっと不相応な気がします。3D_3DさんやみけCATさんのやり方がいいと思われます。
オフトピック
参考までに。
これは龍神録の応用ですが、こっちの方が、操作に必要なボタンを追加するときに実装しやすいように思えます。
①キーが押されてたら、対応している変数のカウンタ(時間)を増やす。そうでないなら、0に戻す。
②時間が「1」なら、音を鳴らす。
コードを描くのは面倒なので、この程度にしておきますね)ぉ
Re: C++音げー制作にあたって
Posted: 2014年10月14日(火) 16:58
by cattail
離されたときは、やはりだめですよね。ごめんなさい。
プログラムが正常に動くのを確かめるということでは、
作り手さんがまず安心できると思ったものですから。
if(CheckHitKey(KEY_INPUT_S) == 1 && soundnow == 0)
{
PlaySoundMem(sound_1,DX_PLAYTYPE_BACK);
soundnow = 1;
}
とすれば一回だけは正常になりますよね。
PlaySoundで鳴り終っている事がcallbackかなんかで確認できるのでしたら、
そこで、
soundnow = 0;
とすればいいのかな。
それでも音が重複して鳴らせるようになっているのなら、これは必要ないですね。
連打音になってしまう、ということですので、
今のプログラムが1音(1チャンネル)だけしか鳴らせない仕様なら、
離されるまで鳴らしてあげれば、それっぽくなるのでは?
音ゲーというより、オルガンみたいな感じで。
Re: C++音げー制作にあたって
Posted: 2014年10月21日(火) 15:58
by izayoi_18
ミケCATさんのプログラムでやってみましたが、やはり連打音になってしまいました。
私のプログラムが間違っていると思うので、たとえばどのように組めばよいでしょうか。
Re: C++音げー制作にあたって
Posted: 2014年10月21日(火) 16:30
by usao
オフトピック
>たとえばどのように組めばよいでしょうか
それが既に疑似コードで提示されているのだと思うのですが?
Re: C++音げー制作にあたって
Posted: 2014年10月21日(火) 21:12
by みけCAT
izayoi_18 さんが書きました:ミケCATさんのプログラムでやってみましたが、やはり連打音になってしまいました。
まずそのプログラムを貼っていただけた方が答えやすいと思います。
Re: C++音げー制作にあたって
Posted: 2014年10月22日(水) 16:34
by izayoi_18
よく見て間違いを探して直したらできました!
みけCATさん、その他みなさんありがとうございました。