先月既に実行中のアプリケーションの統計によると:
7番目のバージョンは、インストールの総数の30%を占めることがわかります。 アイデアは、7.1 +バージョンで利用できるトレーニング用のアプリケーションを開発することです。
ゲームポイントを作ることにしました。
1つのポイントからゲームを開始します。 各レベルで、新しいポイントを選択します。 古いポイントを選択すると、失われます。
アプリケーションストアで開発およびレイアウトされた日ごとに受信した統計:
開発
Windows Phone 7のアプリケーション開発はVisual Studio 2012でのみ行われることに注意することが重要です。 Blend 2012のレイアウトレイアウト。スタジオのバージョン13でプロジェクトを開くと、プロジェクトは強制的に新しいバージョンに変換され、古いバージョンのアプリケーションを公開する方法はありません。
ゲームには3つの画面があります:開始(レベル間の画面でもあります)、レベル画面、終了画面。 このアプリケーションでは、数独とは異なり、プレーヤーのレーティング(ポイント数)が追加されます。 RatinはAPIとして実装されます(深刻な保護はありません)。 オフィスで競争したいことに加えて、私は世界で誰がより強いかを知りたいです。 カメラが決定することは明らかですが、それなしではもっと面白いです。 本当に!
非同期
Windows Phone 7には、非同期待機のネイティブサポートがありません。 開発を簡素化するコントロールもありません。 nugetの使用済みパッケージのリストを以下に示します。
パッケージリスト
<packages> <package id="Coding4Fun.Toolkit.Controls" version="2.0.7" targetFramework="wp71" /> <package id="GoogleAnalyticsSDK" version="1.2.01" targetFramework="wp71" /> <package id="Microsoft.Bcl" version="1.1.7" targetFramework="wp71" /> <package id="Microsoft.Bcl.Async" version="1.0.16" targetFramework="wp71" /> <package id="Microsoft.Bcl.Build" version="1.0.14" targetFramework="wp71" /> <package id="Microsoft.Net.Http" version="2.1.10" targetFramework="wp71" /> <package id="Newtonsoft.Json" version="5.0.7" targetFramework="wp71" /> <package id="WPtoolkit" version="4.2013.08.16" targetFramework="wp71" /> </packages>
APIとやり取りするために、プロジェクト間をさまよう汎用クラス(httpclient)が開発されました。 クラスコードの例を以下に示します。
HTTPクライアント(非同期待ち)
using (HttpClientHandler handler = new HttpClientHandler()) { using (HttpClient httpClient = new HttpClient(handler)) { using (HttpRequestMessage message = new HttpRequestMessage()) { message.RequestUri = new Uri(url); message.Method = postData == null ? HttpMethod.Get : HttpMethod.Post; if (postData != null) { message.Content = new StringContent(JsonConvert.SerializeObject(postData)); message.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json; charset=utf-8"); } HttpResponseMessage response = await httpClient.SendAsync(message).ConfigureAwait(false); string data = await response.Content.ReadAsStringAsync(); return data; } } }
描画ポイントは
Canvas
オブジェクトで発生します。 各ドットはスタイル付きの
Button
です。 ドットと色の生成は完全にランダムです(同じ色の4〜5個のドットが非常に近くなることがあります。相互の相対位置でナビゲートする必要があります。生成コードを以下に示します。他のポイントとの交差点がない場合(またはサイクルが終了し、ランダムな場所にある場合)
ポイント生成
DotInfo dot = new DotInfo(); dot.Color = Colors[Rand.Next(Colors.Count)]; int testX = 0, testY = 0; bool testOk = true; for (int i = 0; i < 10000; i++) { testX = Rand.Next(Width - ButtonSize); testY = Rand.Next(Heigth - ButtonSize); testOk = true; foreach (DotInfo dotInfo in _dots) { Rectangle intersect = Rectangle.Intersect(new Rectangle(dotInfo.X, dotInfo.Y, ButtonSize, ButtonSize), new Rectangle(testX, testY, ButtonSize, ButtonSize)); if (intersect != Rectangle.Empty) testOk = false; } if (testOk) { dot.X = testX; dot.Y = testY; break; } } if (!testOk) { dot.X = Rand.Next(Width - ButtonSize); dot.Y = Rand.Next(Heigth - ButtonSize); }
プレーヤー名は、パブリッシャーCoding4Funからコントロールによって要求されます。 ちなみに、非常に興味深いコントロールは、見ることをお勧めします。 ( Coding4Funツールキット )
入力ダイアログ
InputPrompt input = new InputPrompt(); input.Completed += UserNameInputOK; input.Title = " "; input.Value = UserSettings.Value.UserName; if (string.IsNullOrEmpty(input.Value)) input.Value = " " + randName.Next(Int32.MaxValue / 2); input.Show();
ユーザー設定および保存されたデータとの対話は、Nokiaの推奨事項「IsolatedStorageSettingsの紹介とベストプラクティス」に従って実装されます。 ソリューションは興味深く、非常に便利でした。 http://developer.nokia.com/community/wiki/Introduction_and_best_practices_for_IsolatedStorageSettings
更新されたストアに公開する
ビルド会議のほぼ直後に、アプリケーションストアが更新されました(クライアント側と開発者の両方)
(アプリケーション自体の説明を変更しないように)新しいバージョンの変更に関する項目が追加され、混乱しません。
Windows Phoneアプリケーションのアプリケーション名の予約を追加しました(Windowsストアの付録に)
両方のプラットフォームで同じ名前を使用するアプリケーションにはアイコンがあります:
合計で、このアプリケーションと小さなサーバー側の作成には20時間かかりました。 ストアでのアプリケーションの公開が、スペースが速くなったことに注意してください(わずか30分)。 async-awaitをWindows Phone 7.5アプリケーションに統合すると、追加のエラーが発生しました。 奇妙なFileNotFoundエラーが発生しました。 Microsoft BCLライブラリの最近の更新は解決されたと思います。
PS私の記録は24ポイントであり、あなたは? (名前にHabrを追加して、Habrでより良い記憶を持っている人を見つけることができます)
ストアでのコメント、提案、良い評価に喜んでいます。