[314] Re:書き方覚えて後から理解
投稿者:(ぱ)
2007/02/20 02:13:25
私はそもそもRPGをろくすっぽやったこともないんですが。
# 家庭用ゲーム機持ってないもんで…
# 大昔、PC1500版labyrinthを作ろうとして挫折した記憶が(以下略)
> これもまた面倒で、明らかに敵のグループを選択して魔法を撃つ場合と、
> フィールド上で「ボカーン!」と爆発する魔法を撃つ場合を考えないと
> いけないでしょうね。(後者は味方の巻き添えもありえますし)
プロのゲームプログラマさんの投稿ありがとうございます。
こういうのは、いわゆる「教科書的なOO」が適用できないケースですよね。
RPGに限らず、CADなどでも、例外的な事象はいくらでもあるわけで。
ユーザが画面上である座標をクリックしたとき、最寄の図形を選択したいわけですが、
・「折れ線」の上に「中間点(vertex)」がある場合、vertexを優先して検出したい。
・せっかく直線を選択したのなら、クリックした座標から下ろした垂線の足も
検出したい。
とかの要望も出てきて、
Shape#distance(double x, double y)
をいろんなShapeでオーバーライドすれば完璧! とはなかなかならないのが現実です。
> ですからAttackTo(Enemy)と書いた場合でも、内部的にはEnemy.DamageFrom(This)と
>書いて、Enemy側で「その攻撃が本当にダメージになるか」などを判断する必要が
>あるのじゃないかと思います。
このへんは、ダブルディスパッチ(いや、Character→Arm→Enemyのトリプル
ディスパッチかな)でいけそうな気がしますが、どうなんでしょうか。