画像+音
Re:画像+音
回答有難う御座います。
SetGraphMode( 1479 , 600 , 32 ) ;
をif文の前に持ってくると言うのは、
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1;
の前のことですか?
前に持ってきましたが、一瞬で消えてしまいます。
ただ今の状態は、ウィンドーモードのはずなのに、全面モードみたいに、上の罰点などがある、バーが在りません。でも全面には、成っていません。これも一つの問題ですが、マイナーな問題だと思いましたので、気にしていませんでした。もしかしたらこれが原因ですか?
「audio.cpp」と「graph.cpp」は同じプロジェクトに在ります。
説明が不十分ですみませんでした。
WinMainを一個にするには、何処の何を改良るれば良いのですか?
>グラボの情報と共に管理人さん向けに質問すると良いです。
どう言う意味ですか?
メールを管理人さんに、する事ですか?
>画像読んでません。
と言うのは、画像が出てこないと言うことですか?
phは、でています...
回答よろしくお願いします。
少し変えた、graphic.cppを添付します。
SetGraphMode( 1479 , 600 , 32 ) ;
をif文の前に持ってくると言うのは、
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1;
の前のことですか?
前に持ってきましたが、一瞬で消えてしまいます。
ただ今の状態は、ウィンドーモードのはずなのに、全面モードみたいに、上の罰点などがある、バーが在りません。でも全面には、成っていません。これも一つの問題ですが、マイナーな問題だと思いましたので、気にしていませんでした。もしかしたらこれが原因ですか?
「audio.cpp」と「graph.cpp」は同じプロジェクトに在ります。
説明が不十分ですみませんでした。
WinMainを一個にするには、何処の何を改良るれば良いのですか?
>グラボの情報と共に管理人さん向けに質問すると良いです。
どう言う意味ですか?
メールを管理人さんに、する事ですか?
>画像読んでません。
と言うのは、画像が出てこないと言うことですか?
phは、でています...
回答よろしくお願いします。
少し変えた、graphic.cppを添付します。
Re:画像+音
回答有難う御座います。
一個にまとめたのですがエラーが...
エラー E2034 C:\MyC\piano2\audio.cpp 105: 'char *' 型は 'int *' 型に変換できない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2342 C:\MyC\piano2\audio.cpp 105: パラメータ 'KeyStateBuf' は int * 型として定義されているので char * は渡せない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
charをintに変えると今度はまた別の問題が...
エラー E2034 C:\MyC\piano2\audio.cpp 296: 'int *' 型は 'char *' 型に変換できない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2342 C:\MyC\piano2\audio.cpp 296: パラメータ 'KeyStateBuf' は char * 型として定義されているので int * は渡せない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
どうすればよいのでしょうか。
回答よろしくお願いします
一個にまとめたのですがエラーが...
エラー E2034 C:\MyC\piano2\audio.cpp 105: 'char *' 型は 'int *' 型に変換できない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2342 C:\MyC\piano2\audio.cpp 105: パラメータ 'KeyStateBuf' は int * 型として定義されているので char * は渡せない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
charをintに変えると今度はまた別の問題が...
エラー E2034 C:\MyC\piano2\audio.cpp 296: 'int *' 型は 'char *' 型に変換できない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
エラー E2342 C:\MyC\piano2\audio.cpp 296: パラメータ 'KeyStateBuf' は char * 型として定義されているので int * は渡せない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) )
どうすればよいのでしょうか。
回答よろしくお願いします
Re:画像+音
1個にまとめたということですが
105行目ではGetHitKeyStateAll_2(KeyBuf)
296行目ではGetHitKeyStateAll(KeyBuf)
と同じ変数でGetHitKeyStateAllとGetHitKeyStateAll_2が使われています。
GetHitKeyStateAllはchar型の配列、GetHitKeyStateAll_2はint型の配列を使用しなければならないので、
KeyBufの型を変えてもどちらかでエラーが発生します。
あと現在while文が2つあり、上の方は画像が表示されず音だけが鳴り、エスケープキーを押した後下の方で画像だけが表示されるという風になっています。
やはり分けた方が良いというのは、kazuoniさんが書かれているようなことだと思いますので、
音を鳴らす関数、画像を表示する関数に分けて、1つのwhile文でそれぞれの関数を呼ぶようにすればいいのではないでしょうか?
105行目ではGetHitKeyStateAll_2(KeyBuf)
296行目ではGetHitKeyStateAll(KeyBuf)
と同じ変数でGetHitKeyStateAllとGetHitKeyStateAll_2が使われています。
GetHitKeyStateAllはchar型の配列、GetHitKeyStateAll_2はint型の配列を使用しなければならないので、
KeyBufの型を変えてもどちらかでエラーが発生します。
あと現在while文が2つあり、上の方は画像が表示されず音だけが鳴り、エスケープキーを押した後下の方で画像だけが表示されるという風になっています。
やはり分けた方が良いというのは、kazuoniさんが書かれているようなことだと思いますので、
音を鳴らす関数、画像を表示する関数に分けて、1つのwhile文でそれぞれの関数を呼ぶようにすればいいのではないでしょうか?
Re:画像+音
色々と混乱されているみたいですが、とりあえずファイルを分けるのは後回しにして1つのファイルにまとめるのが良いかと思います。
まとめる場合は、2つのソースの同じところは捨てて違う部分だけを移植します。ソースを見た感じからAudio.cppをGraphic.cppに統合するのが良いかと思います。
その場合、whileループ前、中、後に分けてそれぞれ合成してください。つまりwhileループの中身はwhileループの中身と合成する必要があります。
KeyStateBufの問題については、KeyStateBufをKeyStateBuf1とKeyStateBuf2に分けてはどうでしょうか?
GetHitKeyStateAll_2にはKeyStateBuf2を使い、GetHitKeyStateAllにはKeyStateBuf1を使います。
その他にも直したいところは沢山あるのですが、これ以上言っても混乱されると思いますのでこれまでとしておきます。
ちゃんとしたプログラムにしたい場合は、Cの関数、ファイル分割、モジュール化の手法、データ構造、アルゴリズムの勉強をされる事をお勧めします。特にif文が大量に羅列している部分は、テーブル化したらものすごくすっきりしますよ。何事も基本を疎かにしては成り立ちません。
>あとずいぶん前に質問した事なのですが、なぜフルスクリーンモードになってしまうのですか?
この件については、うまくウィンドウモードになるはずですがとしか言えません。
SetGraphMode( 1479 , 600 , 32 ) ;
と言うやたら横にデカイ画面サイズが関係するのかも知れませんので、サイズを変えるとか色々実験してみてください。
まとめる場合は、2つのソースの同じところは捨てて違う部分だけを移植します。ソースを見た感じからAudio.cppをGraphic.cppに統合するのが良いかと思います。
その場合、whileループ前、中、後に分けてそれぞれ合成してください。つまりwhileループの中身はwhileループの中身と合成する必要があります。
KeyStateBufの問題については、KeyStateBufをKeyStateBuf1とKeyStateBuf2に分けてはどうでしょうか?
GetHitKeyStateAll_2にはKeyStateBuf2を使い、GetHitKeyStateAllにはKeyStateBuf1を使います。
その他にも直したいところは沢山あるのですが、これ以上言っても混乱されると思いますのでこれまでとしておきます。
ちゃんとしたプログラムにしたい場合は、Cの関数、ファイル分割、モジュール化の手法、データ構造、アルゴリズムの勉強をされる事をお勧めします。特にif文が大量に羅列している部分は、テーブル化したらものすごくすっきりしますよ。何事も基本を疎かにしては成り立ちません。
>あとずいぶん前に質問した事なのですが、なぜフルスクリーンモードになってしまうのですか?
この件については、うまくウィンドウモードになるはずですがとしか言えません。
SetGraphMode( 1479 , 600 , 32 ) ;
と言うやたら横にデカイ画面サイズが関係するのかも知れませんので、サイズを変えるとか色々実験してみてください。
Re:画像+音
まず、ソースの問題からwhileループ中にScreenFlip()が2回出てきますが1つしか要りません。
各関数の意味と言うか役目を調べてなぜ必要か理解するようにしてくださいね。
>DrawBox(0, 0, 1470, 600, 00000, TRUE);を消したら、ウィンドーモードに成りました。ですが、画像を置いていない所は、透明に成ってしまっています。
このDrawBox()の意味は理解されていますか?背景をクリアするために存在します。
なので、消したら透明になるのは当たり前なんですよ。
で、DrawBox(0, 0, 740, 600, 00000, TRUE);
と書いたらどうですか?ウィンドウモードで半分だけクリアされますでしょうか?
もしOKなら、
DrawBox(740, 0, 740, 600, 00000, TRUE);
を付け加えてみてください。
これでもウィンドウモードでしょうか?実験をお願いします。
前から疑問なんですが、お使いのパソコンのデスクトップは横幅が1480ドット以上あるんでしょうか?
いや、あるなら問題ないです。ないなら、それが問題なのではと思います。
>それと、ウィンドーモードの罰点を押しても閉じませんので、Alt+F4を押さないと消えません。
そこをどうにかしたいのですが...
とりあえず、終了できるはずですが・・。
ALT+F4に反応するならXを押しても終了するはずなんですけどね。
あとECSキーで終了するか試してみてください。
各関数の意味と言うか役目を調べてなぜ必要か理解するようにしてくださいね。
>DrawBox(0, 0, 1470, 600, 00000, TRUE);を消したら、ウィンドーモードに成りました。ですが、画像を置いていない所は、透明に成ってしまっています。
このDrawBox()の意味は理解されていますか?背景をクリアするために存在します。
なので、消したら透明になるのは当たり前なんですよ。
で、DrawBox(0, 0, 740, 600, 00000, TRUE);
と書いたらどうですか?ウィンドウモードで半分だけクリアされますでしょうか?
もしOKなら、
DrawBox(740, 0, 740, 600, 00000, TRUE);
を付け加えてみてください。
これでもウィンドウモードでしょうか?実験をお願いします。
前から疑問なんですが、お使いのパソコンのデスクトップは横幅が1480ドット以上あるんでしょうか?
いや、あるなら問題ないです。ないなら、それが問題なのではと思います。
>それと、ウィンドーモードの罰点を押しても閉じませんので、Alt+F4を押さないと消えません。
そこをどうにかしたいのですが...
とりあえず、終了できるはずですが・・。
ALT+F4に反応するならXを押しても終了するはずなんですけどね。
あとECSキーで終了するか試してみてください。
Re:画像+音
添付して在るのは、
DrawBox(0, 0, 740, 600, 00000, TRUE);
を試してみた結果です。
ウィンドーモードに成らないと言うより、ウィンードーが被さっている、と言う方が適切だったと思います。
あと、
DrawBox(740, 0, 740, 600, 00000, TRUE);
は、何もでないでただ透明に成りました。
一応、ウィンドーモードです。
パソコンのデスクトップは横幅が1480ドット以下だった場合は、SetGraphModeの値を減らせば良いのでしょうか?ですがこうした場合、右端が切れてしまいます。
この状態で、
DrawBox(740, 0, 740, 600, 00000, TRUE);
を試してみたらウィンードーが被さっている、状態に成りました。
DrawBox(0, 0, 740, 600, 00000, TRUE);
を試してみた結果です。
ウィンドーモードに成らないと言うより、ウィンードーが被さっている、と言う方が適切だったと思います。
あと、
DrawBox(740, 0, 740, 600, 00000, TRUE);
は、何もでないでただ透明に成りました。
一応、ウィンドーモードです。
パソコンのデスクトップは横幅が1480ドット以下だった場合は、SetGraphModeの値を減らせば良いのでしょうか?ですがこうした場合、右端が切れてしまいます。
この状態で、
DrawBox(740, 0, 740, 600, 00000, TRUE);
を試してみたらウィンードーが被さっている、状態に成りました。
Re:画像+音
どうしても納得できない&気になるようでしたらDXライブラリ配布もとの本家サイトでお尋ねください。
http://homepage2.nifty.com/natupaji/DxLib/
こちらでは根本的解決はできませんので。
http://homepage2.nifty.com/natupaji/DxLib/
こちらでは根本的解決はできませんので。
Re:画像+音
int i;
for( i=0 ; i<60 ; i++ ) {
SetPanSoundMem( 0, ken );
}
って意味の質問ですか?
もし、このレベルが分かんないと流石にC言語の勉強をしないとまずいと思いますよ。
勉強しないと、このままプログラムを作っていく事は難しいです。
前から勉強の話だけは、何のコメントもしていらっしゃらないのでどうお考えなんでしょうか?
下記サイトでの勉強をお勧めします。
http://homepage3.nifty.com/mmgames/c_guide/
http://www5c.biglobe.ne.jp/~ecb/c/c00.html
http://www.geocities.jp/ky_webid/c/index.html
for( i=0 ; i<60 ; i++ ) {
SetPanSoundMem( 0, ken );
}
って意味の質問ですか?
もし、このレベルが分かんないと流石にC言語の勉強をしないとまずいと思いますよ。
勉強しないと、このままプログラムを作っていく事は難しいです。
前から勉強の話だけは、何のコメントもしていらっしゃらないのでどうお考えなんでしょうか?
下記サイトでの勉強をお勧めします。
http://homepage3.nifty.com/mmgames/c_guide/
http://www5c.biglobe.ne.jp/~ecb/c/c00.html
http://www.geocities.jp/ky_webid/c/index.html
Re:画像+音
>再生中か再生中ではないかを調べる関数
それはCheckSoundFileです。
詳しくは本家をご覧下さい。
ttp://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_sound.html
>Waveは、音の波の、間隔です。
Waveは波を指すのであって、間隔を指すものではありません。
っというか、音の間隔は少しあいまいな表現です。
音の大きさ=波の振幅
音の高さ=波の周波数
今回知りたいのは、振幅ですよね。
自分もかなり興味があるのですが、
まだ、ゴリゴリ解析をしたことがありません。
最善の方法ではないかもしれませんが、
以下のサイトの基本はまずおさえなくてはいけませんね。
WisdomSoft -マルチメディア API
ttp://wisdom.sakura.ne.jp/system/winapi/media/index.html
もしもっと音声関連で知識が欲しいなら、
書籍がたくさんあります。
「サウンドプログラミング」
で探せばいろいろあるかと。
時間がある時に、自分もやろうかと思います。
DirectXが便利な気がしますけどね^^;
それはCheckSoundFileです。
詳しくは本家をご覧下さい。
ttp://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_sound.html
>Waveは、音の波の、間隔です。
Waveは波を指すのであって、間隔を指すものではありません。
っというか、音の間隔は少しあいまいな表現です。
音の大きさ=波の振幅
音の高さ=波の周波数
今回知りたいのは、振幅ですよね。
自分もかなり興味があるのですが、
まだ、ゴリゴリ解析をしたことがありません。
最善の方法ではないかもしれませんが、
以下のサイトの基本はまずおさえなくてはいけませんね。
WisdomSoft -マルチメディア API
ttp://wisdom.sakura.ne.jp/system/winapi/media/index.html
もしもっと音声関連で知識が欲しいなら、
書籍がたくさんあります。
「サウンドプログラミング」
で探せばいろいろあるかと。
時間がある時に、自分もやろうかと思います。
DirectXが便利な気がしますけどね^^;