八歩目 if のいい使い方
〜if の効率化〜
シューティングゲームなんかを作るとき
「あれがこうで これもこうで」 と たくさん if を使うことがあります
そんなときこんな使い方もあるんだな↓
a=8:n=100 if (a=8) and (n=100):mes "ヤッホー" if (a>7) or (n=0):print "ややこやしいな" stop |
この場合
どっちのifも成立する
and とは 「aが8で さらに nが100なら いい」 ということで
aが8でなければ実行されず さらにnが100じゃないと実行されない
つまり 2つとも(a=8 と n=100 が)
満たされていないと :より右は実行されない
or は 「aが7以上(いじょう) それか nが100ならいい」 ということ
aが7より大きいか それか nが0なら実行される
つまり どちらかが満たされていればいい
ということだ
条件が満たされたとは・・・ 例えば aは1だとして if a=1: としたとき ちゃんと : の右の命令は実行される このとき if条件が満たされた と言う 簡単に言うと if を使って :より右の命令が実行されたときのことだ |
もちろんこういう風に
if (a=1)and(b=1)and(c=1)and(d=1)and(e=1): if (a=1)or(b=1)or(c=1)or(d=1)or(e=1): |
何個でも and も or もつかってもいい
ここで ちょっと難しくしてみよ
a=1:b=5 *saisyo if (a=5) and (b=6):goto*owari if a<5:a=a+1 if (a=5) and (b!6):b=b+1:a=1 goto*saisyo *owari stop |
*注意・・・これは実行しないで下さい (まぁ別にしてもいいけど)
パソコンに影響(えいきょう)が出ることがあります(フリーズ)
まだやってない 命令を使えば 実行していいが・・・ やめとこ
じゃあ説明ね
最初のifは aが5でbが6なら*owariへ行ける
次は aが5より小さければ aに1をたす
で次は aが5で bが6でなければ
bに1をたして aを1にする
goto*saisyo で *saisyoに行く
もっと詳しく言うと
最初はaは1だよね だからifで aが どんどん増えていく
そして5になると aを1にして bを6にします
そしてまた aが たされていって
aが5になると一番上のifで aが5 bが6 だから
goto*owari が実行されて *owari へ行って stopで止る
別にこれは 分からなくていいです
むしろ分かったら結構すごいよ!
まとめ・・・ and・・・if で使う と or・・・if で使う または |