« ハマった | トップページ | 少しずつ、少しずつ。 »

2007年1月21日 (日)

モガキ中(感謝)

この間からはまっているRacing双六の改造ですが、いなあもさんmizuno-amiさんの両大先生から、非常に丁寧なアドバイスを頂きました。

ありがとうございます~!!(感涙)

で、それを参考に対策案を検討中。だいぶ見えてきた気がしますが、時間の関係でまだ修正版のプログラミング&テストは出来ていません。

とりあえずお二方へのお礼と、自分へのメモを兼ねて、これまでの経緯と今後の修正予定について書いてみたいと思います。

まず、ver1.0(人だけで動作させていたとき)は、こんな感じの処理フローでした。

Ver10

mizuno-amiさんほどシンプルに書けません。すみません。黄色の部分が、mizuno-amiさんの言うところの「順番管理」のところです。

で、次にcomプレーヤーを組み込んだときにどうしたかというのが、次のフローです。

Ver12_1

画像が何か変ですが、クリックして拡大すればちゃんと見えるのでご勘弁を。既にスパゲッティ状態ですね^^;。comプレーヤーは、入力を待つことなく自動的にルーレットを回してコマを進めたいので、その部分をイベントモジュール内のうす緑色の部分に書いています。

ここで問題だったのは、イベントモジュール内にループを埋め込んだ事。イベントが起きたときに呼ばれるのがイベントモジュールなわけで、そのモジュール内で処理が進行している間は、他にどんなイベントが起きても受け付けてくれない。これがver1.2のバグなわけです。

で、このループをイベントモジュールの外に出してやろうと考えたのが下の改造案1。

1

ループをフォームのアフターコードに移し、紫色の部分を埋め込む事で、comプレーヤーの動作中にイベントが発生しても、うまくイベントモジュールに処理を渡す事が出来ます。

ただ、もはやコードは複雑怪奇^^;

しかも、イベントモジュールの最後の「redraw」を実行した瞬間、メインフォームが真っ白にクリアされてしまうと言う問題が発生し、実用になりません。で、昨日のNSBなかよし掲示板へのヘルプとなったわけです。

ここで教わったのがタイマーイベントというもの。で、大先生方のアドバイスを元に考えてみたのが次の解決案。

2

ver1.2に近い構造ですが、イベントモジュールの最後に、次がcomプレーヤーの場合にタイマーイベントを仕込むようにしてみてはどうかと考えています。これだと、次がcomプレーヤーの場合に、一定時間後に自動的にイベントモジュールが呼ばれるので、うまく動作するのではないかな、と。

今日はここまで。また月曜日以降にコードを書いて試してみようと思います。

|

« ハマった | トップページ | 少しずつ、少しずつ。 »

コメント

うわぁ!開発中のフローが見られるなんて!!(嬉しぃ!)面白い!凄い!

投稿: 鶴丸 | 2007年1月22日 (月) 09時29分

>鶴丸さん
こぎたない舞台裏をお見せしたようで、失礼致しております(笑)
数多くのPalmwareプログラマの方々からすると、「こんなレベルで悩むな!」と怒られそうですが、まあこんなレベルのやつでもプログラムが公開できるのがPalm界の懐の深さだと勝手に思ってます^^;

投稿: MA-CY | 2007年1月23日 (火) 08時40分

いえいえ、プログラムを組まれる方って、本当に凄いと思いますよ。
PPLの方で、作られて行く過程を体験しましたが、感動しましたもん。
これからも楽しませて下さいo(^^)o

投稿: 鶴丸 | 2007年1月23日 (火) 13時28分

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/140067/13593941

この記事へのトラックバック一覧です: モガキ中(感謝):

« ハマった | トップページ | 少しずつ、少しずつ。 »