[AIOth/LINQ] トリアタマでのLINQ

投稿日 : 2008年8月18日 15:00

トリアタマAIでは、設置可能かどうかというチェックにLINQ使ってます

設置予定場所から右上方向を取得する例では以下の条件です

・現在の盤面情報はFieldの一次元配列変数FieldState()
・設置予定の位置はSTONEPOSITIONの変数SetPosition
・盤面クラスFieldには以下のメンバを含む
 →Short型のプロパティStone(石の状態)
 →STONEPOSITION構造体のプロパティPosition(升目の位置)
 →STONEPOSITION構造体にはShort型のX、Short型のYが所属


Dim UpperRight = From n In FieldState _
                 Where n.Position.X > SetPosition.X _
                 And n.Position Y < SetPosition.Y _
                 And (n.Position.X + n.Position.Y) _
                      = (SetPosition.X + SetPosition.Y) _
                 Order By n.Position.X Ascending


これでUpperRightには、設置位置から順に右上方向への盤面情報が入ってきます。
元々盤面情報の配列を二次元にしとけばLINQ使うまでもないかもですが、
自力走査させるのが面倒だったのと勉強兼ねて。

コメントの入力
タイトル
名前
Url
コメント