どうもfor文をいれてアドベンチャーゲームぽいものを作ろうとしているのですが、
うまくうごいてくれなく、曲も流れてくれない状況です。
また、ウィンドウをクリックもしくは動かすだけで応答なしになってしまうようになってしまいました。
↓がfor文の内容です。
for(i=0;i<10;){
if(CheckSoundFile==0)
PlaySoundFile ( "music/kyoku.wav" , DX_PLAYTYPE_BACK ) ;
ClearDrawScreen(); // 裏画面のデータを全て削除
LoadGraphScreen( 0, 0, "graph/haikei1.png" , FALSE ) ;
LoadGraphScreen( 50, 270, "graph/hito1.png" , TRUE ) ;
LoadGraphScreen( 550, 270, "graph/hito2.png" , TRUE ) ;
if(i==0)
DrawString( 70, 350, "あ", black);
else if(i==1)
DrawString( 70, 350, "い", black);
else if(i==2)
DrawString( 70, 350, "う", black);
else if(i==3)
DrawString( 70, 350, "え", black);
else if(i==4)
DrawString( 70, 350, "お", black);
else if(i==5)
DrawString( 70, 350, "か", black);
else if(i=6)
DrawString( 70, 350, "き", black);
else if(i==7)
DrawString( 70, 350, "く", black);
else if(i==8)
DrawString( 70, 350, "け", black);
else if(i==9)
DrawString( 70, 350, "こ", black);
ScreenFlip() ; // 裏画面データを表画面へ反映
if(Key[KEY_INPUT_RETURN]==1)
i++;
}
for文
Re:for文
CheckSoundFileは関数ですから、関数としての記述をして下さい。
後、このままでは何度もループ再生する事になると思いますが、ループ再生するときは、ループのオプションを指定しましょう。
また、サウンドも、画像も一旦メモリに展開してから使うようにして下さい。
詳しくはゲームプログラミングの館やサンプルプログラミングの館をご覧下さい。
また、Keyにキーの入力状態が格納されていませんからi++が行われません。
そしてProcessMessageを定期的に呼ばないと応答不能になります。
DXライブラリを使ったプログラムコードの骨格は
http://dixq.net/g/#41
この辺を参考にして下さい。
後、このままでは何度もループ再生する事になると思いますが、ループ再生するときは、ループのオプションを指定しましょう。
また、サウンドも、画像も一旦メモリに展開してから使うようにして下さい。
詳しくはゲームプログラミングの館やサンプルプログラミングの館をご覧下さい。
また、Keyにキーの入力状態が格納されていませんからi++が行われません。
そしてProcessMessageを定期的に呼ばないと応答不能になります。
DXライブラリを使ったプログラムコードの骨格は
http://dixq.net/g/#41
この辺を参考にして下さい。
Re:for文
似たようなことを行うためのサンプルを先ほどのリンク先のコードを元に作ってみました。
エンターを押しながら確認してみて下さい。
#include "DxLib.h" int Key[256]; int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[/url]){ char GetHitKeyStateAll_Key[256]; GetHitKeyStateAll( GetHitKeyStateAll_Key ); for(int i=0;i<256;i++){ if(GetHitKeyStateAll_Key==1) GetHitKeyStateAll_InputKey++; else GetHitKeyStateAll_InputKey=0; } return 0; } int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ int i=0; char DataStr[21]="あいうえおかきくけこ", DrawStr[3]={0,}; ChangeWindowMode(TRUE);//ウィンドウモード if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化 while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0 && i<10){ strncpy(DrawStr,&DataStr[i*2],2); DrawFormatString(0,0,GetColor(255,255,255),"%s",DrawStr); if(Key[KEY_INPUT_RETURN]==2) i++; ScreenFlip(); } DxLib_End(); return 0; }
エンターを押しながら確認してみて下さい。