■5648 / ) |
Re[4]: マップ上の特定ユニット・地点を取得するコマンド
|
□投稿者/ あかんべえ -(2007/12/09(Sun) 19:17:49) [ID:5iBgnAGH]
| 2007/12/11(Tue) 05:47:38 編集(投稿者) 2007/12/09(Sun) 19:20:29 編集(投稿者)
Unnamedさんはじめまして。プログラムの技量と知識においてこの界隈で Unnamedさんが最高だと、私は勝手に思い込んでいるので、心強いです。
1.コマンドの統合案について 賛成です。
> ただし、選択地点にユニットがいれば対象ユニットIDなどが追加的に設定され ていても良いと思います(いなければ空文字に設定)。
これはぜひ欲しいと思います。(1)需要がありそう (2)info関数で求めることはできるけど、(慣れない人には特に)負担 (3)ユニット選択のオプションをつけた場合、結果値が座標だけなのは不自然 という理由です。
2.検討課題:マップ外クリック時の動作 > とするとキャンセルの通知法ですが、マップコマンドで実験した所、マップ外を選択するとX()やY()は0や-1も返せるようなので、 これらは特異値としては使えなさそうです。
すみません。マップ外クリックは受け付けない仕様を議論の前提にしてしまってました。 考えてみると、受け付けたほうが、コマンドのソースプログラムは簡明になりそうですね。 他方、右クリック問題と共通の問題があります。受け付けた場合、マップ外クリック時への対処として、たとえば、
Do SelectPoint(または Appoint) Loop While (X(目標地点) > 0) //マップ内がクリックされるまで繰り返す
のような判別ループがたいていの場合不可欠、「定番」になるんじゃと思います。が、ループ無しでも一応動作するように見えるため、初心者のかたが SelectPoint 単独で記述してしまうバグが多発しそうです。
というわけで、「マップ外クリックは受け付けない」とするか、右クリックと同様、「受け付けるならばオプションを付ける」かが良いと思います。そのどちらかは需要によります――どうなんでしょうね、マップ外クリック動作を積極的に利用するシナリオがどれだけあるか。右クリック動作と違ってあまりありそうな気がしないので、どっちかと言えば「受け付けない」固定かなあ。
3.右クリック時の「特異値」 > 代替案としてはX(目標地点)やY(目標地点)が空文字を返すというものが考えられます。
ソースコードを見たところ、「X(目標地点)」の実体は整数型変数のようです。空文字だとその仕様も変えねばならないので、「-2」ではどうでしょうか。
4.「相手〜」について > > * オプションで「対象」を指定したときは「対象パイロット」「対象ユニットID」に > > 「相手」を指定したときは「相手パイロット」「相手ユニットID」に > > 代入される。省略されたときは「対象」と同じ。 > それからこれは不要だと思います。というのもこのコマンドでは自分と相手という二元的な関係は指示されないからです。それより常に対象のみを取るとした方が、結果的には間違いが減るように思います。
私の案のこの部分は議論の流れから、「コウさんは『相手〜』に代入する何か積極的な理由を見出しているのだろう」と思って書きました。私にはこだわりはなく、コウさんのご意見を待ちたいです。
5.範囲指定 > Appoint x y min max [option] > > x y min max > (x, y)を中心として範囲[min-max]が選択可能。これらを省略すると範囲無制限。
範囲指定オプションを付けるとすれば、既存のコマンドと統一させて、 X Y width height (X, Y)を左上隅にし、widthを幅、heightを高さとする四角形の範囲から選択する。
が良いと思います。
# 編集追記 おそらく誤解してたと気づいたので、追記します。 Unnamedさんの案の min, max は、マップ上の矩形範囲ではなく (x, y)からの距離を示し、このオプションは攻撃目標選択画面のようなものを実現させる手段、ですね? だとすれば、失礼しました。かなり有用な案だと思います。
その他の事項には、賛成です。
|
|