新型コロナウイルス感染症緊急経済対策の特別定額給付金申請(札幌市の場合)

札幌市のHPが更新され、5月18日から申請の送付を行うとのことです。

https://www.city.sapporo.jp/2019n-cov/hokenfukushi/teigakukyuhu.html

オンライン申請は5月18日頃に受け付けが開始出来る見込み、とのことです。

その前に。

上にいろいろと注意事項が書いてありますが、

オンライン申請するにはいろいろと条件があるようで、

ざっくり言うと、

e-Taxできる状態ならオンラインで受け付けるよ

ということです。

上で書いてる、電子証明書とは、e-Taxで使用するもので、マイナンバーカード発行と同時に申請した(様な気がする)ものです。

これが有効期限内である必要があります。

有効期限が切れていた場合は、区役所に行って更新する必要があります。

手続き自体は窓口で暗証番号を入力して当日完了しますが、混雑が予想されるため、大人しく郵送にした方が良いと思います。

あ、有効期限が切れた場合は、更新のお手紙が届くと思うよ。

暗証番号忘れた人は論外。

PCで申請する場合はカードリーダーが必要になります。

カードリーダーが無い場合は、NFCに対応したスマートフォン(iPhone等)があればスマホで申請できます。

最近のスマホだったら大抵対応しているよ。

ここまで読んで、理解できない人は、郵送で手続きしてください。

【バンドリ】【ガルパ】真の効率曲

たぶん、多くのバンドリーマーは、ガルパで「効率曲」というと、「天下トーイツAtoZ」が連想されると思う。

いや、間違ってはいないのだが。

答えはこちらのリンク先にありまして、

https://appmedia.jp/bang_dream/730842

このページの真ん中当たりに、効率曲ランキングみたいなものがリストで掲載されています。

このページ、ブックマークに入れておくと便利よ。

新曲が追加されると、随時更新されるので。

効率曲というのは、まぁ、一言で言うと、1回のライブで高得点が狙える曲のこと。

1回のライブで高得点が出る、ということは、周回すれば、イベントポイントをたくさん稼げる、と言うことです。

しかも、高得点が出るということは、ハイスコアレーティングの更新にも役に立ちます。

ただ、ライブ中に死亡してしまうのは論外として、ミスが多くなってしまうと効率曲を周回する意味が無くなってしまいます。

協力ライブで、自分がクリアできても、他プレイヤーが死んでしまっては意味が無いので。

なので、比較的簡単な、楽曲レベルが低い曲の方が良い。

効率曲のリストを見てみると、上位の方に高難易度の曲が集中していると思います。

なので、オイラは、これらを考慮した上で、簡単かつハイスコアが狙える真の効率曲の調べてみました。

実際にプレイしてハイスコアレーティング算出しています。

Poppin’Party

  • Jumpin'(レベル26)
  • B.O.F(レベル25)
  • Home Street(レベル25)

Afterglow

  • アスノヨゾラ哨戒班(レベル26)
  • 瞬間センチメンタル(レベル26)
  • 午後の待ち合わせ(レベル26)

PastelPalettes

  • 天下トーイツAtoZ☆(SP レベル25)
  • ふわふわ時間(レベル25)
  • 春擬き(レベル25)

Roselia

  • Hacking to the Gate(レベル25)
  • シャルル(SP レベル25)
  • 残酷な天使のテーゼ(レベル25)

ハロー、ハッピーワールド!

  • 太陽曰く燃えよカオス(レベル26)
  • コレカラ(レベル25)
  • ゴーカ!ごーかい!?ファントムシーフ!(SP レベル25)

Morfonica

  • chAngE(レベル26)
  • ブルームブルーム(レベル26)
  • 秒針を噛む(レベル26)

RAISE A SUILEN

  • ヒトリノ夜(レベル26)
  • EXPOSE ‘Burn out!!!'(レベル26)
  • UNSTOPPABLE(レベル26)

その他

  • す、好きなんかじゃない!(レベル25)
  • 大盛り一丁!ガルパ☆ピコ(レベル26)
  • クインティブル☆すまいる(レベル25)

このあたりなら、ハイレベルプレイヤーでなくてもハイスコアが狙えますし、効率よく周回できると思います。

ただし、協力ライブで同じ曲ばかり選んでいると、他プレイヤーを苛つかせて切断する可能性があります。

みんなAtoZばかり選んで「またか・・・」って思ったことありますよね??

なので、そこら辺はうまくバランスを取って。

【C#】【ピクロス】【ALTSEED】セーブ、ロード機能を追加

前回までの状況はこちら。

最新ソースはこちら。(gitHub)

https://github.com/takishita2nd/Picross

前回、汚いUIをどうしようか、ということを書きましたが、

見た目は後回し、という方針で行こうと思います。

さっさとUIを作って、解析ロジックに取りかかりたい、というのが本音です。

今回は、デバッグで必要になるであろう、セーブ、ロード機能を作成していきます。

デバッグの度に数字を入力するの、めんどくさいんで。

