ページ 11

(C++)効果音を鳴らすメンバ関数

Posted: 2013年3月11日(月) 08:08
by pope
こんにちは。
C++でゲーム開発に挑戦しています。

現在、ボタンをクリックでトリガを返すクラスを作っています。
ホバー時、トリガ時に効果音を出力したいなと思ったのですが、こういった効果音は通常どの関数で記述されますか?

こちらのC++で記述されているサンプルを参考にさせて頂いてます。
メンバ関数updateでメンバ変数の更新、同じくdrawで描画というスタンスでクラスを作ってみたのですが、
こういった効果音をどの関数で出力すべきか迷っています。
draw関数に組み込んでしまう物なのでしょうか?
それとも新たにsoundなどの関数を作るものでしょうか。

変な質問ですが、折角なのでこういった設計(?)について知っておきたく質問しました。
よろしくお願いします。

Re: (C++)効果音を鳴らすメンバ関数

Posted: 2013年3月11日(月) 11:24
by softya(ソフト屋)
soundの問題だけでなく設計方法を考えて行かないと同じ事で迷うことになると思います。
1)クラス間の結合度は低くする。結合度が高いとメンテナンス性が低下してバグの発生率は増加する。
2)ほとんど同じ機能の関数が多数のクラスに有るとメンテナンス性は低下してバグの発生率は増加する。
3)ファイル名など即値はできるだけ避ける。即値が多いとメンテナンス性は低下してバグの発生率は増加する。
4)資源の管理(画像・音など)は一元化が望ましいが、オブジェクト毎の独立性の高いものは各オブジェクトが管理するほうが良い。
とまず、これだけを考えてみ下さい。

Re: (C++)効果音を鳴らすメンバ関数

Posted: 2013年3月11日(月) 17:29
by ISLe
update関数から呼び出すかdraw関数から呼び出すかという話であれば…。
draw関数は一時停止機能などで再描画のために何回も同じ状態で呼び出される可能性があります。
逆に処理速度の遅いハードでコマ落としのために呼び出されない可能性もあります。
draw関数には副作用のない描画に関するコードのみを書くようにしましょう。

Re: (C++)効果音を鳴らすメンバ関数

Posted: 2013年3月11日(月) 21:37
by pope
softyaさん、ISLeさん、ご回答ありがとうございます。
とても参考になりました。

ひとまず、同クラスのメンバ関数としてdraw関数やupdate関数とは別に関数を用意する事にします。
制作していて他オブジェクトと統合する必要が出てきた場合、効果音を管理するオブジェクトを新たに用意する事にします。