今、プログラミングになれるために○×ゲームを作ろうとしてます。(簡単なプログラムしか組めない素人です)
そこで、前回質問したのですが、上手くターンが交互にいきません。
こっちが○を置くとマス全部に×が出てきてしまいます。
○→×→○→・・・・と上手くいかないんです。
どこかおかしい所があったら教えてください。
また直した方がいいところなども教えてくださると助かります。
↓が書いたソースの一部です。
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE);//ウィンドウモード
SetGraphMode(600,600,32);
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){
//↑メッセージ処理 ↑画面をクリア ↑入力状態を保存 ↑ESCが押されていない
int line_co,circle_red;
line_co=GetColor(255,255,255); //ラインの色
circle_red=GetColor(255,0,0); //○(×)の色
DrawBox ( 120 , 120 , 480 , 480 , line_co, FALSE); //外枠
DrawLine ( 240 , 120 , 240 , 480 , line_co); //左_縦
DrawLine ( 360 , 120 , 360 , 480 , line_co); //右_縦
DrawLine ( 120 , 240 , 480 , 240 , line_co); //上_横
DrawLine ( 120 , 360 , 480 , 360 , line_co); //下_横
SetMouseDispFlag( TRUE ) ; //マウスを表示
SetFontSize( 100 ) ; //文字サイズ変更
int MouseX , MouseY ;
int MouseInput;
GetMousePoint( &MouseX , &MouseY ) ; //マウスの位置を入手
MouseInput = GetMouseInput() ;
static int flag_maru[8]={0,0,0,0,0,0,0,0},flag_batsu[8]={0,0,0,0,0,0,0,0}; //○or×の表示のためのフラグ
int junban=0;
static int r;
if(junban==0){
if( MouseX<=240&&MouseX>=120&&MouseY<=240&&MouseY>=120&&flag_batsu[0]!=1&&( MouseInput & MOUSE_INPUT_LEFT ) == 1 )
{
flag_maru[0]=1;
}
if(flag_maru[0]==1){
DrawString( 130 , 130 , "○" , circle_red);
junban=1;
r=GetRand(8);
}
else if( MouseX<=360&&MouseX>=240&&MouseY<=240&&MouseY>=120&&flag_batsu[1]!=1&&( MouseInput & MOUSE_INPUT_LEFT ) == 1 )
{
flag_maru[1]=1;
}
if(flag_maru[1]==1){
DrawString( 250 , 130 , "○" , circle_red);
junban=1;
r=GetRand(8);
}
・
・
・
===============省略=================
・
・
・
if(junban==1){
if(r==0&&flag_maru[0]!=1){
flag_batsu[0]=1;
}
if(flag_batsu[0]==1){
DrawString( 130 , 130 , "×" , circle_red);
junban=0;
}
else if(r==1&&flag_maru[1]!=1){
flag_batsu[1]=1;
}
if(flag_batsu[1]==1){
DrawString( 250 , 130 , "×" , circle_red);
junban=0;
}
else if(r==2&&flag_maru[2]!=1){
flag_batsu[2]=1;
}
if(flag_batsu[2]==1){
DrawString( 370 , 130 , "×" , circle_red);
junban=0;
}
・
・
・
====================省略==================
うまくいきません・・・
Re:うまくいきません・・・
省略してしまいスミマセン…
僕もif文がおかしいと思ってました。
いろいろいじったのですが、解決せず・・・・orz
質問なのですが、デバッカで追うとはどういうことなのでしょうか?
初歩的な質問でスミマセン><
できればやり方を教えてくださると助かります。
自分で調べてみましたが、よく意味が分かりませんでした。(TT;)
よろしくお願いします。
僕もif文がおかしいと思ってました。
いろいろいじったのですが、解決せず・・・・orz
質問なのですが、デバッカで追うとはどういうことなのでしょうか?
初歩的な質問でスミマセン><
できればやり方を教えてくださると助かります。
自分で調べてみましたが、よく意味が分かりませんでした。(TT;)
よろしくお願いします。
Re:うまくいきません・・・
VisualC++シリーズだとデバックビルド時に
F9でブレークポイントを設定でき
処理が流れてきたらそこのブレークポイントで処理が止まります
このときに変数の値などをチェックし
期待しているとおりに動いているか確認します
F9でブレークポイントを設定でき
処理が流れてきたらそこのブレークポイントで処理が止まります
このときに変数の値などをチェックし
期待しているとおりに動いているか確認します