リーフグリーン版(以下LG), 同様にファイアレッド版はFRと略すことにします, 間違ってFLとかRGとか書いているのを見て揚げ足を取ってはいけません, これらはファイアリーフとかレッドグリーンの略なんでしょうから…ポケモンのゴージャスリゾートにてこんな要求が来る, うーみゅ…
で, 一番謎なのが執事さん, あなたは何も無いところから現れてアイテムを渡すだけの存在ですか… アイテムは金になるのでゴージャスボールはルビサファでは手に入れるのが面倒だしねありがたく頂いているのですが…
英伝VIのサントラが届く, そういえば注文していたっけ…と存在を忘れかけていた聖狐ですが気にしない
これで曲名と曲の対応がちゃんと取れるようになる…資料集として重要なのです(謎)
さて, 50の質問の曲名を直すか…
それにしても, 聖狐はある意味節操なしというかなんと言うか, 英伝VIサウンドは全体的に好きだったりするのでどれもが捨て難いという優柔不断なことになってしまっています
この前書いたときには網羅的に聴く機会など無かったので結局ゲームの終盤付近の印象が強かった曲をチョイスしてしまった傾向にあったのですが… まぁあの辺の曲が好みの一つの極値であることは否定はしないのですがね…
それにしてもCDを買うたびにWMAプレーヤの類を欲しくなってしまう
結局一時的な物欲で収束してくれるのが唯一の救いなのだが, 欲しいなぁ…
『愛してる ただそれだけで 二人はいつかまた会える』 そんな甘い世の中だったらなぁ…
InputBoxは独自に特化したものを実装したので問題は無いが, もう一つVisualBasic名前空間にあったものがあったことに気がつく
Beep()メソッドの存在
イラロジの確認入力機能においてユーザの視線は画面ではなく元データなので画面表示で知らせることは出来ない音での通知は必須要素なのだが, 音の鳴らし方がいまいちよくわからない, 要調査
オブジェクトブラウザでSound, ImmediateのSubstringだったり, 意外…Media Speak, Beep等で検索してみたが殆どがInternet SDK, つまりはJavaScript on HTMLあたりが無いところを見るとWindows APIを呼ぶことになるのだろうか…
で, 結局APIベースで実装した結果
一応後々の資産になりえるので此処に書き記しておこう
まず,
using 直後のDllImportAttributeが宣言されている名前空間System.Runtime.InteropServices;
を最初に挿入する, 次に
この部分は続くメソッドに与えられる属性クラスを指定する構文, この辺は見慣れないが, この場合はこういうものだ程度に思ってればよさそう[DllImport("名前空間はプラットフォームSDKで該当する関数を調べてそこのライブラリの項目から".lib"を外したもの(or ".dll"にしたもの)を使えばよさそう, VB6のAPIビューアがあればそこから取ってくるのが一番簡単だが, その場合は型情報は別途変換する必要があることに注意, VB6と.NETには型互換性は無いUser32")] private static extern アンマネージコードのBOOLはマネージコードのSystem.Int32にマップされるのでVC#のエイリアスはboolじゃなくてintint MessageBeep(アンマネージコードのUINTをマネージコードにマップしたSystem.UInt32のVC#上のエイリアスuint uType);
をクラス内の適当な場所に挿入する
基本的にはこれで使えるんだけど, もう少し使いやすくするために次のようなラッパーを書く
private static void Beep() {
MessageBeep(Cだと何も気にせずにuintの引数に-1を渡せるのだが, C#ではご法度なのでキャスト, 単にキャストするだけだとまだコンパイラが文句を言うのでuncheckedコンテキストにぶち込む必要が, 誰だよUINTなのに-1を渡すなんて仕様にした奴は… ちなみに-1は標準の警告音という意味unchecked((uint) -1));
}
これでWindows APIのBeep(on Kernel32)とは似ていても別物なので注意, こっちは純粋に指定周波数の音を指定時間鳴らすもの, デフォルトが当然ないのでちと敬遠VBのBeep()とほぼ同じように使えるようになる
複数クラスから使いたければどこか一つのクラスにpublicで宣言しておけばOK, API関数の数があるときは新しくWin32といったクラスを作ることが推奨されているっぽいけど, 流石にBeep1つでクラスを新設する気にはなれなかったのでこの方法で
ところで, プラットフォームSDKドキュメントの中に出てきた定数って何処に実体の一覧があるんだろう…
最悪VB6のAPIビューアで良いんだけど, ちゃんとVS .NETの範囲内で調べる方法を知っておきたいなぁ…
唯一知っている方法は{VS .net}\Vc7\PlatformSDK\Includeの中からSDKドキュメントにある宣言ヘッダファイルを開いて検索するというもの, こんな方法以外に何かいい方法は無いのかなぁ… 直接読めちゃえば問題ないんだけど別言語のファイルだからなぁ… ま, 所詮別言語製のDLLを呼び出している限界といえばそれまでだけど
つーかBeep()ぐらいどこかに用意しておいてください > .NET Framework
(おまけ) 矩形の選択に便利な実装
Rectangle.Union(これらのサイズは1x1にでもしておく(始点Rect), (終点Rect))とやれば位置関係に関わらず始点と終点を対角線とするRectangleが帰ってくる, かなり便利