ifの条件を抜けた後

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

ifの条件を抜けた後

#1

投稿記事 by わたつみ » 15年前

はじめまして。プログラミングを始めてまだ1ヶ月ちょっとの新人です。
質問ですが、画像を方向キーでマス目通りに移動させたいのですが、
現在地から左方向にマスがある時、flag4=1
それ以外、flag4=0
として

if (flag4=1)
{if(Key[KEY_INPUT_NUMPAD4]==1)Xzahyou-=48;}

と書くと、41章の「毎回書くプログラムの骨格(キー入力監視付)」を使わせてもらっているので
移動した直後に画像が元の位置に戻ってしまいます。
ifの条件を抜けた後も処理を反映させておくにはどうすればいいのでしょうか?

へろりくしょん

Re:ifの条件を抜けた後

#2

投稿記事 by へろりくしょん » 15年前

これだけでは何とも言えませんが。

変数 Xzahyou が画像のX軸の表示位置を保持していると仮定して。
この Xzahyou をどこかで元の値に戻してませんか?

if(Key[KEY_INPUT_NUMPAD4]==1) の中の式は、ある特定のキーが押されていたら。 という意味でいいでしょうか。

>移動した直後に画像が元の位置に戻ってしまいます。

という事ですが、キーを押しっぱなしにしていても、移動した直後に元の位置に戻りますか?

シエル

Re:ifの条件を抜けた後

#3

投稿記事 by シエル » 15年前

if (flag4=1)
↑これだと、毎回flag4に1を代入してしまってますが、大丈夫ですか?

if (flag4==1)の間違いではないですか?

さかまき

Re:ifの条件を抜けた後

#4

投稿記事 by さかまき » 15年前

質問の答えではありませんが、ありがちなミスがあるので。
if (flag4=1) は常に真となります。
私は定数との比較をする時は、if(定数==変数)で書く様にしています。
そうすると if (1=flag4)と書くとコンパイラさんがミスを教えてくれます。

わたつみ

Re:ifの条件を抜けた後

#5

投稿記事 by わたつみ » 15年前

ご指摘通り(flag4=1)になってました。
なのでいろいろ書き直してみたら、今度はキーを押すと(押しっぱなしにしても)
一瞬消えてから、またもとの位置に表示されるようになってしまいました。
実際のコードを載せておくので、間違いなどあったらご指摘お願いします。

//ココから

//画像
int BF=LoadGraph("masume.png"),gazou[5];
LoadDivGraph ("gazou.png",5,5,1,64,41,gazou);
DrawGraph(0,0,BF,FALSE);


//座標
int yoko[13],tate[17],px=9,py=12;
yoko[px]=(px*48);
tate[py]=(py*16+160);


//移動
if ((px>0) && (py<16))
{if (Key[KEY_INPUT_NUMPAD4]==1)px--,py++;}

if ((px<12) && (py<16))
{if (Key[KEY_INPUT_NUMPAD2]==1)px++,py++;}

if ((px>0) && (py>0))
{if (Key[KEY_INPUT_NUMPAD8]==1)px--,py--;}

if ((px<12) && (py>0))
{if (Key[KEY_INPUT_NUMPAD6]==1)px++,py--;}


//描画
DrawGraph(yoko[px],tate[py],gazou[1],TRUE);

//ココまで

さかまき

Re:ifの条件を抜けた後

#6

投稿記事 by さかまき » 15年前

もし
Key[KEY_INPUT_NUMPAD4]==1
Key[KEY_INPUT_NUMPAD2]==1
Key[KEY_INPUT_NUMPAD8]==1
Key[KEY_INPUT_NUMPAD6]==1
で、px=9、py=12 だと
px--,py++;
px++,py++;
px--,py--;
px++,py--;
となって結局pxもpyも値は変わらないけど、そういう事では無いですか?

スキマ妖怪

Re:ifの条件を抜けた後

#7

投稿記事 by スキマ妖怪 » 15年前

もしかして、提示されたコードをwhile、forとかの中に全部書いてたりしますか?

もしそうだと、

> int yoko[13],tate[17],px=9,py=12;

毎回初期化されてしまうので結果、移動しても戻ってしまうのではないでしょうか

わたつみ

Re:ifの条件を抜けた後

#8

投稿記事 by わたつみ » 15年前

> もしかして、提示されたコードをwhile、forとかの中に全部書いてたりしますか?

よく確認したら、whileの中に書いてました…
お騒がせしてすみませんでした。

もしよろしければ、41章の「毎回書くプログラムの骨格(キー入力監視付)」のサンプルの
どこに何(intやDrawGraphなど)を書けばいいのか教えて頂けないでしょうか?
プログラムの書く順番がいまいちよく解らないので…

閉鎖

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