円と円というより、円と点だったので、それっぽくしてみた
当たってないとき
当たっているとき
マウスポインタが円に入ったらtrue。円から出ていたらfalse。
// 当たり判定のある円の中心
int tx = this.PointToScreen(new Point(0,0)).X + 150;
int ty = this.PointToScreen(new Point(0, 0)).Y + 150;
// コントロール上のマウスの位置を取得
int x = Control.MousePosition.X;
int y = Control.MousePosition.Y;
int r1 = 100; // 当たり判定のある円の半径
int r2 = 0; // マウスポインタの半径
int a = tx - x;
int b = ty - y;
int r = r1 + r2;
if (a * a + b * b <= r * r) // マウスポインタが円の中に入っていれば
{
//略
}
参考サイト
private void match_button1_Click(object sender, EventArgs e)
{
try
{
Regex rx = new Regex(regex_textBox.Text);
TextBox[] tb = { match_textBox1, match_textBox2, match_textBox3, match_textBox4, match_textBox5 };
// マッチtextboxを空に
for (int i = 0; i < tb.Length; i++ )
{
tb[i].Text = "";
}
// マッチしなかったら、
if (!rx.IsMatch(string_textBox.Text))
{
MessageBox.Show("マッチしませんでした", "Match false");
return;
}
Match m = rx.Match(string_textBox.Text);
// マッチした文字列をテキストボックスにいれる
for (int i = 0; (i < m.Length) && (i < tb.Length); i++)
{
tb[i].Text = m.Groups[i].ToString();
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString(), "error");
}
}
参考サイト
標準では、IME はMicrosoft IMEがつかわれている。だけど、あまりいい変換をしてくれない。とんでもない変換をしてくれるのもしばしば。また、なぜか自分の環境では単語登録ができない。
Macの方ではATOKをつかっていて、こちらは標準のものと比べれば、よく働いてくれている。だけど、金がかかるので、自分のもっているOS全部にATOKをいれるのは、金銭的につらい。
フリーのもので、なにかないかと探してみて、Social IMEを発見した。これは、Social IME利用者の間で辞書を共有するというもの。これがなかなか便利。マイナーな単語が登録されていたりして、これが面白い。
問題点は、予測が重いこと。ケータイでよく使われている機能ですね。便利だけど、つかうとフリーズしたかのように重いのがきつい。単語の変換するたびに通信しているようなので、回線が細いときついのかも。
もうひとつの問題点は過去に選んだ単語が、次に変換されるとき、変換候補一覧の単語の位置が変わらないこと。たとえば、Microsoft IMEならば、"おれ"と入力して、"折れ"を選んだとき、つぎに"おれ"と入力したとき、"折れ"が変換候補の上の方ににくる。しかし、Social IMEでは、変換候補の単語の位置は変わらない。よくつかう単語の場合、変換したい候補が後ろのほうだと、いちいちそのページの位置に移動しなくちゃならない。
これらが、けっこう面倒なので、日本語だけを入力するときはMicrosoft IMEで、顔文字を入力するときはSocial IMEを使っている。すっかり顔文字入力用になってしまった。その登録単語数は魅力的ですし。
やはり、日本語入力をきちんとしたいなら、ATOKを買ったほうがいいかな、と思う今日この頃。
ちなみに、IMEの切替のショートカットキーは"Ctrl+SHIFT"でできます。
Ustreamとか、justin.tvとかいろいろあるけど、これらのページを開くと、ブラウザが強制終了してしまう。今日、blogtvというサイトでも試してみたけど、だめだった。javascriptをオフにしていると全く問題ないので、javascriptがなにかしてるんだと思うけど、よくわからない。ウェブカメラ関係のなにかだと思うけれど。
うちの今の使用しているOSは、MacOS10.5でBootcampを用いて、WindowsXPを利用している。ブラウザ強制終了は、Windowsのブラウザだけで、発生する。Macのブラウザでは起こらなかった。
はてなで同じような問題に直面している人がいたけれど、その人はMacの場合だったし、問題が解決したわけではなかった。ふむ、どうしたものか。
参考サイト
コメントがあるにもかかわらず、コメントフィードが表示されていなかったので、なぜか調べてみた。
実際のコメントフィードは作成されていたので、Feed2JSが原因と思った。Feed2JSによるタイトルの最大表示数を、コメントフィードにあるタイトル数より大きくすると表示されなくなるみたい。最大表示数を、タイトル全部表示するようにするか、フィードのタイトル数より少なく設定すれば、表示されるみたいだね。
たとえば、Feed2JSで作成されたコードの一部が、
<script language="JavaScript" src="http://feed2js.org//feed2js.php?src=http%3A%2F%2Frockmanjuno.blogspot.com%2Ffeeds%2Fposts%2Fdefault&chan=y& num=10 &desc=1&utf=y" type="text/javascript"></script>のようであったら、
<script language="JavaScript" src="http://feed2js.org//feed2js.php?src=http%3A%2F%2Frockmanjuno.blogspot.com%2Ffeeds%2Fposts%2Fdefault&chan=y& num=5 &desc=1&utf=y" type="text/javascript"></script>に直せばいい。つまり、num=...の後につづく数字を変えてあげればいい。Feed2JSでつくりなおしてもいいけどね。
それにしても、まあ、ブログ全体のコメント数が、少ないと起こる問題だよね。(´・ω・`)ショボ~ン
シリアライズ、デシリアライズを簡単(笑)にするクラスを、ジェネリクスを用いて作成。意外に時間がかかった。デシリアライズしたオブジェクトから、画像のパスを受け取り、それをPictureBoxで描画させようと思ったけど、そこまでいけなかった。
public class XMLSerializerClass<T>
{
private T Object_Type;
public System.Xml.Serialization.XmlSerializer Serializer;
public T ObjectSelf
{
get { return Object_Type; }
set
{
this.Object_Type = value;
Serializer =
new System.Xml.Serialization.XmlSerializer(value.GetType());
}
}
/// <summary>
/// コンストラクタ
/// </summary>
/// <param name="obj"></param>
public XMLSerializerClass(T obj)
{
Serializer =
new System.Xml.Serialization.XmlSerializer(obj.GetType());
this.ObjectSelf = obj;
}
//略
}
このままだと、「常に規定値 null を使用します」と言われてしまうけど。わがんね。
動的に作成したPictureBox5つに、emf画像を読みこませて表示。また、jpg画像も表示させてみた。まえに書いたけど、兄弟のPictureBoxは透過しない。親子なら可能。そのため、赤い丸の周りは、フォームの背景画像が表示されている。PictureBoxで表示したjpg画像は表示されない。すっかり忘れていたけれど。
private PictureBox[] pb;
private void createPictureBox()
{
this.pb = new PictureBox[5];
for (int i = 0; i < pb.Length; i++)
{
this.pb[i] = new PictureBox();
this.pb[i].Height = 10;
this.pb[i].Width = 20;
this.pb[i].BackColor = Color.Transparent;
// このコントロールをフォームに追加する
// これをしないと表示されない
this.Controls.Add(this.pb[i]);
}
}
private void loadPicture( string file_name )
{
Bitmap bitmap = new Bitmap(file_name);
int limit = pb.Length;
for (int i = 0; i < limit; i++ )
{
this.pb[i].Image = bitmap;
this.pb[i].Width = this.pb[i].Image.Width;
this.pb[i].Height = this.pb[i].Image.Height;
}
}
参考サイト
今回は、なかなかのアップデートだった。サブ武器DE.50 AE、メイン武器M3 GREASEGUNも登場。新たなスチールマップ、工場ダブルオーが登場。
なぜ、ダブルオーなのか詳しく。ガンダムの見すぎじゃないだろうか。好きだけど。その旨を良しとする!
早速、DE.50 AEを購入。エイムがしょぼい自分にはきついかもだけど、音がいい! 音だけでも満足です。たまにだけど、活躍する場面はあるしね。画像を撮った後に、DEで1killだけできた。
さらに、メイン武器も飽きてきたので、G36を購入。新しい武器は楽しい。スコープがいい感じ。PaperMan wikiにも書いてあったけど、見本と違ってテカテカしてないのが、ちょっと残念。とりあえず、しばらくはG36で遊んでみよう。
スコープが実用的で、楽しかった。いつになるかわからなけど、今からAUGの実装が楽しみだ。
主にXmlSerializerの勉強。画像は作成したXMLを、XMLEDITOR.NETで開いた様子。
いちいち、XmlWriterとかでXMLをつくるのは面倒。XmlSerializerをつかえば、オブジェクトの内容(publicのみ)を、簡単にXMLとして保存、読み出しができる。独自クラスも可能。ArrayListはキャストが必要だけど、シリアライズ可能みたい。便利な分、いくつかの問題もあるようだけど。
詰まったところ。独自クラスをシリアライズするときは、classの前に、publicを忘れないように。publicを忘れると、「保護レベルの設定が原因で '(省略)' にアクセスできません。パブリックの型のみ処理できます。」と怒られる。
public class tes
{
//....
}
エラーメッセージの日本語を解読するのに、時間がかかる・・・。
参考サイト