うまくいきません・・・

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
gyt

うまくいきません・・・

#1

投稿記事 by gyt » 15年前

今、プログラミングになれるために○×ゲームを作ろうとしてます。(簡単なプログラムしか組めない素人です)
そこで、前回質問したのですが、上手くターンが交互にいきません。
こっちが○を置くとマス全部に×が出てきてしまいます。
○→×→○→・・・・と上手くいかないんです。
どこかおかしい所があったら教えてください。

また直した方がいいところなども教えてくださると助かります。
↓が書いたソースの一部です。



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;
}
      ・
      ・ 
      ・
====================省略==================

dic

Re:うまくいきません・・・

#2

投稿記事 by dic » 15年前

省略されてるので、推測ですが
if文が思ったとおりに動いてないのかもしれません
デバッカで追ってみてください

gyt

Re:うまくいきません・・・

#3

投稿記事 by gyt » 15年前

省略してしまいスミマセン…

僕もif文がおかしいと思ってました。
いろいろいじったのですが、解決せず・・・・orz

質問なのですが、デバッカで追うとはどういうことなのでしょうか?
初歩的な質問でスミマセン><
できればやり方を教えてくださると助かります。

自分で調べてみましたが、よく意味が分かりませんでした。(TT;)

よろしくお願いします。

dic

Re:うまくいきません・・・

#4

投稿記事 by dic » 15年前

VisualC++シリーズだとデバックビルド時に
F9でブレークポイントを設定でき
処理が流れてきたらそこのブレークポイントで処理が止まります
このときに変数の値などをチェックし
期待しているとおりに動いているか確認します

閉鎖

“C言語何でも質問掲示板” へ戻る