WindowsのMessageBox関数のメッセージにNULLを指定すると、ダイアログボックスは表示されず、戻り値は"0"となります。GetLastError関数が"0"を返すことから、エラーとは認識されていません。奇妙な仕様です。
ViewにはVCLのコントロールを使い、他に用意したクラスは、Model、Selections、Commands、といったもの。Modelはデータの管理と編集、Selectionsはコントロールの選択状態、Commandsはアクションから呼び出されるコマンド群のファサード、といったように役割を分担させました。
KDEで動作するMnemosyneというプログラムのスクリーンショットを見てから、いつかは自分でも作ってみたいと思っていた種類のものです。
Flashexamの原型はVBScriptで書いたスクリプトで、メッセージボックスを使ったインターフェイスを採用していました。
操作に関しては、シンプルさを優先しました。データファイルは読み取り専用、編集はテキストファイルで行う形になりました。これはVBScript版の名残です。
というわけで、デスクトップに置かれたアイコンの位置を記録・復元するプログラムを物色しました。結局、渡邉昌祐氏製作"アイコンの思い出"を使っています。ドロップダウンリストから選択するだけでアイコンの位置を復元できるという手軽な操作性になっています。
AppleIIGS版の解答はAPPLE2.ORG.ZAの片隅に、MS-DOS版の解答はGamesoverにありました。
解答画像、ピースの形状、完成時に表示されるメッセージの設定を済ませた後、"Save"をクリックすると.EXEファイルが作成されます。作成されるファイルのサイズは、400KB程。もちろん、プレゼント用途に限定せず、自分で遊ぶためにパズルを作成するためにも使用できます。
大きな画像は、800x600ピクセルのスクリーンでプレイするのに丁度よいサイズに縮小されます。プレイする時も、スクリーンの解像度を800x600ピクセルに変更すると遊びやすくなります。
どちらかと言えば、詳細な設定や演出のバリエーションを楽しむと言うより、手軽にジグソーパズルを作成できる、気軽にプレイできる、といったところに重点が置かれています。難易度は、ピースの数を多くすることによって上げることができます。
製作者のウェブサイトでは、他にもプログラムが公開されています。"上海"と同じルールの"Desktop Taipei"、などなど。"Astra Gift Maker"で作成されたジグソーパズルのサンプルも置かれています。
画像にはポイントとなる個所があるものです。人物画なら顔やセクシーな部位といった具合に。"動かないジグソーパズル"では、ポイントとなる個所が描かれたピースは、一度はめ込んでしまえはそれ以降触れることはありません。しかし、"動き続けるジグソーパズル"では、ポイントが描かれたピースをはめ込む感動を何度も味わうことができます。
"動き続ける"という仕様には問題点もあります。それは、目を疲れさせること。また、長時間プレイした後では、目を閉じても画像が流れ続けているような感覚が残ります。もう一つの問題点は、マシンパワーを必要とすること。自分の環境では、400x300のサイズがかろうじて遊べる最大サイズでした。ずいぶん旧いモデルなので仕方ないのかもしれませんけれど。
今思うと、JScriptはコンソール用プログラムに、VBScriptはGUI用プログラムに向いているような気がします。VBScriptの強みは、何と言っても文字列の入力ダイアログボックスが利用できることにあります。これひとつでインタラクティブ性の幅が大きく広がります。また、メッセージボックスはWindowsと同等のものを利用できます。これらの点から、WindowsらしいGUI用プログラムを作成するには、JScriptよりもVBScriptの方が向いていると思います(WSHでは他言語のコードを動的に呼ぶこともできるけれど、当然ながら手続きが増えます)。
そして、しばらく使ってみて思うのは、VBScriptの仕様には謎が多いということ。ドキュメントを読み飛ばしてしまっているだけなのかもしれませんが、ネットで調べたり実験してやっとわかるという山や谷をいくつも越えねばなりませんでした。ということで、メモを兼ねてVBScript Tipsのコーナーを開設しました。ぜひご覧ください。
アクションリストのOnUpdateイベントで処理する方法があります。しかし、マウスでアイテムが範囲選択される場合、OnUpdateイベントは、マウスのボタンが離された時にのみ発生します。つまり、コマンドの更新はまとめて行われることになります。
一方、フォルダウィンドウ内のファイルオブジェクトを範囲選択すると、アイテムが一個選択される度にステータスバーのメッセージは更新されていきます。この挙動はどうやって実現するのか。
どうやら、ウィンドウメッセージをポスト・ハンドルすればできるようです。具体的には、"アイテムが選択される" => "変更通知のハンドラ内で独自メッセージをフォームにポストする" => "独自メッセージのハンドラでUIの状態を更新する"という手順になります。ただし、更新の頻度を押さえるための、InvaludateやUpdateの類の工夫は必須と思われます。
個人的にはこれまで何のアイコンも設定せずにやり過ごして来たのですが、ファイルの整理を始めると、やはり不便を感じます。そこで自作しました。
自作といっても、AppleWinのプログラムに埋めこまれているアイコンを一部変更しただけです。フロッピーディスクのラベルに描かれている四角形のワンポイントを赤から青に変えました。
青はなんとなくPC-8801のイメージに合致します。また、M88のアイコンではロゴの背景に使われています。これ、なかなかいいと思います。
"ファイルの種類"ドロップダウンリストには、次のようにヒントが表示されます。
ダイアログボックスの種類 | ヒント |
---|---|
開く | 表示するファイルの種類の一覧が表示されます。 |
保存 | 保存するファイルの種類を指定します。 |
"開く"ダイアログボックスでは、このドロップダウンリストは、ファイル一覧のフィルターとして動作します。一方、"保存"ダイアログボックスでは、フィルターとして動作するだけでなく、保存するファイルの拡張子を自動補完するためにも使われます。例えば、"Plain Text (*.txt)"を選択した状態でファイル名に"Document"と指定すると、最終的には"Document.txt"というファイル名が適用されます。加えて、保存するファイルのフォーマット(テキスト、リッチテキスト、Word文書等)も決定します。
ここで注意しなければならないのは、"保存"ダイアログボックスでの"All (*.*)"という選択肢です。これを選択した場合、どの拡張子およびフォーマットが適用されるのでしょうか。どうやら慣習があるようです。
メモ帳のような一種類の拡張子およびフォーマットにしか対応していないプログラムでは、それが適用されるようです。また、ワードパッドのように多種の拡張子およびフォーマットに対応するプログラムでは、"All (*.*)"という選択肢は初めから用意されないようです。
以前のバージョンでは、WindowsFromPointおよびEnumChildWindows APIを使ってポインタの位置情報からコントロールの特定を行っていました。しかし、この方法では上手くいかないアプリケーションがあります(例: mIRC)。このバージョンからは、WindowFromPointおよびChildWindowFromPointEx APIを使うことで問題を回避しています。
また、例えば、テキスト入力コントロールの上に使用不可のボタンが置かれている状況で、両コントロールの重なり合った範囲をクリックするとどうなるか。実験してみると、テキスト入力コントロールに対してクリックの反応が起こりました(フォーカスが移る)。
Wheel Here 1.4.2から、使用不可のコントロールは、ウィンドウメッセージの転送対象から外されるようになっています。
オリジナル版は、1982年にリリースされました。シナリオ・グラフィック共にAntonio Antiochiaが担当しています。タイトル場面では、"Transylvania!"と、感嘆符入りでロゴが描かれます。
Double Hi-Res版は、1984年にリリースされました。グラフィックがDouble Hi-Resグラフィックモード用に書き直されています。グラフィックを担当したのは、Marsha Meuse。各場面が画面大に描かれるようになり、これまではテキストエリアの後ろに隠れて見えなかった部分を見ることができます。狼男はズボンと靴を履いている、サブリナ姫のドレスは足がすっぽり隠れる程の丈、といった発見があります。新しく追加されたカットもあります。
Comprehend版は、1985年にリリースされました。"Comprehend"という実行環境で動作するように作り直されたバージョンです。グラフィックは16色ですが、オリジナル版に近い雰囲気に戻っています。描画が格段に速くなり、より多様なコマンドを受け付け、メッセージが大小文字で表示されるようになり、結果として、最も遊びやすいバージョンになっていると思います。ゲーム内容には若干の変更が加えられ、トリックと連携する"ビジネスカード"がパッケージに付属します。このバージョンから、版権の名義がPenguin SoftwareからPolarware/Penguin Softwareに変わっています。
ちなみに、PC-8801用の移植版は、オリジナル版かDouble Hi-Res版を元にしていると思われます。Comparehend版特有のトリックが入っていないからです(参考: "トランシルバニア - レトロAVG攻略")。
Freeware Guideがなぜ64ビット版にこだわるのか、よくわかりません。64ビット版Windowsでも32ビット版のソフトは動作するわけですから。
最新作の"ぷれ版パズル"には、十種類の絵柄が入っています。一回のプレイ時間は数分程。気分転換に丁度よくできています。
ところが、発見もありました。同サイトからダウンロードしてあったファイルを調べてみると、いくつかのアーカイブファイルには複数の曲が含まれていることがわかりました。なぜか"Zippy Race"のアーカイブファイルに"Pacman"が入っていたり…。
作者の方にはサイトの再開を望みます(と、ここに書くのは、連絡方法が無いからです)。
ただ今、MVC(Model-View-Controller)辺りで試行錯誤してます。
杏奈ちゃんが"アオゾラララ"のキューを出すところは、見所の一つ。噛み噛みで上がりやすい彼女にとって雰囲気の切り換え役は、ちょっとした試練だったのではないかと思います。でも上手く行きましたね。
手に持ったドーナツから測って、あの子は30cmくらいの妖精なのでしょうか。それとも大きなドーナツが好きなだけ?