#include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ ChangeWindowMode( TRUE ) ; // ウィンドウモード if( DxLib_Init() == -1 ) return -1; // 初期化 char KeyBuf[ 256 ] ; //音符 int Sound ; Sound = LoadSoundMem( "do.ogg" ); //wavファイルを読み込み、ハンドルをint型変数へ格納 int Sound1 ; Sound1 = LoadSoundMem( "re.ogg" ); int Sound2 ; Sound2 = LoadSoundMem( "mi.ogg" ); int Sound3 ; Sound3 = LoadSoundMem( "fa.ogg" ); int Sound4 ; Sound4 = LoadSoundMem( "so.ogg" ); int Sound5 ; Sound5 = LoadSoundMem( "ra.ogg" ); int Sound6 ; Sound6 = LoadSoundMem( "si.ogg" ); int Sound7 ; Sound7 = LoadSoundMem( "do2.ogg" ); while( 1 ){ GetHitKeyStateAll(KeyBuf ) ; // すべてのキーの状態を得る if(KeyBuf[KEY_INPUT_A]==1) { if(CheckSoundMem(Sound)==0) //現在音が再生されていなければ PlaySoundMem(Sound,DX_PLAYTYPE_BACK); //音を再生する } if(KeyBuf[KEY_INPUT_B]==1) { if(CheckSoundMem(Sound1)==0) //現在音が再生されていなければ PlaySoundMem(Sound1,DX_PLAYTYPE_BACK); //音を再生する } if(KeyBuf[KEY_INPUT_C]==1) { if(CheckSoundMem(Sound2)==0) //現在音が再生されていなければ PlaySoundMem(Sound2,DX_PLAYTYPE_BACK); //音を再生する } if(KeyBuf[KEY_INPUT_D]==1) { if(CheckSoundMem(Sound3)==0) //現在音が再生されていなければ PlaySoundMem(Sound3,DX_PLAYTYPE_BACK); //音を再生する } if(KeyBuf[KEY_INPUT_E]==1) { if(CheckSoundMem(Sound4)==0) //現在音が再生されていなければ PlaySoundMem(Sound4,DX_PLAYTYPE_BACK); //音を再生する } if(KeyBuf[KEY_INPUT_F]==1) { if(CheckSoundMem(Sound5)==0) //現在音が再生されていなければ PlaySoundMem(Sound5,DX_PLAYTYPE_BACK); //音を再生する } if(KeyBuf[KEY_INPUT_G]==1) { if(CheckSoundMem(Sound6)==0) //現在音が再生されていなければ PlaySoundMem(Sound6,DX_PLAYTYPE_BACK); //音を再生する } if(KeyBuf[KEY_INPUT_H]==1) { if(CheckSoundMem(Sound7)==0) //現在音が再生されていなければ PlaySoundMem(Sound7,DX_PLAYTYPE_BACK); //音を再生する } //音符 int image; //ハンドルを受け取るためのint型変数を宣言 image = LoadGraph( "background0.png" ) ; //char.pngのハンドルを代入 DrawGraph( 0 , 0 , image , FALSE ) ; //画像を表示 if(KeyBuf[KEY_INPUT_ESCAPE]==1) break ; if( ProcessMessage() == -1 ) break ;//エラーが起きたら終了 } DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }
エラーが出るのですが
エラーが出るのですが
昨日教えてもらったようにして簡単な鍵盤を作ったのですが。DxLib.exe の実行中に途中から 0x00558bb8 でハンドルされていない例外が発生しました: 0xC0000005: 場所 0x00000000 に書き込み中にアクセス違反が発生しましたって出てきて動かなくなるのですが。下のプログラムなんですが。どうすればいいのでしょうか。プログラムは画像を使わないと何にも起きないのですが。
Re:エラーが出るのですが
まず沢山書かずに少しずつ考えて見ましょう。
あれからゲームプログラミングの館はご覧になったでしょうか?
まず、
1. 画像を上から下に徐々に移動するだけのプログラムを書いて下さい。
2. 今度は裏画面処理を使って画像を上から下に徐々に移動するだけのプログラムを書いて下さい。
3. Zキーが押されれいる間DrawStringで「押されています」と表示するプログラムを書いて下さい。(裏画面処理使う)
4. Zキーが押された瞬間一度だけ「押されました」とprintfDxで表示するプログラムを書いて下さい。(裏画面処理使う)
5. Aキーが押された瞬間一度だけドの音が鳴るプログラムを書いて下さい。(裏画面処理使う)
この5問を解いていけば自然に実装出来るはずです。
まずは館を見ながらやってみて、つまったらどこで詰まったか具体的に教えて下さい。
詰まっていなくても、回答を載せてもらったら添削しますよ。
あれからゲームプログラミングの館はご覧になったでしょうか?
まず、
1. 画像を上から下に徐々に移動するだけのプログラムを書いて下さい。
2. 今度は裏画面処理を使って画像を上から下に徐々に移動するだけのプログラムを書いて下さい。
3. Zキーが押されれいる間DrawStringで「押されています」と表示するプログラムを書いて下さい。(裏画面処理使う)
4. Zキーが押された瞬間一度だけ「押されました」とprintfDxで表示するプログラムを書いて下さい。(裏画面処理使う)
5. Aキーが押された瞬間一度だけドの音が鳴るプログラムを書いて下さい。(裏画面処理使う)
この5問を解いていけば自然に実装出来るはずです。
まずは館を見ながらやってみて、つまったらどこで詰まったか具体的に教えて下さい。
詰まっていなくても、回答を載せてもらったら添削しますよ。
Re:エラーが出るのですが
#include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { ChangeWindowMode(TRUE); if (DxLib_Init() == -1) return -1; char KeyBuf[256]; int Sound; Sound = LoadSoundMem("do.ogg"); int image; image = LoadGraph("background0.png"); while (1) { GetHitKeyStateAll(KeyBuf); if (KeyBuf[KEY_INPUT_A] == 1) if (CheckSoundMem(Sound) == 0) PlaySoundMem(Sound, DX_PLAYTYPE_BACK); DrawGraph(0, 0, image, FALSE); if (KeyBuf[KEY_INPUT_ESCAPE] == 1) break; if (ProcessMessage() == -1) break; } DxLib_End(); return 0; }とりあえず、音を1つに減らしてLoadGraphをループ外に引っ張り出しました。
BCC 5.5 でコンパイル・動作確認して正常でした。
このコードをコンパイル・実行してみてください。