見出し画像

Pythonで推し鑑賞スマホアプリを作る3 恋愛シミュレーションゲームみたいになってきた

前回、時計を表示して、時計アプリみたいになりました。


背景を変えてみる

時計をドンと表示するのも実用性があっていいけれど、なんか殺風景。
背景が何もないのがダメなんかなぁ、と思って素材を探すとよさそうなのを見つけました。

色的にも冥鳴ひまりに合いそう。
ということで、さっそくこれを背景にして作り直してみる。

背景をかえるとぐっと印象変わりました!

恋愛シミュレーションみたいになってきた(笑)

推しを真ん中に配置したので、時計は小さく左下に。
背景画像が、日中や夕方、夜などあるので、時間に応じて変わるように作ってみる。

睡眠モード

夜(23時〜翌朝5時)は、寝るようにする。
ショートスリーパーだな。

寝ているときに、zzz、みたいな表現出したいので、zを定期的に出して、ふわ〜っと上に上がって消えるアニメーションをつけてみた。

時間が17時だけどデバッグなので強制的に夜にしてます。

スマホだと、もうちょいひまりの左上でzが表示されます。
ついでに、冥鳴ひまりの表情は、小さく開けた口と閉じた口を3秒くらいで繰り返して、すやすや感を出すようにしています。

実装

こんなクラスを作って、親ウィジェットから、
Suyaa.float_zzz(self)
でコールしてます。

class Suyaa(BoxLayout):

def float_zzz(obj):
    # ラベル作成
    label_z = Label(
            text="z"
            , size_hint=(0.3, 0.3)
            , font_size=dp(30)
            , color=(1, 1, 1, 1)
            , pos=(dp(130), dp(230))
            , opacity = 1
            )

    # ウィジェットに追加
    obj.add_widget(label_z)
    # アニメーション設定
    anim = Animation(x=label_z.x - dp(20), y=label_z.y + dp(50), opacity=0, duration=2)
    # 終了後にウィジェット削除
    anim.bind(on_complete=lambda anim, widget: obj.remove_widget(widget))
    # アニメーション開始
    anim.start(label_z)
    
    return

日本語フォント

テキストベースでいいので、やっぱりセリフがほしいなぁ、と思ったので、セリフ欄を作る。
すると、時計とかぶるので、時計は排除。
正確には、寝ている間だけ時計表示。
起きている間は、ひまりに時間をしゃべってもらうことにします。

kivyは、デフォルトで日本語対応していないので、日本語フォントを用意してあげないといけないです。

ここからフォントをダウンロード。
解凍するといろいろ入っています。
今回は、NotoSansJP-Regular.ttf を使いました。
ttfをプロジェクトの.pyがある階層より下に配置。

フォントを配置する。

kvファイルでフォントを指定する。

kvファイルでフォントを指定する。

スマホ用に、buildozer.spec のビルド対象拡張子にttfを追加する。
これをしないと、PCではOKでも、スマホで起動した途端落ちてしまう。

ttfを追加する。

これで、このラベルに関しては、日本語表示がOKになります。

今まで避けてきたkivyでの日本語表示。意外と簡単でした。

あとは、しゃべらせる内容を精一杯組んでいくだけです。
ってまぁここが結局力技ですが。
そろそろ完成にしようかな…
と思ったけど、もういっそここからRSSリーダーにしていこうかと思います。
続く…

いいなと思ったら応援しよう!

この記事が参加している募集