kr_ryo 徒然日誌 <2004年9月12日分>

三國志製作記74〜葉を見て森を見ず〜

いやあ、地震も台風もこちらはほとんど影響がなく、よかったというかなんというか(^O^)いやあ、地震でタンスの上から物が落ちてきてパソコン直撃!というのだけとにかく恐れていました(^^;;

さてさて、そんな防災対策中(?)の今週は、まず前回のボタン順列の答から(^O^)色々考えてみて、その、最初の発想からしておかしいと気づきました(^^ゞというのは…

順列、です!前回悩んでいたのが、ひたすら正しい順列を考えていたことが問題だったのです。どういうことか。つまり、たとえばABCDEFとあって、Fが3番目に来るには、Fの前のABCDEのうち2つが正しい順番で並んでいなければならないと当初は思っていました。それはABからはじまって、AC、AD、…DEときて、それと、F、だと。

ところが、オブジェクト指向的発想がよかったかどうかはわかりませんが(^^ゞボタン本位で考えてみると、ようやくひらめきました(^O^)すなわち。あるボタンの表示位置自体は別段前のボタンのならびに影響されません。……つまり、Fの前がどういう順列であろうと、何かボタンが2つあれば、Fは3番目に表示すればよいのです!

あ゛ー!簡単なことじゅあああ!!(-o-;)まさに定義による発想の縛りです。順列と考えたのがいけませんでした。表示させるプログラム上の順番だけ、順番通りであればよかったのです。まずAの表示の有る無しを検討し、有れば表示数を1増やし、つづいてBの表示の有る無しを検討し、有ればそれまでの表示数で表示位置を変更し…としていけば、そんなに行数も増えませんし、非常にすっきりします。ありゃ!

ということで、ボタン表示はなんとか目処がつきました(^^;;それにしてもいっぱい増やさないつもりでいたコマンドがそこそこ増えてきました(^^;;それでも、開墾とか商業とか、どっかで聞いたようなコマンドは登場しません( ̄^ ̄)あ、屯田はあります(^^;Aそんなコマンドをひたすら、名称、を作っていきます。名称だけです(^^;A名称だけで、違いはよくわかりません……(^^;;;いや、もちろん違えるつもりではありますが、パラメータがまだはっきりしません。パラメータとコマンドはやっぱり絡み合うと思うんですよね。それとそこにどう武将が絡むか。そこの方が問題ですね。かつての武将インフレ&デフレの話もありますし、また、できればコマンドを命じず放っておけば、勝手に何かをはじめたり、はじめていいか、と聞いてきたりとかできるコマンドがいいですね(^-^)

そこそこコマンド名称を考えながら、まあ、机上ではうまくできているつもりでも、パラメータの修正を実際に行おうとすると、これがまた、どこから手をつければわからない(~_~;)

いや、まずはパラメータをうんぬんする前に、コマンドを実際に実行して、必要な情報を指示し、実行や中止を決定し、成否を決定してから、ようやくパラメータを処理し、結果を処理する、という一連の流れが必要になります。文字で書くと複雑ですが、実際にプログラムを書くとやっぱり複雑です(--;)

作りなおす前のプログラムでの反省として、色々な部品の使用法がわからずテストしながら使っていたせいもありますが、あるコマンド専用の一連の流れを作ってしまっていた、ということがあります。往々にして最初に使う部品がうまく動かないせいもあり(i_i)あれやこれやと動くようにいじくりたおします。その過程で当初予定していたコマンドではうまく動くものの、他のその部品を使うコマンドのことは考えていない作りになっていたりするものです(T-T)

そして、他のその部品を使うコマンドを作る段になって、ちょっといらう(いじる)と、もともとのコマンドがうまく動かなくなったりして(ToT)無理無理に他のコマンドをもとのコマンド風に間借りした感じで作り込むことになっていました。それが増えだすと、だんだん何がなんだかわからないスパゲッティコードになっちゃう、と。うーむー!

それだけではなく、ある一連の流れの途中で、気づいた時から、押しちゃいけないボタンや、動かしちゃいけない命令にいったりしないように制限をかけたりします。しかし、別の流れでは必要だったりして、その段階で条件設定をしたり、しなかったり。いずれにせよ、メインの流れにいく前にいろんな脇道や行き止まりが気になり、あれやこれやと書き加えていきます…またスパゲッティ風ですね(--;

このスパゲッティのよろしくない点は、わけがわからない、というだけでなく、いい加減整理しようとした時、いろんな所で影響が出て、それもまたなおさないといけない点にあります。先の上の話でも、もともとのコマンドの流れは整理されればちゃんと動くかどうか怪しいですし(^^;Aメインの流れ以外の部分は整理するとエラーの束をまき散らします(ToT)こんな風にひとつなおすだけで大変です(-o-;)

いっそのこと一から…と作りなおしたプログラムでも、そろそろ怪しい感じの量に増えてきました(^^;しかし今回は、木を見て森を見ない前回の轍は踏まないように…!

まず、あるコマンドを例として、一連のメインの流れだけ記述します。脇道はとりあえず無視です。まさに枝葉の部分ですね。その際も、あるコマンド専用風の作りでなく、別のコマンドでも使い回しのできる感じで最初から作ります。あるコマンドの流れを作るんではなく、あるコマンドを例として、コマンドの流れをまず作る、という感じです。これが完成してようやく他のコマンドを載せてみて、さらに枝葉の部分をつけていく、と、こういう感じが製作にはいいはずです(^-^)

いいはずです、と書いているように、実はまだ一連の流れの製作途中です(^^;;;今ちょっと、コマンドを命じた結果、たとえば関羽が「かしこまりました」という発言があったとして、その発言をボタンを押して消すか、どうか、というところで迷っています(~_~;)

SWG風の、右クリックで止め、左クリックで先へ進み、ほうっておいたらしばらくしたら消える、という感じが一番いいんです(^-^)しかしDelphiの場合、HSPと違って、ひたすらプログラムが走っているから足踏みさせていれば止まっているように見える、というのではなく、最初からプログラムは止まっているため、動かすにはボタンを押すとかなんとかしてアクション命令を出さないといけないイベント駆動型なのが問題なのです。どういうことかというと、表示を止めておくとして、次の表示やコマンドに進もうと思ったら、明示的に何か人間が命令をボタンなどで与えないといけません。そうでなく、時間待ちを与えようとなんとか考えているんですが…なぜかうまくいきません(~_~;)それをなんとかしよう、というところで、気分転換にこの日誌です(^^;;

ということで、意外と進んでいる三國志製作、来週あたりもしかしてできてる…?(^^;;;;;;

index

〔TopPage〕

このページへのリンクはフリーです。
このページについてのご意見、ご質問などは、kr_ryo_green@yahoo.co.jpまでお願いします。
Copyright 2004© kr_ryo All rights reserved.
訪問件数