まずは、ボタン配置。

            // 解析ボタン
            var anlyzeButton = new Button(10, 50, "解析");
            anlyzeButton.Show();
            asd.Engine.AddObject2D(anlyzeButton.getBackTexture());
            asd.Engine.AddObject2D(anlyzeButton.getTextObject());
            buttons.Add(anlyzeButton);
            anlyzeButton.SetAction(() =>
            {
            });

            // セーブボタン
            var saveButton = new Button(10, 90, "セーブ");
            saveButton.Show();
            asd.Engine.AddObject2D(saveButton.getBackTexture());
            asd.Engine.AddObject2D(saveButton.getTextObject());
            buttons.Add(saveButton);
            saveButton.SetAction(() =>
            {
                FileAccess.Save(rowNumberSquare, colNumberSquare);
            });

            // ロードボタン
            var loadButton = new Button(10, 130, "ロード");
            loadButton.Show();
            asd.Engine.AddObject2D(loadButton.getBackTexture());
            asd.Engine.AddObject2D(loadButton.getTextObject());
            buttons.Add(loadButton);
            loadButton.SetAction(() =>
            {
                FileAccess.Load(ref rowNumberSquare, ref colNumberSquare);
            });

入力データを保存、読み取りするコードを書いていきます。

[JsonObject("dataModel")]
class Data
{
    [JsonProperty("rowdata")]
    public List<List<int>> RowData { get; set; }
    [JsonProperty("coldata")]
    public List<List<int>> ColData { get; set; }
}
class FileAccess
{
    private const string _filename = "save.dat";

    public static void Save(List<List<NumberSquare>> row, List<List<NumberSquare>> col)
    {
        if (File.Exists(_filename) == true)
        {
            File.Delete(_filename);
        }
        Data data = new Data();
        data.RowData = new List<List<int>>();
        foreach(var r in row)
        {
            List<int> list = new List<int>();
            foreach(var s in r)
            {
                if(s.GetValue() != 0)
                {
                    list.Add(s.GetValue());
                }
            }
            data.RowData.Add(list);
        }
        data.ColData = new List<List<int>>();
        foreach (var c in col)
        {
            List<int> list = new List<int>();
            foreach (var s in c)
            {
                if (s.GetValue() != 0)
                {
                    list.Add(s.GetValue());
                }
            }
            data.ColData.Add(list);
        }
        var str = JsonConvert.SerializeObject(data);
        using (var stream = new StreamWriter(_filename, true))
        {
            stream.Write(str);
        }
    }

    public static void Load(ref List<List<NumberSquare>> rowList, ref List<List<NumberSquare>> colList)
    {
        foreach(var r in rowList)
        {
            foreach(var s in r)
            {
                asd.Engine.RemoveObject2D(s.getBackTexture());
                asd.Engine.RemoveObject2D(s.getTextObject());
            }
        }
        foreach (var c in colList)
        {
            foreach (var s in c)
            {
                asd.Engine.RemoveObject2D(s.getBackTexture());
                asd.Engine.RemoveObject2D(s.getTextObject());
            }
        }

        string str = string.Empty;
        using (var stream = new StreamReader(_filename, true))
        {
            str = stream.ReadToEnd();
        }
        var data = JsonConvert.DeserializeObject<Data>(str);
        rowList = new List<List<NumberSquare>>();
        {
            int row = 0;
            foreach (var r in data.RowData)
            {
                List<NumberSquare> list = new List<NumberSquare>();
                int col = -1;
                foreach (var v in r)
                {
                    var s = new NumberSquare(row, col);
                    s.SetValue(v.ToString());
                    asd.Engine.AddObject2D(s.getBackTexture());
                    asd.Engine.AddObject2D(s.getTextObject());
                    list.Add(s);
                    col--;
                }
                {
                    var s = new NumberSquare(row, col);
                    s.SetValue("0");
                    asd.Engine.AddObject2D(s.getBackTexture());
                    asd.Engine.AddObject2D(s.getTextObject());
                    list.Add(s);
                }
                rowList.Add(list);
                row++;
            }
        }
        colList = new List<List<NumberSquare>>();
        {
            int col = 0;
            foreach (var c in data.ColData)
            {
                List<NumberSquare> list = new List<NumberSquare>();
                int row = -1;
                foreach (var v in c)
                {
                    var s = new NumberSquare(row, col);
                    s.SetValue(v.ToString());
                    asd.Engine.AddObject2D(s.getBackTexture());
                    asd.Engine.AddObject2D(s.getTextObject());
                    list.Add(s);
                    row--;
                }
                {
                    var s = new NumberSquare(row, col);
                    s.SetValue("0");
                    asd.Engine.AddObject2D(s.getBackTexture());
                    asd.Engine.AddObject2D(s.getTextObject());
                    list.Add(s);
                }
                colList.Add(list);
                col++;
            }
        }
    }
}

保存処理は、入力したデータをJsonに変換して、保存させます。

ロード処理は、一旦数字入力マスを全て削除し、管理データを作り直します。

C#ってrefを付けないとオブジェクトの参照渡しできないんですね。

まだまだ勉強しなくちゃいけないことが多いなぁ。

まだ問題とか、不具合あるかもしれないけど、それはその都度修正していくきます。

この昨日は完成後に削除する予定なので。

さて、次回からいよいよロジックに着手できるー!