2010年01月10日

ナノピコ教室のプログラムをSilverlightアプリへ

   このエントリーをはてなブックマークに追加 Clip to Evernote
随分昔に出版された『ナノピコ教室・プログラミング問題集』(駒木悠二+有澤誠 編 共立出版株式会社)に掲載されている問題をC#で解いたものを、昨年前半にこのブログで紹介しました。

現在、これらのプログラムを再度見直し&修正して、
Gushwell's C# Programming Pageの「C#プログラム小品集」に移そうとしているところです。

すでに、いくつかは移したのですが、
「オセロ最短詰め」「数独を解く」「梅花碁」「8クイーンゲーム」「面積最大の領域」などは、せっかくなのでコンソールアプリからSilverlightアプリに書きなおしブラウザ上で動作を確認できるようにしようと考えています。

これらのプログラムはすべて2次元の盤データを扱うのですが、それぞれ、その時の気分でBoardクラスを作成していたので、この際、すべてに共通する BoardBaseクラスを書き、これから派生させて使うようにしようと検討中。

そうすれば、今後、2次元のデータを使うBoardクラスを書く際は、このBoardBaseクラスが使えることになりますし、
僕の書いたコードで学習しようとしている人(そんな人がいるのかというのは置いといて...)にとっても、似たようなコードを何べんも読み解く必要が無くなるので良いのかな。
ついでに、画面の描画もBoardCanvasというクラスを作り共通化しようとしています。

そして、

board[x,y] = BlackPiece; // x,yの位置に黒石を置く

と書くと、モデルであるBoardオブジェクトが変更されるとともに、画面も更新させられればGood。
Boardクラス内でイベントを発生させ、BoardCanvasでイベントを受け取り、描画させればいいかな。
細かな点は、いろいろ試行錯誤して決めていくつもり。

ところで、Silverlightをいじり始めた時は、Paintイベントが無いのに違和感がありましたが、パネルオブジェクトに対し、

panel.Children.Add(element);
とか
panel.Children.Remove(element);
とするだけで、描画/消去ができるのは、思いのほか便利だと感じ始めています。



 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/51949058