先週ああいったものの、いやあ、残念ながらもちろんまだできていません(^^;Aまあ、1週間でできる位ならもうできてます( ̄^ ̄)って、偉そうに言えるこっちゃありませんね(^^;;
そんな今週は、あいかわらずボタン作り(^^;コマンドがボタン駆動なので、ボタン表示の組み合わせがすべてを決めます。そして前回、一連の流れをまず作ってから…と、最後まで流したものの、いきなり修正する羽目になりました(T-T)
まず、コマンドの対象をあれやこれや指定して、最後までなんとかいきつきます。その間、本来押せない場合の制限やら、押してはいけないところを押さないようにしたりとか、もろもろのことはぶっ飛ばします(^^;A葉も木も見ず、ひたすら森全体を見て筋道を建てていきます。
やれやれ、でけた…と思って、いざ制限や、条件をつけようとすると…うまくいきません(~_~;)やっぱり枝葉の部分を無視したのはまずかったのか、論理的にうまくはまりません。
具体的に書いてみましょう。たとえば、関羽に対し、平原に砦を築かせようとします。コマンドとしては、関羽と平原と砦の指定が必要です。一連の流れとは、それぞれをボタンや一覧や地図から指定した情報を得、命令終了後に建築をし、完成すれば平原に砦ありとの情報を付け加えます。
では枝葉とはなんでしょう。まず、関羽がしそうな発言はこの際枝葉ですね(^^ゞお金がないとか、戦争中で建設できないとかが制限ですが、これも枝葉扱いでした。長江沿いでなければ、港も建設できないという、特殊な制限もあります。もちろん枝葉です。
ところが…(~_~;)まず、砦を選択して、それから城を選択するルートでプログラムを組んでいたため、その城で砦が建設できなかった場合、「一連の流れ」では問題がなかったりします。制限がないので、選択しさえすれば順番はさほど気にならないためです(--;しかし、たとえば砦を作れないというような制限を入れようとすると…
まず、砦を選択してしまっています。ということは、砦が建設できない城を、ユーザーが選択できないようにするべき、ということになります。しかし、建設できない、という制限は、それぞれの施設ごと、城ごと、様々な条件がありましょう。それをその城が選択できるできないという部分でいちいち検討していくと、その部分だけやたらめったら大きくなります(~_~;)こんなことは「一連の流れ」ではピンと来ません。制限を入れてみてはじめて気づきました(x_x)
先週は、これをなんとか押し込もうとしていましたが、制限に目が行けばいくほど、あかんなこれは、と(~_~;)まずもって制限の判定は、城の選択よりは砦の選択の方に向けるべきでしょう。だいたい、結局砦はどこの城でも建築できないというのであれば、城の選択より前に砦を選択できなくしておくべきです。
余談ですが、結局あるコマンドを制限などで実行できない、という場合に、コマンド自体は選択できるのに、ダイアログか何かで「砦は建設できません」とか表示させて、OKボタンを押させるというUI(ユーザーインターフェース)が装備されているプログラムがよくあります。なんか腹立ちません?(~_~;)それだったら最初っから押させないようにしろよ、って。
しかしまあ、作ってみれば身に沁みます(*_*)前回のボタン順列の嵐もそうでしたが、たとえばボタンを押してから判定するのと、押す前から判定するというのとでは全然違います。何が違うか。それは表示を頻繁に変えなければならないからです(~_~;)押す前から判定していれば、それだけで済むわけではなく、当然押せないボタンは消しておくとか、使用不可にする必要があります。それをあらゆる条件に応じてあれやこれやと変えるのはものすごくパワーがいります。ボタンを押させてから「〜はできません」と表示するだけのものとは全然違います。それだけでもそのプログラムのできがわかるというものです(^^;;
と、いいつつも、自分でできるかどうかは心もとないもので(^^;;市販のソフトですら、ろくなインターフェースを備えていないものもありますからねえ…
さてさて、閑話休題。砦を選択してから城を選択するより、城を選択してから砦を選択する方が、制限を最初から検討するには便利です。ということでせっかくつくった「一連の流れ」は作り直しです(T-T)もともとプログラムを「流れ」として設計するプログラムだとごっそりやり直しですが、部品部品を細々作って組み合わせるDelphiは、この辺の修正はまだましです(^o^)とはいえ、流れが変わる以上、結構な変更が必要です。
さらに、いったん枝葉に向いた視線は、一連の流れの枝葉を気にしだします。あちこちで制限や表示を直していくと、せっかく書いたプログラムはばっさばっさと切られていきます(T-T)って、切っているのは私ですが(^^;条件式を大量に並べていたのを、整理して統合して、美しく組み合わせて…そして最後に実は不要だ、となってばっさり(T-T)いやあ、きれいなプログラムになりました、なんてったって何も書いてないんですから…(ToT)
ここまで来ると、一連の流れがあいまいになったために、ムダに細かい枝葉を作った弊害が出てきている、という感じですね(~_~;)しかし、ま、紙の上にこうなればこうなる、こういうものがある、といった仕様を書くより、現にプログラムで書いてみて、あれこれ、とした方がムダがなくてよい、という気がするんです。まあ、書いてみないと発想がちゃんと表現できるかどうかわからないですからね〜(~_~;)
ということで、枝葉を書いては消し、書いては書き換え、書いては直ししています。まあ、積み木遊びと一緒で、組み立てては壊し、また組み立てては壊し、これが楽しいのかもしれません(^o^)って、ムダとか言ってる人の発言とは思えませんね(^^;;
それでも、最初の一連の流れと、枝葉による修正した一連の流れで、だんだん他のものにも通用する土台となってきている気がします(^O^)今回は、SWGの時に要望のあった、選択できる城だけ色別表示してほしい、という内容も実現できそうですし、なかなかいい感じです(^-^)それではまたまたプログラムに移ります(^^;;
|index|
このページへのリンクはフリーです。