わすれっぽいきみえ

みらいのじぶんにやさしくしてやる

androidでシューティングゲームの基本実装を描いてみた

急に思い立ってandroidで機体と玉を飛ばすアニメーションを描いてみていた

なぜかandroidcanvasシューティングゲームってどうやって作るんだろうと急に思い立って、試しに機体と玉を飛ばす実装を進めていた。androidは自分が大学生のときに一回(当時はまだ2系)と今の会社の先輩が講義をしてくれた2回があるが、今まで結局一度もストアに出したことはない。

2回目も一昨年の冬だったので、だいぶ忘れていた。今回、どんなふうに進めていたか手順を残す。

とりあえずアプリを立ち上げる

developer.android.com

まずAndroid Studioを手に入れないことにはどうしようもないが、手に入れるためのリンクもここに記載されてるのでとりあえずここから。
次のレッスンに進むと実機で立ち上げたりエミュレータで立ち上げる方法とかが書いてあるから一通り触ってみた。
昔はKotlinのサンプルがなかったけど、いつの間にかできてた。コードの雰囲気はここで知れる。

KotlinとJavaの違いを知る

qiita.com

Javaで開発はしたことがあったので、雰囲気でKotlinも触ってみるかと思ったら案外詰まった。なのでKotlinとJavaの違いをざっくり知るために検索したら、このページがヒットした。2回目の講義のときも「基本はJavaだからJavaでちゃんと仕組みを理解したほうがいいんじゃないか」と言われていたんだが、今回はKotlinで初めから書くことにした。

canvasで絵を描いてみる

developer.android.com

ここにあるサンプルコードを素直に実装した。楕円が表示される。矩形の表示もちょっとの変更で実装できる。

canvasで描いた絵を動かしてみる

akira-watson.com

このサイトの一番最初のサンプルコードを素直に実装した。四角が目標地点に落ちていくだけの実装だが、確かに動く。ただしサンプルコードはJavaなのでKotlinに読み替えた。一番最初はまだクラスが直接MainActivityに依存していて、自分の中で気持ち悪かったのでViewをMainActivityから分けたり、最初の位置が動くように修正したりしてみた。

canvasのタッチしたところに絵を表示させる

techbooster.org

最初はここにあるようにActivityのonTouchEventをoverrideして実装しようとしたが、実際にはViewのタッチイベントを描画させる絵に伝播させたかったので

qiita.com

こっちを参考にView側でタッチイベントを取るようにした。Activityでイベントを取るかViewでイベントを取るかはケースバイケースだと思うが、どちらでもイベント自体の取得は可能だった。

canvasの任意の場所に機体を表示させ、そこから玉が飛ぶように実装する

これまでの応用として機体を「タッチしたところに表示させ」、そこから玉を「描いて」「動かして」みれば良い。とはいえ、2つの絵を描くところは新要素にはなる。これでおおよそやりたいことは達成できる。

f:id:kimikimi714:20190916233907g:plain
シューティングのデモ

サンプル実装のリポジトリを以下に載せる。

github.com

本当はベクター図形ではなくて任意の画像を機体と玉に見立てて実装するところまでやりたかったが、今回は画像の選定が面倒でやめた。玉に加速度が着いちゃってるので、等速直線運動にしたいなとかいろいろ思うところはある。あとgitはrebaseとか面倒でろくにやってない。

気が向いたら、この続きを作ろうと思う。あとちゃんとテスト書きたい。

越後湯沢に行ってきた 最終日

f:id:kimikimi714:20190912123151j:plain

kimikimi714.hatenablog.com

の続き。

朝、会社に行くときより比較的真面目に起きて朝ごはん会場に向かった。夫はてっきりバイキング形式だと思ってたようだが、実際には朝もコース料理を頼んでたらしくて、席に座ってたらいい感じに配膳してもらえた。自分の家だと自分で用意して洗わないといけないから楽チンでいい。あと普段の朝は面倒臭がって抜きがちなので、結構なボリュームの朝ごはんを用意してもらって食べるだけっていうのは本当に良かった。

眠いなーとぼんやり思いながらゆっくりご飯食べたあと、チェックアウトまでにもう一回だけお風呂に入った。朝と夜では全然明るさが違うので、これはこれでいいなと思った。そしてまた貸し切り。

リフレッシュしてチェックアウトの準備をし、フロントで精算しようとしたら「ロープウェイには行かれますか?」と聞かれて「あ、はい」と答えると格安料金になるチケットをその場で書いてくれた。これ、初日が変に晴れててロープウェイから行ってたら高い料金になってたのでラッキーだった。ついでにシャトルバスがロープウェイ口に直接向かってくれるし、昨日の雨のせいかこの日はよく晴れてる割に涼しくてすごく過ごしやすい陽気だった。

ロープウェイに乗ると悪い映画の見すぎでロープが切れる想像をして遊んでた。飛び跳ねて揺らしたいとかあー死ぬなー、ここで終わりかーとか雑に考えてたらすぐに着いたので、着いてからはこのロープどうやってメンテしてるんだろうと考え始めたら夫が「設計したあと実行に移すのがすごいな」と言い出して似たようなこと考えてたんだなと思った。

てっぺんに着くと、若干肌寒いくらいだったが景色見たら忘れた。雲が全くないわけじゃないけど前日行ったら絶対見れなかったろうなーというくらい遠くまでよく見通せた。久しぶりに山に登ったし空気もきれいだった。

