以下のプログラムの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; } }
のプログラムは何がどう違ってくるのでしょうか。
解きながら学ぶC言語で基礎問題を解いてみたのですが、どうしても以下のことがわかりません。
if (Key[KEY_INPUT_R] == 1 && playerY == enemyY) { lock = 1; lockonMove = 1; //この時点でRを押して、playerY == enemyYと条件が揃っているので真となり、 //lockonMove = 1より、++lockonMoveとなると思ったのですが。このプログラムではlockonMoveは2にしかならないということでしょうか。 if (lockonMove > 0) { ++lockonMove;//ここではlockonMoveは2にしかならないということでしょうか。だとしたら、なぜもう一つのプログラムはループされて+1ずつされるのでしょうか。 } 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 文の文法がわからないということなら、まず入門書を読んでください。
はい、もう一度 読み直します。ありがとうございました。
(複垢?)
gentaroさんの言うように、インデントを揃えれば一目瞭然です。
ソースは対応するカッコで判断できます。・・・確認しましょう
複数のアカウントは作っていません。ここで質問している方のプログラムで気になったものをピックアップして質問しました。ややこしいことしてしまいすみません。
謝罪とかどうでもいいのでインデント揃えましょう。
if文を一度でも学んだことがある人なら、それだけで「違い」はわかります。
フォーマットを揃えるのは整理整頓をするのと同じです。
ご自身のためにもなります。
フォーマットができていない(インデントの揃っていない)コードを他人に見せるというのは、丸めたティッシュやコンビニ弁当の容器が散らばった部屋を他人に見せるぐらい恥ずかしい事だと思ってください。
もしかして、インデントのそろえ方がわからない人ですか?
これでどうでしょうか。
そろってるように見えますか?
見えます。と思います。
メモ帳ではなく、自動的にインデントをそろえる機能がついているエディタを使いましょう。
これがそろってるように見えるのなら、人力でそろえるのは無理です。
わかりました。探してみます
ありがとうです。
carnage0216 さんへのおすすめは Visual Studio Code です。
インストールしたら後はほぼ何もしなくても最初から使える状態になります。
ん?
その方と同じものを使えば良いのですね。
ありがとうございます
あなたのことですよ。なぜわからないと思えるんですか?
個人的にお勧めはNotepad++
windows版→https://forest.watch.impress.co.jp/library/software/notepadplusp/
本当に知らない人なんですが、その人の書いたプログラムをピックアップしたのが不味かったのかな。
なんにしてもそのcarnageなんとかという人は知りません。
質問する前に実行だけではなく、みなさんが言われているように、ソースを整形しておかしなところを見つけましょう。
ピックアップって、if 文もわからない人がこのコードを補完して実行できるわけないじゃないですか。
そこまで下手な嘘で騙せるバカと思われているのは不愉快です。
どうもインデントがよくわかってないみたいだから、できればちゃんと揃えてくれるエディタなり統合開発環境(IDE)を探すところから始めたほうが良さそう。
あとデバッガの使い方も勉強したほうが良い。(IDE使うならステップ実行とかできると思うけど)
コードを眺めるよりも、具体的にどういうステップで処理がされているのか見る方が早い気がする。
皆さん、ありがとうございました。
> そこまで下手な嘘で騙せるバカと思われているのは不愉快です。
そう,なんかそんな感じなんですよね.
(せめて変数名くらいは適当に変えておくとか,こう,他の話を装うのにも最低限の礼儀(←??)ってものがあるっしょ……)
ややこしいことしてしまいすみません。
こんなにバレバレなのにまだバレてないつもりなんだ。
すごいな。
通報して IP 確かめてもらおうか?
Key[KEY_INPUT_R] == 1は本当に成り立っていますか?
’R'を押したら1になるというのは確認取れていますか?
デバッグできないなら、各値をprintf() でも使って表示してみましょう。
Rはちゃんと押されています。
〉Rはちゃんと押されています。
押したらKey[KEY_INPUT_R]が1に成るのは確証取れていますか?
アホなこと書いた。削除。
回答5件
あなたの回答
tips
プレビュー