二つのプログラムの違いに関して。

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

二つのプログラムの違いに関して。

#1

投稿記事 by Ouxiy » 1週間前

以下のプログラムのif文に関してなのですが、

コード:

if (Key[KEY_INPUT_R] == 1 && playerY == enemyY) {

 lock = 1;

 lockonMove = 1;



 }

 if (lockonMove > 0) {

 ++lockonMove;

 }

 if (lockonMove == 10) {

 lockImge = lockonHandle[0];



 }

 else if (lockonMove == 20) {

 lockImge = lockonHandle[1];



 }

 else if (lockonMove == 30) {

 lockImge = lockonHandle[2];





 }

 else if (lockonMove == 40) {

 lockImge = lockonHandle[1];

 lockonMove = 1;

 }



 if (playerY != enemyY) {

 lock = 0;

 lockonMove = 0;

 }

コード:

if (Key[KEY_INPUT_R] == 1 && playerY == enemyY) {

 lock = 1;

 lockonMove = 1;



if (lockonMove > 0) {

 ++lockonMove;

 }

 if (lockonMove == 10) {

 lockImge = lockonHandle[0];



 }

 else if (lockonMove == 20) {

 lockImge = lockonHandle[1];



 }

 else if (lockonMove == 30) {

 lockImge = lockonHandle[2];





 }

 else if (lockonMove == 40) {

 lockImge = lockonHandle[1];

 lockonMove = 1;

 }



 if (playerY != enemyY) {

 lock = 0;

 lockonMove = 0;

 }



 }
のプログラムに関して上のプログラムはループで+1されるのに、下のプログラムは一回+1されるだけと言われたのですがなぜでしょうか。

詳しく説明して頂けるとありがたいです。

アバター
あたっしゅ
記事: 245
登録日時: 9年前
住所: 東京23区
連絡を取る:

Re: 二つのプログラムの違いに関して。

#2

投稿記事 by あたっしゅ » 1週間前

 「上のプログラム」も「下のプログラム」も { と } の数が、あっていません。
日本語に例えると、文章の途中でちぎれたモノを放り出されている感じです。

 ループ部分全部を、再アップしてもらえないと、誰も答えられない模様。
 どこで区切っていいか、わからない場合は、プログラム全体を載せてください。

 それとも、if 文に { } がないと、直後の一文にしか、条件が適応されない、ということなのかな ?
手提鞄あたっしゅ、[MrAtassyu] http://ameblo.jp/mratassyu/
手提鞄屋魚有店(てさげかばんやうおありてん)
レスがついていないものを優先して、レスしています。時々、見当外れなレスをします。

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

Re: 二つのプログラムの違いに関して。

#3

投稿記事 by みけCAT » 1週間前

あたっしゅ さんが書きました:
1週間前
 「上のプログラム」も「下のプログラム」も { と } の数が、あっていません。
「上のプログラム」も「下のプログラム」も、提示された範囲において { と } の対応は正常に見えます。
あたっしゅさんが「あっていません」とする根拠はなんですか?
最初に表示される範囲だけでなく、提示されたプログラム全体を見て判断しましたか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

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

Re: 二つのプログラムの違いに関して。

#4

投稿記事 by みけCAT » 1週間前

Ouxiy さんが書きました:
1週間前
上のプログラムはループで+1されるのに、下のプログラムは一回+1されるだけと言われたのですがなぜでしょうか。
提示されたプログラムにループは含まれていないようですが、
「上のプログラム」ではif (lockonMove > 0)以降が最初のif文のブロックの外にあるので
Key[KEY_INPUT_R] == 1 && playerY == enemyYが真かどうかにかかわらず実行され、
「下のプログラム」ではif (lockonMove > 0)以降が最初のif文のブロックの中にあるので
Key[KEY_INPUT_R] == 1 && playerY == enemyYが真の場合のみ実行される、
というところに理由があると予想できます。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Ouxiy
記事: 125
登録日時: 1ヶ月前

Re: 二つのプログラムの違いに関して。

#5

投稿記事 by Ouxiy » 1週間前

みけCATさん、毎度どうもありがとうございます。
読ませて頂きます。

アバター
あたっしゅ
記事: 245
登録日時: 9年前
住所: 東京23区
連絡を取る:

Re: 二つのプログラムの違いに関して。

#6

投稿記事 by あたっしゅ » 5日前

画面をスクロールさせなかったようです。失礼しました。
手提鞄あたっしゅ、[MrAtassyu] http://ameblo.jp/mratassyu/
手提鞄屋魚有店(てさげかばんやうおありてん)
レスがついていないものを優先して、レスしています。時々、見当外れなレスをします。

返信

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