質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.34%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

Q&A

解決済

1回答

184閲覧

ゲーム(dxlibで作成中)を3回以上リスタートするとカウントダウンの音が鳴らなくなる

zyuuiti

総合スコア1

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

0グッド

0クリップ

投稿2025/01/12 07:17

編集2025/01/12 09:38

実現したいこと

ゲーム中のカウントダウンの音が問題なくなるようにしたい

発生している問題・分からないこと

ゲームのリスタートを3回以上するとカウントダウンの音が鳴らなくなる。ほかの音は問題なく鳴るし、リスタートが2回までならカウントダウンの音は問題なく鳴ります。CheckSoundMemで確認するとなっている状態になっていますが実際には音がなりません

該当のソースコード

カウントダウン部分のみのコード↓(フォームの文字数制限が足りないのでメインのコードはのせれませんでした) if (countDown) { StopSoundMem(suctionSound); // カウントダウン中は吸い込み効果音を止める StopSoundMem(succeedSuctionSound); //カウントダウン中は吸い込み成功効果音を止める PlaySoundMem(countDownSound, DX_PLAYTYPE_BACK, FALSE); //カウントダウン音 DrawBox(0, 0, initialWIDTH, HEIGHT, GetColor(0, 0, 0), TRUE); //前画面を隠す ////音の確認用 //if (CheckSoundMem(countDownSound) == 1) //{ // DrawString(0, 0, "なってるよ", GetColor(255, 255, 255)); //} //else //{ // DrawString(0, 0, "なってないよ", GetColor(255, 255, 255)); //} DrawStringToHandle(initialWIDTH / 2 - 100, HEIGHT / 3, "3", GetColor(255, 255, 0), FontSize300); WaitTimer(1000); DrawBox(0, 0, initialWIDTH, HEIGHT, GetColor(0, 0, 0), TRUE); DrawStringToHandle(initialWIDTH / 2 - 100, HEIGHT / 3, "2", GetColor(255, 255, 0), FontSize300); WaitTimer(1000); DrawBox(0, 0, initialWIDTH, HEIGHT, GetColor(0, 0, 0), TRUE); DrawStringToHandle(initialWIDTH / 2 - 100, HEIGHT / 3, "1", GetColor(255, 255, 0), FontSize300); WaitTimer(1000); DrawBox(0, 0, initialWIDTH, HEIGHT, GetColor(0, 0, 0), TRUE); DrawStringToHandle(initialWIDTH / 4, HEIGHT / 3, "STRAT!", GetColor(255, 255, 0), FontSize300); WaitTimer(500); remainingBullet = 30; //残弾数を戻す //プレイヤーを初期座標に戻す player1.x = 100; player1.y = 100; player2.x = 100; player2.y = 300; countDown = false; }

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

ネットで調べたが同じような現象は確認できなかった
コードをコメントアウトやブレイクポイント使って原因を探ってみたが分からなかった
先輩にコードを見てもらったが原因は分からなかった
ゲーム中のプレイヤーや敵の動きが関係あるか調べたが特に解決はしなかった
音や画像の読み込みでメモリが不足している可能性を調べたが解決はしなかった
上記にもあるがCheckSoundMemで音がなっているか確認したら音はなっている状態だった

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2025/01/12 08:23

> カウントダウン部分のみのコード↓(フォームの文字数制限が足りないのでメインのコードはのせれませんでした) 必ずしもコードの全部を載せなくても良いと思うのですが、それにしても抜粋して載せたコードが読みづらいので、せめてちゃんと整形して、投稿時にプレビューで確認しましょう。読みづらいと質問がスルーされることもあります。
zyuuiti

2025/01/12 09:41

外出しており返信が遅れてしまいました。すみません。こちらのミスでコードをコピペしたときにずれが発生していたようです。修正したのでもう一で見ていただけると嬉しいです。
lehshell

2025/01/12 10:18

カウントダウンの音 を再生中に中断はしていますか? 気になった点は PlaySoundMem(countDownSound, DX_PLAYTYPE_BACK, FALSE); と第3引数を FALSE にしている点です。 カウントダウンの音 が最後まで再生された後に再度そのコードを実行しても音が再生されることはありません。 2回目が鳴るのは、中断した音を再度このコードを実行している?のかも
zyuuiti

2025/01/12 11:04

コメントありがとうございます。第三引数をfalseからtrueに変えたところ問題が解決しました! ベストアンサーに選びたいので同じ内容を回答欄に投稿いただけますでしょうか?
guest

回答1

0

ベストアンサー

PlaySoundMem(countDownSound, DX_PLAYTYPE_BACK, FALSE);
こちらの第3引数は
TopPositionFlag : 再生位置を音データの先頭に移動するかどうか
( TRUE:移動する(デフォルト) FALSE:移動しない )
というものです。
FALSE にした場合は、カウントダウンの音 が最後まで再生された後に、再度そのコードを実行しても音が再生されることはありません。
PlaySoundMem(countDownSound, DX_PLAYTYPE_BACK);
とするか
PlaySoundMem(countDownSound, DX_PLAYTYPE_BACK, TRUE);
としてください。

なお Web 公開されている関数リファレンス
https://dxlib.xsrv.jp/function/dxfunc_sound.html
では、引数が2つしかなく DxLib に同梱されている HELP を見ないと第3引数はわかりません。

投稿2025/01/13 00:31

lehshell

総合スコア1167

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.34%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問