2009/02/26(木)実験 - デリゲートの渡し方
匿名メソッドの速度とか、どう渡すのが一番速いのかなー。
ちょっと気になったので。(1)~(4)で一番速いのはどーれだ。
class Test { class A { public int a; } class B : A { } void DeA(A obj) { obj.a++; } void DeB(B obj) { obj.a++; } void DoB(Action<B> act) { act(obj); } DoSomething() { DoB(DeA); // (1) DoB(DeB); // (2) DoB(delegate(B obj) { obj.a++; }); // (3) { // (4) Action<A> act = delegate(A obj) { obj.a++; }); DoB(new Action<B>(act)); } } }
それぞれ1000万回の実行時間を計った。
2009/02/08(日)指定した正規表現にマッチしなくなる操作をキャンセルするテキストボックス
追記: TextBox.Validatingでできそうです。車輪の再発明だった模様。
指定フォーマットを入力させたいとき、MaskedTextBoxは便利なんだけど、int型を受け取りたいとか、double型を受け取りたいとかそういう目的にはイマイチ使い勝手が悪いような気がしたので作ってみた。
たとえば、ユーザにdouble型を入れて欲しい場面があった。
ユーザがちゃんと入れてくれることを信じるわけにはいかないので、double.TryParseでエラー処理を書くのはもちろんなのだけど、その前の段階で少しでもエラーをサプレスできないかなと思った。
そして好奇心からごりごりとWin32で作ってみた。
デザイナで配置してRegExPatternプロパティに
^-?\\d*(\\.\\d*)?$
とか、書く。操作後マッチしなくなるような操作は受け付けない*1。Win32で作ったので、x64では動かないかもしれない。WindowsXPでは動いてるが、他のバージョンでは動かないかもしれない。そんなことをするくらいなら、素直にTryParseのエラー処理だけしておくべきなのだとも思うが。まぁ、好奇心だから。
最近、Win32のプラットフォーム呼び出しにあんまり抵抗がなくなってきた。やばいなぁ。
2008/12/16(火)GSDKでゲームを作ろう [0]
GSDKとは、xnaの前身であるManagedDirectXを薄めにラッピングして、
割と2D描画に特化させたゲーム作りのフレームワークなのだ。
GSDの、Quest of Feena とか ぱねりあ はこれを使って作られている。
まぁ、こいつを使ってゲームでも作ってみようかという話。
げーむふれーむわーく を検索
2008/02/24(日)autoFPS フレームスキップ モジュール
ゲーム向け?の言語のくせに、フレームスキップとかやってくれる命令ないですよね。
await は半端だし、フレームスキップの処理とか割とFAQなんじゃないのかな。
HSPで解説してるとこあまり見ないなぁ。
まぁ、DirectXとか使えば、その辺勝手にやってくれるし、標準命令でゲーム作る人あまりいないのかも。
まぁ、元々標準命令でゲーム作るんなら速度は出ないし、そんなもん気にしないで済むように作れってことなんだろうなぁ。
まぁいいや、とりあえずモジュール化しちゃえ。
このモジュールはスクリプトに組み込んで自由に使用できます。
2008/02/07(木)Win32 コンソール向きパイプ通信モジュール
何で今更こんなモノ、とか思わないでもない。
というか、誰か似たようなモノ作ってるんじゃないのかなぁ、
という感は否めないんだけど(笑
しかも、何に使うんだコレ(笑x2
今回は思ってたより時間かかってしまったなぁ。
予想+1時間くらい。コード量も+100行くらい。
なんで、pipe2なのかといえば、hspextのpipeの代替だから。
特にpipeputは呼び出しただけでシステムエラーに^^;
このモジュールはスクリプトに組み込んで自由に使用できます。
2008/02/02(土)アンチエイリアス文字描画モジュール
久しぶりに若干バージョンアップしたのでage.
2008. 2. 2 / ver 0.20 縦に描画位置がズレる問題修正と描画高速化。
2008. 5.14 / ver 0.21 描画クリップ枠が上に1pxズレていて落ちてしまう問題の修正。
mes命令に比較するとかなり重い(APIが重いから)ですが、
フォントからグリフを得て描画することにより、
綺麗で目に優しい文字を描画することができます。
このモジュールはスクリプトに組み込んで自由に使用できます。
2008/01/18(金)漢字の読みを得るには
2012.08.04追記。Windows8 RP対応。
MSIMEのCLSIDがかわっていて動かない。
CLSIDを直で書いていたのを、アプリケーションIDからCOM作ってQueryするように変更。
RTM版ではどうなるかわからないけど、たぶん前のWindowsとは互換性がなくなるのだろう。
追記ここまで。
難攻不落と思われた漢字逆変換問題だが、
A_Aと名乗る人物のたった一行の書き込みにより、
事態は急速に解決へと向かったのであった。
というわけで、モジュール化してみた。
春日の山に が しゅんじつのやまに とか出てくるが、
そこはご愛敬なのだと思う。
2007/10/12(金)HSPでキーフックしたいよ!
キー入力がフックできたらいいじゃない?
HSP3でキーボードフックを行うDLL+スクリプトです。
onkeyライクな命令で誰でも簡単に扱うことが可能(かも)。
#include "keyhook.hsp" khHook *onKeyHook ;//フックをセット if stat=0 : dialog "フック失敗" : end stop *onKeyHook ;// キーコードについては、getkeyのヘルプを見るか、「仮想キーコード一覧」でネットを検索すること。 mes "Code:"+ khKeyCode + " Name:" + khKeyName + " Stat:" + khStat if khKeyCode == 65 : return 1 ;// 試しにAだけ入力できなくしてみる。 return
小さいDLLを作るためのヒントになるかもしれない.vcproj付き。
※ ライセンスと免責事項
公序良俗に反しない限り自由に使用可。
作者はDLLの本体とそれが組み込まれた成果物について一切の品質を保証せず、
DLLの本体とそれが組み込まれた成果物によって起きた損害に対して一切の賠償責任を負いません。
キー□ガーとか、キー口ックソフトとか作れますが悪用厳禁でお願いします。
まぁ、普通のDLLなのでHSP以外からも使えば使えるはずです。
※ 履歴
2007/10/15 05:47 - キー入力を無効化した場合でも他のフックに通知するようにした。
2012/11/13 02:27 - LowLevelKeyboardHookをサポート。