#概要
前回:C#でAndroidアプリを作ってみる 3 (画面作成1)
今回は、選択した日付の干支×星座算出部分を作ります。
干支を算出する
干支の求め方を参考に計算します。
MainActivity.csに以下のコードを追加します。
MainActivity.cs
// 十二支
private const string ETO = "申酉戌亥子丑寅卯辰巳午未";
/// <summary>
/// 干支の算出
/// </summary>
/// <param name="year"></param>
/// <returns></returns>
private string GetEto(int year)
{
return ETO[year % 12].ToString();
}
星座を算出する
星占いの星座です。
MainActivity.csに以下のコードを追加します。
MainActivity.cs
using System.Linq;
// 星座
private static Tuple<string, int, int>[] SEIZA = {
Tuple.Create("牡羊座", 321, 419),
Tuple.Create("牡牛座", 420, 520),
Tuple.Create("双子座", 521, 621),
Tuple.Create("蟹座", 622, 722),
Tuple.Create("獅子座", 723, 822),
Tuple.Create("乙女座", 823, 922),
Tuple.Create("天秤座", 923, 1023),
Tuple.Create("蠍座", 1024, 1122),
Tuple.Create("射手座", 1123, 1221),
Tuple.Create("山羊座", 1222, 1231),
Tuple.Create("山羊座", 101, 120),
Tuple.Create("水瓶座",121, 218),
Tuple.Create("魚座", 219, 320)
};
/// <summary>
/// 星座の算出
/// </summary>
/// <param name="month"></param>
/// <param name="day"></param>
/// <returns></returns>
private static string GetSeiza(int month, int day)
{
var target = int.Parse($"{month}{day.ToString("00")}");
var seiza = SEIZA.FirstOrDefault(s => s.Item2 <= target && target <= s.Item3);
return seiza.Item1;
}
計算の都合上、山羊座は2期間に分けています。
干支と星座の算出結果を表示する
日付を選択した後、干支と星座を画面に表示するようにします。
MainActivity.csのDateSelectButton_Clickを以下のように変更します。
MainActivity.cs
/// <summary>
/// SELECT DATEボタン押下時の処理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DateSelectButton_Click(object sender, System.EventArgs e)
{
var frag = DatePickerFragment.NewInstance(delegate (DateTime time)
{
selectedDateLabel.Text = time.ToString("yyyy年MM月dd日")
+ $"あなたは、{GetEto(time.Year)}年 {GetSeiza(time.Month, time.Day)}です。";
});
frag.Show(FragmentManager, DatePickerFragment.TAG);
}
実行してみる
実機でデバッグ実行します。
SELECT DATEボタンをタップして日付を選択し、OKをタップします。
日付の選択、干支と星座の算出結果が表示されました。
まとめ
今回は、選択した日付の干支×星座を算出し、画面に算出結果を表示するところまでを行いました。
次回は、もう少し見栄えを良くしようと思います。
次回分はこちら⇒C#でAndroidアプリを作ってみる 5 (見栄えの調整)