アプリ開発メモ(途中経過)
最近あまりにも増税やら値上げで不安になったんで、副業がてらアプリ開発でもしてみようかと
とりあえず練習がてらアプローチ残す
現状詰んでるから解消次第追記
1.とりあえずサンプル1つ作る
現場の開発はしているがアプリ1からは作ったことがないのでひとまず練習用に簡単なアプリから
パズル系を暇つぶしによくしているので、どうにか自動回答でもアプリ側で出来んものかと。たしか探せば他所にもあるけど自己満足だし、公開用で作ってないので気にしない
開発は現場でC#使ってるのとjavaあんまり使ってないので、Xamarinを使用
2.設計
前提として、初期配置の数次第では一意にならない。その辺まで対応すると面倒なので、人力で可能な範囲での対応とする。
とりあえず思いつきの設計で、例外対応を後で追加してくイメージ
図のように方眼紙がベースなので、これの座標を行列として扱う。data[9,9]といった形で。
あとは埋めるロジックをいくらかモジュール化して、繰り返して呼ぶだけ。全部埋まるか、無限ループ防止のために繰り返し1回で1マスも埋まらない場合は抜けるようにする
2-0.UIと操作を決める
基本的に何の操作をしたらどうなる、というのが設計なので、操作して、最終的にこうなるというイメージをまとめる作業
起動→図のような画面が表示される
操作としては
①任意のセルを選択可能で、右のボタンで数値を埋める
②削除ボタンで選択中のセルを消す
③自動計算で勝手に埋まる
の3つのみ。
あとは好みでメッセージ出すとかその程度
2-1.ロジック1 一意な数値を埋める
文字通り、こここれしか入らないというのを埋めていく
図のように、緑部分は1以外入らない状態となる。
これを各行、各列の縦横9ずつ繰り返す
楽なので共通処理モジュール化する
図のように、3*3の正方形部分も同様。右のように他の選択肢がない場合と、下のように他の1のおかげで一意化するケースの2つがある。
似ているが別物のロジックにしておく
2-2.2択を埋める
図のように、どちらかが分からないが2つのどちらかが入る、といった状況がよく発生する。
仮の数値として埋められる設計にする(数値ではなく文字列で扱い、カンマ区切りで取れるようにするなど?いっそリストをセルにあてがってもいい。)
これができると、下の正方形の空きが3以外に入らなくなるので埋まる。
2-3.数字単位で埋める
図のように、ろくに埋まってない状態でも、他に3を埋める場所がなくなる場合がある
図のように、他の数字が関係して埋まる場合もある
両方パターン対応するとなると、
任意の数値を対象→3*3のうち埋められる場所が1つしかない→ここ
って感じ
ロジック1と重複する気がするが試してから考える
あとは上記ロジックで理詰めで溶けない状況になる場合、3*3の範囲で1~9が入る候補を計算して、たまに1つの数値しか入らない場所ができるので埋まる。とかもあるので追加
これで解けない分は発見次第例外対応すりゃいい
3.実装
とりあえず環境構築から
Visual Studioのインストールと、Xamarinとか書いてあるAndroid開発用のオプションを選ぶ
その後、プロジェクトの作成でAndroidアプリを選ぶ
すっごく雑に解説すると、プログラムも何したらどうなる、というだけのまとまりなので、そこを埋めてけばいい
たとえば、起動したらこれが動く、このボタン押したらこれが動く、といったアクションを検知して任意の挙動をさせられる。
3-1.まず画面作成
業務でwpfでちょこちょこ画面作成してるし大丈夫やろって考えてたものの、グリッド的なのがなく画面作成どうしたもんかってとこで詰んでるから、進んだら追記
c#使えるやつ探して見つけたから選んだけど、xamarinってあんまこういうの向いてないんかな