LoginSignup
3
0

More than 5 years have passed since last update.

PowerApps GameDev#1 スコア表示フォントをゲームっぽいものにしてみる

Posted at

PowerAppsゲームとは

本来はビジネスアプリを開発するツールであるPowerAppsをつかって
簡単なゲームをつくろうぜ!というものでございます。
この度、私もPowerApps GameCompetitionというものに参加するにあたり
過去記事にもあります通りゲームを作成しておりました。

PowerApps GameDevとは?

PowerAppsでゲーム作成を行うにあたり、工夫したところ(よりゲームっぽい感じにしてみるなど)を纏めたものです。

本日のゴール

こんな感じなことができるようにする!
ebcaa244-7754-4218-9a99-3c62ab0d4607.gif

事前準備

スコア表示用のPNGファイル

こんな感じのPNGファイルを用意しましょう。(0~9)

0 1 2 3 4 5 6 7 8 9
ScoreFont_0_Black.png ScoreFont_1_Black.png ScoreFont_2_Black.png ScoreFont_3_Black.png ScoreFont_4_Black.png ScoreFont_5_Black.png ScoreFont_6_Black.png ScoreFont_7_Black.png ScoreFont_8_Black.png ScoreFont_9_Black.png

イメージのアップロード

上記のPNGファイルを用意したら、作成しているアプリの
メディア > 画像 とアクセスし、アップロードを行います。
image.png

スコアを格納する変数を用意

とりあえず、Scoreとしときましょう。

実際に作成していきましょう

使うオブジェクトは・・・

既にお気づきだとは思いますが、画像オブジェクトを使用します。
image.png

1桁目

Imageプロパティを設定します。

Score_Seg_1(Image)
Switch(Value(Mid(Text(score),Len(Text(score)),1)),
    0,ScoreFont_0_Black,
    1,ScoreFont_1_Black,
    2,ScoreFont_2_Black,
    3,ScoreFont_3_Black,
    4,ScoreFont_4_Black,
    5,ScoreFont_5_Black,
    6,ScoreFont_6_Black,
    7,ScoreFont_7_Black,
    8,ScoreFont_8_Black,
    9,ScoreFont_9_Black
)

解説

とりあえず、Scoreの1桁目の数字によって
イメージを切り替えればいいので、Switch関数を使用しています。
問題は、1桁目が0~9のどれかをどうやって出すかというところですね。

1桁目の出し方

スコアの桁数が仮に最大8桁だった場合は
スコアの文字列としての長さは1~8で変動します。
(0~99999999)
なので、現在の文字列の長さの末尾を開始地点とし
その1文字目を取得すれば1桁目が取得できます。
たとえば、現在のスコアが478953点だった場合は
文字列の長さとしては6。
MID関数で1桁目をとる場合は

MID(TEXT(Score),Len(Text(Score)),1)

とすれば、戻りは3が返ってきます。
あとは、その値を再度数値型に変えて、Switch関数に渡せば、おのずと3のイメージが
表示されることになります。

2桁目以降

こちらもImageプロパティを使用しますが
1桁目とちょっと異なります。

Score_Seg_2(Image)
Switch(Value(Mid(Text(score),Len(Text(score))-1,1)),
    0,ScoreFont_0_Black,
    1,ScoreFont_1_Black,
    2,ScoreFont_2_Black,
    3,ScoreFont_3_Black,
    4,ScoreFont_4_Black,
    5,ScoreFont_5_Black,
    6,ScoreFont_6_Black,
    7,ScoreFont_7_Black,
    8,ScoreFont_8_Black,
    9,ScoreFont_9_Black
)

また、スコア表示にて0埋めしたくない時は、Visibleプロパティも
使用することになります。

Score_Seg_2(Visible)
If(Len(Text(score))<2,false,true)

解説

基本的に、1桁目と同じ考えです。

2桁目の出し方

現在の文字列の長さの末尾から 1文字引いた 場所を開始地点とし
その1文字目を取得すれば2桁目が取得できます。
たとえば、現在のスコアが478953点だった場合は
文字列の長さとしては6。
MID関数で2桁目をとる場合は

MID(TEXT(Score),Len(Text(Score))-1,1)

とすれば、戻りは5が返ってきます。

3桁目の出し方

現在の文字列の長さの末尾から 2文字引いた 場所を開始地点とし
その1文字目を取得すれば3桁目が取得できます。
たとえば、現在のスコアが478953点だった場合は
文字列の長さとしては6。
MID関数で3桁目をとる場合は

MID(TEXT(Score),Len(Text(Score))-2,1)

とすれば、戻りは9が返ってきます。

最後に

皆さんも、お好きなフォントのイメージを用意して
素敵なスコア表示をさせてみましょう!
見た目は結構大事ですよ♪

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0