チェーンソーマンだと思った?
残念、ゲームボーイの魔界塔士サガでした。
ラスボスをチェーンソーで一撃なのは、プログラムミスだ。
ちょっとだけ書くと、サガの攻撃時には、こんなプログラムが組まれている、と勝手に思っている。
●日本語
もし 味方キャラクターが武器「チェーンソー」で攻撃したら
[敵は即死する]
それ以外の武器をつかったら
[敵にダメージを与える(HPからダメージを引く)]
■プログラム
If character.weaponType == チェーンソー then
enemy.hp = 0
Else
enemy.hp = enemy.hp - ダメージ
で、このプログラムがそのまま実行されると、
ラスボスでも関係なくHPがゼロになる。
本来だったら、こうしないといけない。
●日本語
もし 味方キャラクターが武器「チェーンソー」で攻撃したら
かつ
ラスボスじゃなかったら
[敵は即死する]
それ以外の武器をつかったら
[敵にダメージを与える(HPからダメージを引く)]
■プログラム
If character.weaponType == チェーンソー And enemy.Type != ラスボス
enemy.hp = 0
Else
enemy.hp = enemy.hp - ダメージ
そう、もし、の時の条件が足りていないのだ。
ラスボスだけ除外するべき所を、プログラムの記述が足りてなくて
同じように動いてしまう。
ここでみんなが大嫌いな数学の集合が出てくる。
かつ、または、というやつだ。
かつ:条件を同時に満たすか
または:それぞれの条件を別々に満たすか
なので、プログラムを書くときは、いきなりプログラムを記述するのではなく
あらゆる状況を、言葉、として書き出して、条件を整理する必要がある。
こうすると、どんな条件の時に、何をすべきか、が見えてきたりする。
そう、数学の集合はこういう所で使われているのだ。
実際に数学や物理は使っている所を教えるのが一番手っ取りはやい。
実例でやった方がとてもおもしろおかしく覚えられる。
僕はそう思っている。