リーダーボード分解

 static void Main(string[] args)
 {
     var service = new XBLLeaderboardSvc.ServiceSoapClient("ServiceSoap");
     var result = service.getLeaderboardNearGamertag(2, 4, "SeaWeeze", 10)
         .Skip(1) // 最初の1個目は値の個数なのでスキップ
         .Select((value, index) => new
         {
             value = value,
             index = index / 3,
             attr = (index % 3 == 0) ? "Rank" :
                    (index % 3 == 1) ? "Tag" :
                    "Score"
         })
         .GroupBy(t => t.index, t => new { t.value, t.attr })
         .Select(g => new
         {
             tag = g.First(t => t.attr == "Tag").value,
             rank = int.Parse(g.First(t => t.attr == "Rank").value),
             score = int.Parse(g.First(t => t.attr == "Score").value)
         });
 }

今年はプログラミング分を強化したいので、コードも張り付けていこう。勿論恥ずかしいけれど、照れてても成長に繋がらないと思うので、積極的に行きたいです。言語は基本的にC#3.0。というわけで、前回、GeometryWarsのLeaderboardの値を取得するの続き。ただの文字列配列で帰ってくるので分解しなきゃねー、ということで分解、まで。この後の予定は未定。ゆったりとSilverlightで簡単なグラフでも作ってから本格的に考えようかな―、と思っています。

サービス参照を追加するだけで、メソッド一発(getLeaderboardNearGamertag())で軽く取得出来る。これは楽ちん。配列はLINQを使って分解することにしました。3つ区切りなので3で割ってインデックスと属性振ってグループ化してタグから匿名型作って……。何かイマイチ。attrが野暮ったい。この辺、何とかしたい気はとてもする。

と、進捗的にはつまり全く進んでないということですね! いや、ここずっとexception conflictやってるし……。

Profile

Yoshifumi Kawai

Cysharp, Inc
CEO/CTO

Microsoft MVP for Developer Technologies(C#)
April 2011
|
July 2024

Twitter:@neuecc GitHub:neuecc

Archive