リーダーボード分解
- 2009-01-09
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やってるし……。