フレームが・・・

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
KSK
記事: 79
登録日時: 14年前

フレームが・・・

#1

投稿記事 by KSK » 14年前

よろしくお願いします。
下記は新しく書いたプログラムの一部なのですが、フレームがX座標32の状態で右キーを押すとX座標672に行ってしまいます。
何故なのか、御指摘して頂けないでしょうか?

コード:

while(!ProcessMessage()&&!ClearDrawScreen()&&!CheckHitKey(KEY_INPUT_ESCAPE))
	{
		DrawGraph(0,0,menu.back,FALSE);
		DrawGraph(menu.frame_1_x,menu.frame_1_y,menu.frame_1_graph,TRUE);
		if(menu.keyflag==0)
		{
			if(menu.frame_1_x==32&&CheckHitKey(KEY_INPUT_RIGHT)) menu.frame_1_x=352;
			if(menu.frame_1_x==352&&CheckHitKey(KEY_INPUT_RIGHT)) menu.frame_1_x=672;
			if(menu.frame_1_x==352&&CheckHitKey(KEY_INPUT_LEFT)) menu.frame_1_x=32;
			if(menu.frame_1_x==672&&CheckHitKey(KEY_INPUT_LEFT)) menu.frame_1_x=352;
		}
		if(CheckHitKeyAll()) menu.keyflag=1;
		if(!CheckHitKeyAll()) menu.keyflag=0;

		ScreenFlip();
	}


A


アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: フレームが・・・

#2

投稿記事 by h2so5 » 14年前

7行目でフレームがX座標32のとき、フレームのX座標が352になり、
8行目でフレームのX座標が352になっているので、フレームのX座標が672になります。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: フレームが・・・

#3

投稿記事 by みけCAT » 14年前

プログラムに書かれている通りの動作です。
とりあえず、期待した動作にするにはこんな感じでしょうか?

コード:

while(!ProcessMessage()&&!ClearDrawScreen()&&!CheckHitKey(KEY_INPUT_ESCAPE))
    {
        DrawGraph(0,0,menu.back,FALSE);
        DrawGraph(menu.frame_1_x,menu.frame_1_y,menu.frame_1_graph,TRUE);
        if(menu.keyflag==0)
        {
            if(menu.frame_1_x==32&&CheckHitKey(KEY_INPUT_RIGHT)) menu.frame_1_x=352;
            else if(menu.frame_1_x==352&&CheckHitKey(KEY_INPUT_RIGHT)) menu.frame_1_x=672;
            else if(menu.frame_1_x==352&&CheckHitKey(KEY_INPUT_LEFT)) menu.frame_1_x=32;
            else if(menu.frame_1_x==672&&CheckHitKey(KEY_INPUT_LEFT)) menu.frame_1_x=352;
        }
        if(CheckHitKeyAll()) menu.keyflag=1;
        if(!CheckHitKeyAll()) menu.keyflag=0;
 
        ScreenFlip();
    }
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
bitter_fox
記事: 607
登録日時: 14年前
住所: 大阪府

Re: フレームが・・・

#4

投稿記事 by bitter_fox » 14年前

KSK さんが書きました:よろしくお願いします。
下記は新しく書いたプログラムの一部なのですが、フレームがX座標32の状態で右キーを押すとX座標672に行ってしまいます。
何故なのか、御指摘して頂けないでしょうか?

コード:


			if(menu.frame_1_x==32&&CheckHitKey(KEY_INPUT_RIGHT)) menu.frame_1_x=352;
			if(menu.frame_1_x==352&&CheckHitKey(KEY_INPUT_RIGHT)) menu.frame_1_x=672;
			if(menu.frame_1_x==352&&CheckHitKey(KEY_INPUT_LEFT)) menu.frame_1_x=32;
			if(menu.frame_1_x==672&&CheckHitKey(KEY_INPUT_LEFT)) menu.frame_1_x=352;

もし、32の状態で右キーを押した場合は次のようになってしまいます。

コード:

menu.frame_1_x == 32かつCheckHitKey(KEY_INPUT_RIGHT)が真になりmenu.frame_1_xが352になる。
(この段階でmenu.frame_1_xは352)
menu.frame_1_x == 352かつCheckHitKey(KEY_INPUT_RIGHT)が真になりmenu.frame_1_xが672になる。
(この段階でmenu.frame_1_xは672)
menu.frame_1_x == 352(偽)かつCheckHitKey(KEY_INPUT_LEFT)が偽になりパス。
...
これを回避するためにはelse ifを使ってください。

KSK
記事: 79
登録日時: 14年前

Re: フレームが・・・

#5

投稿記事 by KSK » 14年前


ありがとうございました!
出来ました!!!


A


閉鎖

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