tatsuro_sugi2019/09/16 10:39申し訳ありません。 前方にブロック かつ 右側にブロックがある場合に「ターンレフト」としているのに、指示通り作動がしなくて先に進めなくて困っているという意味です。
tatsuro_sugi2019/09/17 05:00仰る通り、「if isBlocked && isBlockedRight」をトップに持ってきて、 「if isBlockedRight」を2段目にもってきたらうまくいきました。 Swift初学者なのですが、プログラミングは条件が複雑な内容をトップにもってきたほうが良いという解釈でよろしいでしょうか?(ケースバイケースだとは思うのですが…) 皆さまから「具体的に」というご指摘を頂いたのですが、どこをどう具体的にしたらよいのかさえわからなかったので、察していただいて本当に助かりました。ありがとうございます。 func navigateAroundWall(){ if isBlocked && isBlockedRight{ turnLeft() }else if isBlockedRight{ moveForward() }else{ turnRight() moveForward() } }
Zuishin2019/09/17 05:09状況によります。わかりにくければフローチャートを書くことをお勧めします。if は「もし」、else は「そうでないなら」の意味で、if で実行されなかった場合に else に処理が移ると考えてください。
Zuishin2019/09/17 05:25if (男なら) { 戦え } else if (女なら) { 子を育てよ } else { 好きにしろ } この文はつぎのようになります。 もし男なら戦え そうでないなら、もし女なら子を育てよ そのどちらでもないなら、好きにしろ つまり、先頭から見ていって、前の文が実行されなかった時に限り次の条件を評価するということになります。 仮に男でもあり、女でもあるのが許されるなら、このように書けます。 if (男なら) { 戦え } if (女なら) { 子を育てよ } この場合は次のようになります。 もし男なら、戦え もし女なら、子を育てよ 男でもあり、女でもある人は、両方の if 文を実行することになります。
tatsuro_sugi2019/09/18 00:54わかりやすい説明ありがとうございます。 else ifは「もしそうでないのなら」という意味があるので、さいしょのifと被るような指示があると、うまく指示が伝わりにくいのかなと感じました。 ありがとうございます。