久しぶりの更新2022/01/08 – 近況

有休消化中

ようやく退職が認められて、2月まで有休消化中です

のんびりとやりたい事をやっているおかげか、だいぶメンタル的にも安定してきました。

どうしてもやりたい事があると言って辞めたものの、本命のAIには中々手がつかない。

ずっと夢にしてきたものは、夢という位置に居座ろうとするんでしょうね。

夢を失ってでも夢に挑戦したいか、というジレンマ

とりあえずプログラミング三昧をしています。

プログラミング三昧

Androidアプリを作れるようになりたいと、Android Studioをインストールして勉強中です。

Androidアプリ開発の流れは、ボタンとかリストのようなオブジェクトを設置して、そのイベントハンドラを書くといった感じ。自由自在位に描画をしたければcanvasを使う、と、どの開発環境も似たような感じです。

kotlinはJavaを簡単にしたような言語で、Androidの公式開発言語だそうです。

when 複数戻り値など新しい仕様が取り入れられていたり、関数定義がfunなどコーディング量が少なくて済むような工夫がされています。(最初見たときは何のファンなんだろうと思いました)

Android Studioのエラーチェックがとにかく凄くて、コーディング中に事細かく指摘してきます。

変数名にアンダースコアを使うな
変数名の1文字目を大文字にするな
その変数privateで良いよね?
そこはifじゃなくてwhenを使おうよ
valとvarの違い分かってる?
その綴り辺じゃない?

小姑か

使っていて、不満な点が1つありました。
参照渡しと値渡しの明示ができないため、オブジェクトが必ず参照コピーされてしまうという点。

C++のvectorのようなテンプレートクラスを作ろうとしたら、値が参照コピーされてしまうため、どうしても中身をコピーできず断念しました。
データを複製する場合は、要素をdata classにしてcopyメソッドを使用すれば良いのですがテンプレートの場合は型が定まっていないため.copyメソッドを呼び出せません。

これだけで10時間は取られた。(そして諦めた)

入門アプリ制作

新しい言語をやるときは先ずテトリス、だったのですが、ちょうど作ってみたいアプリがありました。

題目は方眼紙マッピングアプリ。

今Steamでウィザードリィ外伝というゲームが発売されて、人気が出てきています。

ウィザードリィは古典的な3DダンジョンRPGで、難度がとても高いのが特徴です。
地図が表示されず、あちこちに罠が仕掛けられていて、プレイヤーが手探りでダンジョンを探索するといったゲームスタイルです。
シンプルだけど、成長・リスク・報酬・乗り越えたときの達成感とRPGの楽しさが詰め込まれています。

プレイヤーは未知のダンジョンを方眼紙に書き込んで攻略します。

その補助ツールをAndroidで作ってみようと考えました。

制作1週間

1月2日にAndroid Studioを導入して朝から晩までプログラミング、現在1月8日。(正月どこ行った)

ようやく形になってきました。

canvasを使ってガリガリと描画処理を書き続けました。

ピンチイン・ピンチアウトによるスケール変更
ファイル入出力(新規作成・保存・読み込み・削除)
基本的な編集機能(元に戻す・やり直す・コピー・ペースト・領域シフト)
モード変更(キャラ移動視点・上向き固定・範囲編集)
描画(壁・ドア・一方通行)
負荷軽減(描画領域の計算・編集した部分だけUndoリストに加える等)
入力(アイコンパッドクラスの作成)

難しかったのが壁の処理、一方通行という仕組みがあるため、壁はこちら側と相手側の2枚で構成されるという形になります。

壁を設置したときに、相手側の壁も設置する。
範囲コピーしたときに、相手の向かい側の壁だけをコピーするといった特殊な処理が必要になります。

だいぶ脳みそをこねくり回しました

あとは領域回転処理と床の着色・アイコン設置を実装すれば完成かな。

壁を通り抜けられなくする探検モードとかもあると面白そうですね。


1000×1000のマップを作ってもカクつかず良い感じです。

使用中の動画

※アプリのアイコンにicons8.comのアイコンを使用しています。

なかなか良い出来じゃないでしょうか

これから

しばらくは、退職関係でごちゃごちゃしそうです。

挨拶まわりだの、役所の手続きだの。

目標に取り組むのは、全てを精算してからですね。

あとはお金の面。

有休消化中だから今のところ収支はプラスですが、それが無くなったらジェットコースター。

数年分の貯金はあるにせよ、のんびりはしていられない。

全力で夢に当たって砕けろですね。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です