植物園とボブスレーが案内されて、全然種類が違うものを並べてるなと思いつつ、いきなりボブスレー行く気がしなかったので植物園に行くことにした。そしたら山の中腹で愛を叫ぶ女子大生らしき子達がいて「通じない愛もあるんだよ」って夫がつぶやいたのが残酷すぎて笑った。

植物園もここ最近見ないトンボや蝶がたくさん飛んでてきれいだった。聞こえるのは人が話す声と虫の音くらいで、基本的には静か。東京に戻って早々オープンカーで音楽ダダ漏れにしてる人たち見ると流石に品がないなと思ったけど、そういうのも静かなところにいないと案外忘れるんだよなと思った。

植物園のすぐそばにボブスレーのゴールとリフトがあって、リフトでボブスレーのスタート地点まで上がった。結構こわそうだったので私たちはスルーしたけど、乗ってる大人は数人はいた。そのうちの一人のおじさんがものすごく体丸めて全然ブレーキかけずに滑ってて、完全に少年だった。

帰りのロープウェイを待ってるとさっきまで下に向かって全速力でボブスレーしてたおじさんが全速力でロープウェイに乗るために走ってきてたらしくて、満喫してていいなぁと思ってみてた。あと小学生が遠足に来てたみたいで、はしゃいだ小学生が帰りのチケットを崖の下に落として、先生が超慌ててたのが面白かった。

帰りは飲んで帰った。

雪男はあんまり好みじゃなかった。

これはおいしかった。

これもおいしい。これを二本買った。

雪男飲んで、私は淡麗があまり好きじゃないのか?と思ったけど、これはおいしかった。

これはあんまり味覚えてない。

越後湯沢に行ってきた 初日

f:id:kimikimi714:20190912201017j:plain

私が勤める会社はITS健保に入ってるが使ったことがあるのが一新しかない話を夫としてたら、「じゃあどっか保養所行くかー」と先月か先々月に話して今月になってようやく行ってきた。オフシーズンなのでめちゃくちゃ人が少なかったが、ちょうど涼しくなってきたところでとても快適だった。夏はあんまり外出てると熱中症で死んでしまうので旅行に行く気にもなれなかった。近所ですら無理。

行きしなは昼過ぎに湯沢に付けばいいと話したので、駅弁買って新幹線の中で食べた。

www.yonezawaekiben.jp

これを食べたんだが、おいしいんだけど完全に胃もたれして、夕飯はいるのかが心配になった。そして食べたら急激に睡魔。そこから全然起きなくて夫に起こされ気がつくと山の中だった。あれー?おかしいな?さっきまでコンクリートジャングルだったぞ?

初日は大雨だったので、ホテルまで行くシャトルバスが来る間、とりあえず駅構内のお土産屋さんをぶらついた。そしたら

www.ponshukan.com

これが目に入った。行きしなはとりあえずホテルにもう行きたかったので、帰りに行くしかないなと話して覚えておくことにした。

ホテル着いて雨はまだまだ降ってて遠出は無理だったので、ホテルの中庭をなんとなくぶらつくことにした。鍵をフロントに預けようとしたら「中庭には鯉がいるので、よかったら鯉に餌をあげてきてはどうか」と言われた。普通の乾燥した団子みたいな鯉の餌が紙の袋に個装されてるものがおいてあったので、じゃああげてこようと言って1袋持っていった。

中庭はこじんまりしてた。車の走る音はとても少なくて、虫の音の方が聞こえてきた。アマガエルも随分久しぶりに見た気がする。自分の記憶よりずっと小さかった。

ちょっと歩くと鯉のいる小さな池に着いた。自分が思ってるよりずっと小さかったが水が澄んでて『池の水全部抜く』でやってる池がいかに汚いかと思った。鯉は面白くて足音なのか水の中から見える影なのか、私たちが近づくとすぐに向こうも近づいてきた。どう見ても餌目的だ。餌をちょっと池に入れたらブワッと集まって口を大きく広げてたが、なんか東京で見る鯉の餌やりと違って妙にお上品に見えた。あんまりばちゃばちゃしないし池が濁らなかった。餌を2回くらいあげたら雨脚が激しくなってきたので最後の方は餌を握りしめて半ば投げ捨てるように池に入れたが、鯉は落ち着いて全部食べてた気がする。慌てて部屋に戻った。

新幹線の中でも寝たがホテルに着いてもまだ寝れた。びっくりするほど寝てたので、これ観光どころではないのでは…何しに来たんだ私…と思い始めたが、まぁそんなこと言ってても仕方ないので夕食前に温泉に入ることにした。

お家のお風呂はちょっと狭いので足を伸ばして入れない。面倒臭がってシャワーで済ませてばかりだったが、オフシーズンで誰もいない広いお風呂を一人で貸し切り、泳げるレベルのところに大の字で入るのはなかなかよかった。あとストレッチが捗る。シャワーじゃやっぱ体も温まり切らないんだなー筋がいい感じにほぐれる気がするとぼんやり思いながら、ゆっくりお風呂に入った。

お風呂上がって割とすぐに夕食だった。これが胃もたれ忘れておいしくいただけてよかった。特に殻ごと食べられるカニのせいろ蒸しとご飯。やっぱりご飯はさすが新潟だけあっておいしい。おかわりもできたが最初に出てきた釜が初めから大きかったので、釜のご飯のおかわりまではさすがにしなかった。お酒も飲んだけど、ご飯おいしい方が勝ったのであんまり覚えてない。

部屋に戻って初日はゴロゴロして終わり。二日目はロープウェイに行くことにした。

ご飯の写真をことごとく取り忘れた